Hey, I looks ok!
There still is one issue with dynamic source creation: the playlist is not properly garbage collected because its server commands stay registered after it is destroyed.. I plan on working on that as soon as possible and I'll post a follow-up to announce when it is fixed here. Romain 2011/3/20 Boris Zhidkov <[email protected]>: > Hi, all! > Here is a last version of the script (only functions I've changed). > Any remarks? > # Split args of the form arg=bar&arg2=bar2 > # into [("arg","bar"),("arg2","bar2")] > # @category String > # @param uri Args to split > def arg.split(args) > if args != "" then > l = string.split(separator="&",args) > def f(x) = > ret = string.split(separator="=",x) > (url.decode(list.nth(ret,0)), > url.decode(list.nth(ret,1))) > end > list.map(f,l) > else > [] > end > end > # Now we write a function to create > # a playlist source and output it. > def create_playlist(uri) = > #uri = "playlist=pl.m3u&shuffle=1&ads=1&mount=m1" > #playlist for commercial jingles > ads = playlist("~/ads.pls") > args = arg.split(uri) > #main playlist source > pl = list.assoc("playlist", args) > pl = if pl == "" then > log("playlist is not set. using default") > "/home/alius/pl.pls" > else > pl > end > #set play mode > s = if args["shuffle"] == "1" then > playlist(reload=300, pl) > else > playlist(mode="normal", reload=300, pl) > end > #The output > m = list.assoc("mount",args) > m = if m == "" then > log("mount is not set. using default") > "default_mount" > else > m > end > #if ads are selected, include them in playback with the proportion 1:4 > s = if args["ads"] == "1" then > random(weights=[1,4], [ads, s]) > else > s > end > output = out(mount="#{m}",s) > log(uri) > #Â Register output is the list of sources > dyn_sources := > list.append( [(uri,output)], > !dyn_sources ) > "Done!" > end > On Sat, Mar 19, 2011 at 9:37 PM, Boris Zhidkov <[email protected]> > wrote: >> >> Hi! >> >> I've solved an issue I'd wrote below. >> >> def create_playlist(uri) = >> #uri = "?playlist=pl.m3u&mount=m1"; >> args = url.split(uri) >> #The playlist source >> pl = list.assoc("playlist", snd(args)) >> if (pl=="") then >> pl = "~/pl.pls" >> end >> s = playlist(pl) >> # The output >> m = list.assoc("mount",snd(args)) >> if(m=="") then >> m="defaultmount" >> end >> log(m) >> output = out(mount="#{m}",s) >> >> Now I'm working with correct playlist removing. >> >> Thanks, >> Boris >> >> On 3/19/11, Boris Zhidkov <[email protected]> wrote: >> > Hi, Romain. >> > >> > After a week of rest, I returned to work with liquidsoap. >> > I've got a trouble with url.split. >> > AFAIU, it returns list, but when I try to use it like this: >> > def create_playlist(uri) = >> > args = url.split(uri) >> > pl = args["playlist"] >> > s = playlist(pl) >> > >> > or like that: >> > args = url.split(uri) >> > #Â The playlist source >> > pl = list.nth(args,0) >> > >> > I get errors. >> > >> > Can you explain how to work with it, please? >> > >> > Thanks, >> > Boris >> > >> > -- >> > ------------------------------------------- >> > WBR, Boris Zhidkov >> > >> >> >> -- >> ------------------------------------------- >> WBR, Boris Zhidkov > > > > -- > ------------------------------------------- > WBR, Boris Zhidkov > ------------------------------------------------------------------------------ Enable your software for Intel(R) Active Management Technology to meet the growing manageability and security demands of your customers. Businesses are taking advantage of Intel(R) vPro (TM) technology - will your software be a part of the solution? Download the Intel(R) Manageability Checker today! http://p.sf.net/sfu/intel-dev2devmar _______________________________________________ Savonet-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/savonet-users
