Jazeker is dat mogelijk, zelf gebruik ik ook een filter op categorieën.
Als je de ID weet van je categorie kan je het invullen in de PAL.
Code: Selecteer alles
PAL.Loop := True ;
// Begin het script op elk uur vanaf 5 voor het uur
PAL.WaitForTime(T['XX:55:00']) ;
// Speed some things up
PAL.LockExecution ;
// Wat variabele instellen
var RestTijd : Integer ;
var Now_minutes, tijd, uur, nieuws : String ;
var D : TDataSet ;
var plus_uur : DateTime ;
plus_uur := T['+01:00:00'] ;
tijd := FormatDateTime('hh', plus_uur) ;
uur := '\\HOMESERVER\Muziek\Jingle\tijd\' + tijd + '.mp3' ;
nieuws := 'HOMESERVERMuziekJingleNEWSnieuws.mp3' ;
// Alleen de minuten van het uur
Now_minutes := FormatDateTime('n', Now) ;
// De aantal minuten afhalen van 1 uur en waar rekening is gehouden met de spelende nummer in miliseconden
RestTijd := ( ( (60 - Now_minutes ) * 60000) ) - ( Activeplayer.Duration - ActivePlayer.CurTime ) ;
// Hier zoek ie de nummer met de juiste lengte + een beetje meer
D := QUERY('SELECT artist, title, filename '+
'FROM songlist s, categorylist cl, category c '+
'WHERE s.ID = cl.songID '+
'AND categoryID NOT IN (20, 30, 31, 32, 33, 34, 35, 36, 44, 48, 49, 50) '+
'AND cl.categoryID = c.ID '+
'AND date_artist_played <= DATE_SUB(NOW(), INTERVAL c.artist_min MINUTE) '+
'AND date_album_played <= DATE_SUB(NOW(), INTERVAL c.album_min MINUTE) '+
'AND date_title_played <= DATE_SUB(NOW(), INTERVAL c.title_min MINUTE) '+
'AND duration '+
'BETWEEN :RestTijd '+
'AND :RestTijd + 9000 ' + // Hier wat speling op de lengte van het gezochte nummer met 9 seconden
'ORDER BY RAND() ' + // Hij pakt een willekeurige nummer die voldoet aan de eisen
'LIMIT 1', [RestTijd], True ) ;
D.First ;
if not D.EOF then
begin
if((Now >= T['06:00:00']) and (Now <= T['23:00:00'])) then
Queue.Addfile(nieuws, IpTop) ;
Queue.Addfile(uur, ipTop);
Queue.Addfile(+D['filename'], IpTop) ;
D.next ;
end
else
begin
WriteLn('Geen Resultaat');
if((Now >= T['06:00:00']) and (Now <= T['23:00:00])) then
Queue.Addfile(nieuws, IpTop) ;
Queue.Addfile(uur, ipTop);
end;
D.free ;
// Slow some things down
PAL.UnLockExecution ;