Plaat uitspelen voor het nieuws. (TOTH)

Voor vragen over Playlist Automation Language.
Gebruikersavatar
spiedie
***
Berichten: 73
Lid geworden op: 15 mei 2006, 16:56
SAM-versie: 2022.4
Database: MySQL
Windows: 10
Contacteer:

Re: Plaat uitspelen voor het nieuws. (TOTH)

Ongelezen bericht door spiedie »

Wow, wat een fijn script is dit, complimenten aan de maker(s) ervan. Ik heb dit script nu zo'n 2 weken in gebruik en bij 95% gaat het vlekkeloos. Toch word ik ook een enkele keer verrast met een kerstplaat en daar gaat deze vraag over.

Is er een mogelijkheid om deze platen uit te sluiten? (behalve ze te verwijderen uit de database natuurlijk) Zit er zelf aan te denken door bijvoorbeeld de categories "xmas" en "summer" uit te sluiten voor de TOTH. Is dit ook mogelijk? En zo ja, hoe gaat me dat lukken? :)
Gebruikersavatar
Wout
Beheerder
Berichten: 3501
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: Plaat uitspelen voor het nieuws. (TOTH)

Ongelezen bericht door Wout »

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 ; 
Afbeelding
Gebruikersavatar
spiedie
***
Berichten: 73
Lid geworden op: 15 mei 2006, 16:56
SAM-versie: 2022.4
Database: MySQL
Windows: 10
Contacteer:

Re: Plaat uitspelen voor het nieuws. (TOTH)

Ongelezen bericht door spiedie »

Wout schreef: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.
Bedankt voor je reactie, maar nu heb ik het forum al doorzocht alsmede via google getracht het antwoord te vinden maar hoe kom ik erachter wat mijn CategoryID's zijn. Met schaamrood op de kaken moet ik weer een beroep doen op de kenners. [smilie=blush2.gif]
drOhimself

Plaat uitspelen voor het nieuws. (TOTH)

Ongelezen bericht door drOhimself »

Ik weet dat er een topic is gewijd aan dit onderwerp in het verleden.
Ik probeer dat topic -zo snel mogelijk- te vinden.
Gebruikersavatar
Kees
Beheerder
Berichten: 3149
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: Plaat uitspelen voor het nieuws. (TOTH)

Ongelezen bericht door Kees »

Wout schreef: 26 okt 2011, 20:25 Waar het idee al langer ronddwaalt op het forum en Gerrie & drO zich actief hebben ingezet en een oplossing hebben gevonden. Wil ik het ook graag delen met jullie.

Probleem :
Soms draait een nummer net 10 seconden en dan komt het nieuws/reclame/promo (TOTH) ertussen.
En dat is altijd bij een goed/leuk nummer. :D

Wat doet het script :
5 voor het uur start het script op en bereken de aantal seconden nog voor het nieuws,
vanuit daar wordt in de hele database gekeken naar een nummer dat de aantal juiste seconden heeft.
Zodat je geen 10-seconden nummer meer hebt en toch het nieuws precies op het uur.

Wat kan ik nog in veranderen :
Het liefst zo weinig mogelijk. [smilie=wink3.gif]
Ik heb een reserve-tijd van 9 seconden ingebouwd (denk aan je fade-tijd!)
Daar kan je nog eventueel mee spelen.
5 voor het uur is een goede tijd, langer (< xx:55) = langere platen en vice versa.

En soms heeft het geen resultaat.

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 : String ;
        var D : TDataSet ;

        // 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 ' +
                'songlist.artist, songlist.filename, songlist.duration ' +
            'FROM ' +
                'songlist ' +
            'WHERE ' +
                'date_played <= DATE_SUB( NOW( ), INTERVAL 1 HOUR )' +  // Alleen nummers die al 1 uur niet zijn gespeeld
            '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
                Queue.Addfile(+D['filename'], IpTop) ;
                D.next ;
            end
        else
            WriteLn('Geen Resultaat');
        
        D.free ;

    // Slow some things down
    PAL.UnLockExecution ;
 
Voor de tweakers onder ons, soms start je nieuws wat eerder dan is de + 9000 veranderen in - 9000.

Een uitgebreide versie waarbij rekening wordt gehouden met de laatst gespeelde categorie vind je hieronder.
viewtopic.php?f=8&p=25688#p25648
Oud topic ff nieuw leven inroepen maar ik zal er waarschijnlijk compleet overheen kijken maar ik gebruik dit basic script maar zoek een aanvulling waar hij alleen een nummer uit de category 90f met Id 4 haalt. Verdere aanvullingen hoef ik niet. Wie is er zo handig.
Gebruikersavatar
Kees
Beheerder
Berichten: 3149
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: Plaat uitspelen voor het nieuws. (TOTH)

Ongelezen bericht door Kees »

Al gevonden.
Heb dit commando ingevoerd en werkt.
'AND '+ 'categoryID = 4 '+
Plaats reactie
  • Vergelijkbare Onderwerpen
    Reacties
    Weergaves
    Laatste bericht