I am not sure how you are supplying filenames. I do all the queuing in a node/javascript backend. So when SOAP wants to know which file is next, it does an HTTP request and I return the file name and pass along the SQL rowid. That way, when SOAP starts playing it, I have ON-TRACK which picks the rowid from the meta and sends it back to the node backend to update.
In looking at your question closer though, it looks like you have a different problem. Assuming line 40 is the CMD= line, 'filename' is local to the process_metadata function, which means it isn't defined outside that. You need to (in the main body) filename=ref "*" and then in process_metadata filename := metadata["filename"] Hope this helps. Nick On Sun, Mar 24, 2019 at 8:50 AM Ian Bonham <ian.bon...@gmail.com> wrote: > Thanks Nick, > > Not sure I get what you mean though? > > Ian > > On Sat, 23 Mar 2019 at 22:40, Nicholas Vrtis <nick.vr...@gmail.com> wrote: > >> Don't have the code with me.. but I do something similar. I use the >> annotate: protocol when SOAP asks for the file name, and pass along the SQL >> row ID from the db. That puts it in the meta. >> >> Nick >> >> On Saturday, March 23, 2019, Ian Bonham <ian.bon...@gmail.com> wrote: >> >>> Good afternoon all, >>> >>> I wonder if anyone could offer some advice please? >>> I'm building a recipe for 'Soap and it's working rather well. However I >>> would like to know if there is a way to grab the currently playing file >>> name as it begins? >>> Basically I have a MariaDB with all my tracks in, and I want to use a >>> system call from my .liq script to push a mysql update via bash to update >>> the database with the "Last Played" datetime. >>> >>> I am trying : >>> *#!/usr/bin/liquidsoap -v* >>> >>> *def process_metadata(metadata)* >>> * file_name = ""* >>> * file_name = metadata["filename"]* >>> *# [("file_name","#{file_name}")]* >>> *end* >>> >>> and then am using : >>> *stream = on_track(process_metadata, stream)* >>> >>> *cmd = "mysql -u suffolksoundadmin -phackme -e \"UPDATE >>> \`Music\`.\`Tracks\` SET \`playcount\` = \`playcount\` +1, \`lastplay\` = >>> NOW() WHERE \`Music\`.\`Tracks\`.\`filename\` = '#{file_name}';\""* >>> >>> *system(cmd)* >>> >>> I just can't get the thing to work though. When I try to call the >>> script, it bombs out with: >>> *At line 40, char 7-198: the variable filename used here has not been* >>> * previously defined.* >>> >>> If anyone could offer some guidance I'd be really grateful. >>> Many Thanks, >>> >>> Ian >>> >>> _______________________________________________ >> Savonet-users mailing list >> Savonet-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/savonet-users >> > > > -- > > > Kindest Regards, > > Ian Bonham > > ian.bon...@gmail.com > > Mobile : +44 (0)7396 103 957 > Skype : ian.bonham > _______________________________________________ > Savonet-users mailing list > Savonet-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/savonet-users >
_______________________________________________ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users