Note that this Wiki is a work in progress, items may not be updated or may disappear entirely as the pages are updated.
Two For Tuesdays (Based on 2fer)
From SpacialAudio
I took the 2fer Pal Script and added a Start and End time.
Fairly Simple to do if you are already running the 2fer script.
PAL.Loop := True; var mytime : DateTime = now; var I : Integer; var start_time, end_time : DateTime; start_time := date + EncodeTime(19,58,00,0); end_time := date + EncodeTime(19,58,30,0);
// Only Run on Tuesday Nights
if DayOfWeek(Now) = Tuesday then begin
// Declare variables
var theArtistInQueue, theCountSongs, theSongChooser : TDataSet;
if( mytime >= start_time) and (mytime <= end_time) Then
begin
WriteLn('Two for Tuesdays!');
WriteLn();
// Choose a random song while enforcing the rules and put in queue bottom
CAT['Songs'].QueueBottom(smRandom,EnforceRules);
// Let's find out the artist and songid we just put in the queue
theArtistInQueue := Query('select title, artist, songID, queuelist.id as queueID ' +
'from songlist, queuelist ' +
'where songlist.id = queuelist.songID '+
'order by queueID desc limit 1',[],True);
WriteLn('Added: ' + QuotedStr(theArtistInQueue['artist']));
WriteLn(' ' + QuotedStr(theArtistInQueue['title']));
WriteLn();
// Let's get a count of the remaining songs by this artist
theCountSongs := Query('select count(*) as cnt' +
' from songlist' +
' where id <> ' + IntToStr(theArtistInQueue['songID']) +
' and songtype = S' +
' and artist = ' + QuotedStr(theArtistInQueue['artist']),[],True);
WriteLn('There are ' + IntToStr(theCountSongs['cnt']) + ' songs to choose from');
WriteLn();
if (theCountSongs['cnt'] = 0) then
begin
WriteLn('ZERO songs to choose from!');
WriteLn('Removing ' + QuotedStr(theArtistInQueue['artist']));
Queue.Delete(StrToInt(theArtistInQueue['queueID']));
WriteLn('Starting over...');
end
else
begin
WriteLn('Choosing random song...');
// Choose a random song from the remaining songs by this artist
theSongChooser := Query('select title, filename' +
' from songlist' +
' where id <> ' + IntToStr(theArtistInQueue['songID']) +
' and songtype = S' +
' and artist = ' + QuotedStr(theArtistInQueue['artist']) +
' order by rand() limit 1',[],True);
// Put random song in queue bottom
Queue.AddFile(theSongChooser['filename'],ipBottom);
WriteLn('Added: ' + QuotedStr(theArtistInQueue['artist']));
WriteLn(' ' + QuotedStr(theSongChooser['title']));
WriteLn();
// Be nice... Free up the data structures
theSongChooser.Free;
theArtistInQueue.Free;
theCountSongs.Free;
//Wait for queue to contain 4 tracks before continuing
WriteLn('Waiting for queue to contain 4 tracks before continuing...');
PAL.WaitForQueue(4);
end;
end;
end;
Good Luck with it...
