Top 40 script? Kan dat?

Voor vragen over Playlist Automation Language.
Gesloten
plaza

Top 40 script? Kan dat?

Ongelezen bericht door plaza »

Beste mensen,

Binnenkort starten wij een station op met onder andere de top 40 muziek. Elke week willen we de top 40 op een bepaalde tijd laten afspelen. Alleen 1 probleem is wel dat we dan alles handmatig een playlist van moeten aanmaken. Nu vraag ik me af of er een script bestaat die aan de hand van de bestandsnaam een aftelsysteem kan samenstellen. De tracks die wij per week binnen krijgt bevat eerst de top 40 noteercijfer van die week met gevolg van artiest en titel. Voorbeeld: "34. Artiest - Titel.mp3".

Nu gaat het dus om het voorste deel van de bestandsnaam. Kun je aan de hand van deze cijfer een script maken wanneer hij juist dat nummer af moet spelen? Dus eerst nummer 40, daarna nummer 39, daarna nummer 38 enzovoort. Dit moet dus compleet automatisch gaan. Is dit mogelijk? Zo ja hoe dan?

Ik hoop dat hier een oplossing voor is. Ik verwacht niet meteen een complete script, maar ik vraag me of of dit mogelijk is en hoe dit dan dus gedaan kan worden. Ik kan de script zelf dan wel verder bouwen (hoop ik).
Gebruikersavatar
Gerrie K
VIP
Berichten: 492
Lid geworden op: 02 jan 2011, 23:41
SAM-versie: 2022.6
Database: MySQL
Windows: 10
Locatie: Strijen
Contacteer:

Re: Top 40 script? Kan dat?

Ongelezen bericht door Gerrie K »

Ja dat kan......maar dan wordt het wel 40 nummers in 2 uur..............
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: Top 40 script? Kan dat?

Ongelezen bericht door Wout »

Andersom was het niet z`n probleem, dan kunnen we met

Code: Selecteer alles

Cat['top40'].QueueCat(ipBottom);
werken, maar andersom wordt een denkertje.
Afbeelding
Gebruikersavatar
Gerrie K
VIP
Berichten: 492
Lid geworden op: 02 jan 2011, 23:41
SAM-versie: 2022.6
Database: MySQL
Windows: 10
Locatie: Strijen
Contacteer:

Re: Top 40 script? Kan dat?

Ongelezen bericht door Gerrie K »

Was effe zoeken.....
Gebruik dit stukje PAL van een eerder weekscript van mij station
Dit scriptje stopt 20 nummers in een uur....

Cat['040'].QueueBottom(smRandom, NoRules); <= hier staat de nummer 40 in ,dus 1 track!!!

Je moet het wel aanpassen naar eigen inzicht......

Code: Selecteer alles

// Zaterdag 16:00 uur	Jukebox Top 40 Actueel

while DayOfWeek(Now) = Saturday and ((Now >= T['15:58:00']) and (Now <= T['15:58:30'])) do
	begin
		PAL.UnLockExecution;
			PAL.WaitForTime(T['15:59:08']);
			SaveStringToFile('C:\Tekst\CurrentProgram.txt','Nu: Jukebox Top40 Actueel');
			Queue.AddFile('C:\Promo\KVJTspot.mp3',ipTop);
			ActivePlayer.FadeTonext;
			Queue.Clear;
			Queue.AddFile('C:\Nieuws\Radio Vredenburg - NieuwsLMN.mp3',ipBottom);
			Queue.AddFile('C:\Sam474muziek\Hitmix\wij draaien ze allemaal 01.mp3',ipBottom);
			Cat['040'].QueueBottom(smRandom, NoRules);
			Cat['039'].QueueBottom(smRandom, NoRules);
			Cat['038'].QueueBottom(smRandom, NoRules);
			Cat['037'].QueueBottom(smRandom, NoRules);
			Cat['036'].QueueBottom(smRandom, NoRules);
			Cat['035'].QueueBottom(smRandom, NoRules);
			Cat['034'].QueueBottom(smRandom, NoRules);
			Cat['033'].QueueBottom(smRandom, NoRules);
			Cat['032'].QueueBottom(smRandom, NoRules);
			Cat['031'].QueueBottom(smRandom, NoRules);
			Cat['030'].QueueBottom(smRandom, NoRules);
			Cat['029'].QueueBottom(smRandom, NoRules);
			Cat['028'].QueueBottom(smRandom, NoRules);
			Cat['027'].QueueBottom(smRandom, NoRules);
			Cat['026'].QueueBottom(smRandom, NoRules);
			Cat['025'].QueueBottom(smRandom, NoRules);
			Cat['024'].QueueBottom(smRandom, NoRules);
			Cat['023'].QueueBottom(smRandom, NoRules);
			Cat['022'].QueueBottom(smRandom, NoRules);
			Cat['021'].QueueBottom(smRandom, NoRules);
			Cat['020'].QueueBottom(smRandom, NoRules);
		PAL.LockExecution;
	end;

while DayOfWeek(Now) = Saturday and ((Now >= T['16:03:10']) and (Now <= T['16:58:20'])) do
	begin
		PAL.UnLockExecution;
			var H_uur,H_min,H_sec,H_msec: INteger;
			var RestTijd: Integer;
			var StartTijd: String;
			var Nu,Duration,FadeNow : Integer;
			var AantalSongs,FadeSecs,FadeTime,TeLang: Integer;
			IF (S = 2) THEN
				BEGIN
					Cat['JinglesRV'].QueueTop(smRandom, NoRules);
					S := 0;
				END;
//			bereken de huidige tijd in seconden
			DecodeTime(Now,H_uur,H_min,H_sec,H_msec);
			Nu:= (H_uur*3600000) + (H_min*60000) + (H_sec*1000);
//			writeln ('Nu   = ' + IntToStr(Nu) + ' = '+ IntToStr(H_uur) + ':' + IntToStr(H_min) + ':' + IntToStr(H_sec));
//			writeln ('Nu   = ' + IntToStr(Nu) + ' sec.');
//			Resterende tijd tot aan het volgende hele uur berekenen
//			RestTijd := ((H_uur+1)*3600000) - (nu + Activeplayer.duration - activeplayer.curtime) - Speling;
//			writeln('Rest   = '+ IntToStr(RestTijd) + ' = ' + IntToStr(RestTijd/60000) + ':' + IntToStr(RestTijd-(RestTijd/60000)));
//			WriteLn('Queue = '+ IntToStr(Queue.duration) + ' = ' + IntToStr(Queue.duration/60000) + ':' + IntToStr(Queue.duration-(Queue.duration/60000)));
//			writeln('Rest = ' + IntToStr(RestTijd));
		PAL.LockExecution;
			RestTijd := ((H_uur+1)*3600000) - (nu + Activeplayer.duration - activeplayer.curtime) - Speling;
			duration := 0;
			WriteLn ('==========================');
			WriteLn ('Rest = '+ IntToStr(RestTijd) + ' = ' + IntToStr(RestTijd/60000) + ':' + IntToStr(RestTijd-(RestTijd/60000)));
			WriteLn ('QueueCount = ' + IntToStr(Queue.Count));
			WriteLn ('QDuur = '+ IntToStr(Queue.duration)+ ' = ' + IntToStr(Queue.duration/60000) + ':' + IntToStr(Queue.duration-(Queue.duration/60000)));
			TeLang := (Queue.duration - RestTijd);
			WriteLn ('Telang    = '+ IntToStr(TeLang)+ ' = ' + IntToStr(TeLang/60000) + ':' + IntToStr(TeLang-(TeLang/60000)));
			FadeSecs := (Queue.duration - RestTijd)/(Queue.Count);
			WriteLn ('FadeSecs/Song = '+IntToStr(FadeSecs)+ ' = ' + IntToStr(FadeSecs/60000) + ':' + IntToStr(FadeSecs-(FadeSecs/60000)));
			FadeTime := (ActivePlayer.Duration - FadeSecs);
			WriteLn ('FadeTime = '+IntToStr(FadeTime)+ ' = ' + IntToStr(FadeTime/60000) + ':' + IntToStr(FadeTime-(FadeTime/60000)));
			WriteLn ('ActPCTime = '+IntToStr(ActivePlayer.CurTime)+ ' = ' + IntToStr(ActivePlayer.CurTime/60000) + ':' + IntToStr(ActivePlayer.CurTime-(ActivePlayer.CurTime/60000)));
			FadeNow := (Nu+FadeTime);
			WriteLn ('FadeNow = '+IntToStr(FadeNow)+ ' = ' + IntToStr(FadeNow/60000) + ':' + IntToStr(FadeNow-(FadeNow/60000)));
		PAL.UnLockExecution;
			PAL.WaitForTime('+00:00:02');
			while (ActivePlayer.CurTime >= FadeTime) do
				begin
					WriteLn ('==== Fading ====');
					ActivePlayer.FadeToNext;
					PAL.WaitForTime('+00:00:08');
					S := S + 1;
				end;
			WriteLn ('Waiting: S =' + IntToStr(S));
			PAL.WaitForTime('+00:00:08');
		PAL.LockExecution;
	end;
	
while DayOfWeek(Now) = Saturday and ((Now >= T['16:50:30']) and (Now <= T['16:50:45'])) do
	begin
		PAL.UnLockExecution;
			PAL.WaitForTime(T['16:51:00']);
			SaveStringToFile('C:\Tekst\CurrentProgram.txt','Volgend uur: Jukebox Top40 Actueel');
		PAL.LockExecution;
	end;

// Zaterdag 17:00 uur	Jukebox Top40 Actueel

while DayOfWeek(Now) = Saturday and ((Now >= T['16:58:45']) and (Now <= T['16:58:55'])) do
	begin
		PAL.UnLockExecution;
			PAL.WaitForTime(T['16:59:08']);
		 SaveStringToFile('C:\Tekst\CurrentProgram.txt','Nu: Jukebox Top40 Actueel');
			Queue.AddFile('C:\Promo\KVJTspot.mp3',ipTop);
			ActivePlayer.FadeTonext;
			Queue.Clear;
			Queue.AddFile('C:\Nieuws\Radio Vredenburg - NieuwsLMN.mp3',ipBottom);
			Queue.AddFile('C:\Sam474muziek\Hitmix\wij draaien ze allemaal 01.mp3',ipBottom);
			Cat['020'].QueueBottom(smRandom, NoRules);
			Cat['019'].QueueBottom(smRandom, NoRules);
			Cat['018'].QueueBottom(smRandom, NoRules);
			Cat['017'].QueueBottom(smRandom, NoRules);
			Cat['016'].QueueBottom(smRandom, NoRules);
			Cat['015'].QueueBottom(smRandom, NoRules);
			Cat['014'].QueueBottom(smRandom, NoRules);
			Cat['013'].QueueBottom(smRandom, NoRules);
			Cat['012'].QueueBottom(smRandom, NoRules);
			Cat['011'].QueueBottom(smRandom, NoRules);
			Cat['010'].QueueBottom(smRandom, NoRules);
			Cat['009'].QueueBottom(smRandom, NoRules);
			Cat['008'].QueueBottom(smRandom, NoRules);
			Cat['007'].QueueBottom(smRandom, NoRules);
			Cat['006'].QueueBottom(smRandom, NoRules);
			Cat['005'].QueueBottom(smRandom, NoRules);
			Cat['004'].QueueBottom(smRandom, NoRules);
			Cat['003'].QueueBottom(smRandom, NoRules);
			Cat['002'].QueueBottom(smRandom, NoRules);
			Cat['001'].QueueBottom(smRandom, NoRules);
		PAL.LockExecution;
	end;

while DayOfWeek(Now) = Saturday and ((Now >= T['17:03:10']) and (Now <= T['17:58:20'])) do
	begin
		PAL.UnLockExecution;
			var H_uur,H_min,H_sec,H_msec: INteger;
			var RestTijd: Integer;
			var StartTijd: String;
			var Nu,Duration,FadeNow : Integer;
			var AantalSongs,FadeSecs,FadeTime,TeLang: Integer;
			IF (S = 2) THEN
				BEGIN
					Cat['JinglesRV'].QueueTop(smRandom, NoRules);
					S := 0;
				END;
//			bereken de huidige tijd in seconden
			DecodeTime(Now,H_uur,H_min,H_sec,H_msec);
			Nu:= (H_uur*3600000) + (H_min*60000) + (H_sec*1000);
//			writeln ('Nu   = ' + IntToStr(Nu) + ' = '+ IntToStr(H_uur) + ':' + IntToStr(H_min) + ':' + IntToStr(H_sec));
//			writeln ('Nu   = ' + IntToStr(Nu) + ' sec.');
//			Resterende tijd tot aan het volgende hele uur berekenen
//			RestTijd := ((H_uur+1)*3600000) - (nu + Activeplayer.duration - activeplayer.curtime) - Speling;
//			writeln('Rest   = '+ IntToStr(RestTijd) + ' = ' + IntToStr(RestTijd/60000) + ':' + IntToStr(RestTijd-(RestTijd/60000)));
//			WriteLn('Queue = '+ IntToStr(Queue.duration) + ' = ' + IntToStr(Queue.duration/60000) + ':' + IntToStr(Queue.duration-(Queue.duration/60000)));
//			writeln('Rest = ' + IntToStr(RestTijd));
		PAL.LockExecution;
			RestTijd := ((H_uur+1)*3600000) - (nu + Activeplayer.duration - activeplayer.curtime) - Speling;
			duration := 0;
			WriteLn ('==========================');
			WriteLn ('Rest = '+ IntToStr(RestTijd) + ' = ' + IntToStr(RestTijd/60000) + ':' + IntToStr(RestTijd-(RestTijd/60000)));
			WriteLn ('QueueCount = ' + IntToStr(Queue.Count));
			WriteLn ('QDuur = '+ IntToStr(Queue.duration)+ ' = ' + IntToStr(Queue.duration/60000) + ':' + IntToStr(Queue.duration-(Queue.duration/60000)));
			TeLang := (Queue.duration - RestTijd);
			WriteLn ('Telang    = '+ IntToStr(TeLang)+ ' = ' + IntToStr(TeLang/60000) + ':' + IntToStr(TeLang-(TeLang/60000)));
			FadeSecs := (Queue.duration - RestTijd)/(Queue.Count);
			WriteLn ('FadeSecs/Song = '+IntToStr(FadeSecs)+ ' = ' + IntToStr(FadeSecs/60000) + ':' + IntToStr(FadeSecs-(FadeSecs/60000)));
			FadeTime := (ActivePlayer.Duration - FadeSecs);
			WriteLn ('FadeTime = '+IntToStr(FadeTime)+ ' = ' + IntToStr(FadeTime/60000) + ':' + IntToStr(FadeTime-(FadeTime/60000)));
			WriteLn ('ActPCTime = '+IntToStr(ActivePlayer.CurTime)+ ' = ' + IntToStr(ActivePlayer.CurTime/60000) + ':' + IntToStr(ActivePlayer.CurTime-(ActivePlayer.CurTime/60000)));
			FadeNow := (Nu+FadeTime);
			WriteLn ('FadeNow = '+IntToStr(FadeNow)+ ' = ' + IntToStr(FadeNow/60000) + ':' + IntToStr(FadeNow-(FadeNow/60000)));
		PAL.UnLockExecution;
			PAL.WaitForTime('+00:00:02');
			while (ActivePlayer.CurTime >= FadeTime) do
				begin
					WriteLn ('==== Fading ====');
					ActivePlayer.FadeToNext;
					PAL.WaitForTime('+00:00:08');
					S := S + 1;
				end;
			WriteLn ('Waiting: S =' + IntToStr(S));
			PAL.WaitForTime('+00:00:08');
		PAL.LockExecution;
	end;
	
while DayOfWeek(Now) = Saturday and ((Now >= T['17:50:30']) and (Now <= T['17:50:45'])) do
	begin
		PAL.UnLockExecution;
			PAL.WaitForTime(T['17:51:00']);
			SaveStringToFile('C:\Tekst\CurrentProgram.txt','Volgend uur: Jukebox Hitdossier');
		PAL.LockExecution;
	end;

Heeft hier goed gewerkt..........
Alle nummers in 1 uur worden ingekort....naarmate de tijd verstrijkt..........
Het enige wat je hoeft te doen is alle 40 tracks in de Cat's zetten....
Dus nummer 40 komt in Cat040

Ben benieuwd......
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: Top 40 script? Kan dat?

Ongelezen bericht door Wout »

Je categoryID is je top40 map dan, hij staat nu op 6

Code: Selecteer alles

var Q : TDataSet ;

PAL.LockExecution ;

    Q := Query('SELECT artist, title, filename FROM categorylist INNER JOIN songlist WHERE (songlist.ID = categorylist.songID) AND categoryID = (6) ORDER BY filename ASC ',[],True);
    While not Q.EOF do
    Begin
        Queue.Addfile(+Q['filename'], IpTop);
        Q.Next;
    End;
    Q.Free;
    
PAL.UnLockExecution; 
Afbeelding
plaza

Re: Top 40 script? Kan dat?

Ongelezen bericht door plaza »

Ik ben vanmiddag er even mee bezig geweest, maar op 1 of andere manier pakt hij hem niet. Hij geeft een error. Namelijk Syntax Error: Unknown name "Speling" (line 54, column: 102)

De PAL ziet er nu bij mij zo uit:

Code: Selecteer alles

    // Zaterdag 16:00 uur   Jukebox Top 40 Actueel

    while DayOfWeek(Now) = Saturday and ((Now >= T['15:58:00']) and (Now <= T['15:58:30'])) do
       begin
          PAL.UnLockExecution;
             PAL.WaitForTime(T['15:59:08']);
             SaveStringToFile('G:\Tekst\CurrentProgram.txt','Nu: Jukebox Top40 Actueel');
             ActivePlayer.FadeTonext;
             Queue.Clear;
             Queue.AddFile('G:\Radio\Top 40\Top 40.mp3',ipBottom);
             Cat['040'].QueueBottom(smRandom, NoRules);
             Cat['039'].QueueBottom(smRandom, NoRules);
             Cat['038'].QueueBottom(smRandom, NoRules);
             Cat['037'].QueueBottom(smRandom, NoRules);
             Cat['036'].QueueBottom(smRandom, NoRules);
             Cat['035'].QueueBottom(smRandom, NoRules);
             Cat['034'].QueueBottom(smRandom, NoRules);
             Cat['033'].QueueBottom(smRandom, NoRules);
             Cat['032'].QueueBottom(smRandom, NoRules);
             Cat['031'].QueueBottom(smRandom, NoRules);
             Cat['030'].QueueBottom(smRandom, NoRules);
             Cat['029'].QueueBottom(smRandom, NoRules);
             Cat['028'].QueueBottom(smRandom, NoRules);
             Cat['027'].QueueBottom(smRandom, NoRules);
             Cat['026'].QueueBottom(smRandom, NoRules);
             Cat['025'].QueueBottom(smRandom, NoRules);
             Cat['024'].QueueBottom(smRandom, NoRules);
             Cat['023'].QueueBottom(smRandom, NoRules);
             Cat['022'].QueueBottom(smRandom, NoRules);
             Cat['021'].QueueBottom(smRandom, NoRules);
             Cat['020'].QueueBottom(smRandom, NoRules);
          PAL.LockExecution;
       end;

    while DayOfWeek(Now) = Saturday and ((Now >= T['16:03:10']) and (Now <= T['16:58:20'])) do
       begin
          PAL.UnLockExecution;
             var H_uur,H_min,H_sec,H_msec: INteger;
             var RestTijd: Integer;
             var StartTijd: String;
             var Nu,Duration,FadeNow : Integer;
             var AantalSongs,FadeSecs,FadeTime,TeLang: Integer;
    //         bereken de huidige tijd in seconden
             DecodeTime(Now,H_uur,H_min,H_sec,H_msec);
             Nu:= (H_uur*3600000) + (H_min*60000) + (H_sec*1000);
    //         writeln ('Nu   = ' + IntToStr(Nu) + ' = '+ IntToStr(H_uur) + ':' + IntToStr(H_min) + ':' + IntToStr(H_sec));
    //         writeln ('Nu   = ' + IntToStr(Nu) + ' sec.');
    //         Resterende tijd tot aan het volgende hele uur berekenen
    //         RestTijd := ((H_uur+1)*3600000) - (nu + Activeplayer.duration - activeplayer.curtime) - Speling;
    //         writeln('Rest   = '+ IntToStr(RestTijd) + ' = ' + IntToStr(RestTijd/60000) + ':' + IntToStr(RestTijd-(RestTijd/60000)));
    //         WriteLn('Queue = '+ IntToStr(Queue.duration) + ' = ' + IntToStr(Queue.duration/60000) + ':' + IntToStr(Queue.duration-(Queue.duration/60000)));
    //         writeln('Rest = ' + IntToStr(RestTijd));
          PAL.LockExecution;
             RestTijd := ((H_uur+1)*3600000) - (nu + Activeplayer.duration - activeplayer.curtime) - Speling;
             duration := 0;
             WriteLn ('==========================');
             WriteLn ('Rest = '+ IntToStr(RestTijd) + ' = ' + IntToStr(RestTijd/60000) + ':' + IntToStr(RestTijd-(RestTijd/60000)));
             WriteLn ('QueueCount = ' + IntToStr(Queue.Count));
             WriteLn ('QDuur = '+ IntToStr(Queue.duration)+ ' = ' + IntToStr(Queue.duration/60000) + ':' + IntToStr(Queue.duration-(Queue.duration/60000)));
             TeLang := (Queue.duration - RestTijd);
             WriteLn ('Telang    = '+ IntToStr(TeLang)+ ' = ' + IntToStr(TeLang/60000) + ':' + IntToStr(TeLang-(TeLang/60000)));
             FadeSecs := (Queue.duration - RestTijd)/(Queue.Count);
             WriteLn ('FadeSecs/Song = '+IntToStr(FadeSecs)+ ' = ' + IntToStr(FadeSecs/60000) + ':' + IntToStr(FadeSecs-(FadeSecs/60000)));
             FadeTime := (ActivePlayer.Duration - FadeSecs);
             WriteLn ('FadeTime = '+IntToStr(FadeTime)+ ' = ' + IntToStr(FadeTime/60000) + ':' + IntToStr(FadeTime-(FadeTime/60000)));
             WriteLn ('ActPCTime = '+IntToStr(ActivePlayer.CurTime)+ ' = ' + IntToStr(ActivePlayer.CurTime/60000) + ':' + IntToStr(ActivePlayer.CurTime-(ActivePlayer.CurTime/60000)));
             FadeNow := (Nu+FadeTime);
             WriteLn ('FadeNow = '+IntToStr(FadeNow)+ ' = ' + IntToStr(FadeNow/60000) + ':' + IntToStr(FadeNow-(FadeNow/60000)));
          PAL.UnLockExecution;
             PAL.WaitForTime('+00:00:02');
             while (ActivePlayer.CurTime >= FadeTime) do
                begin
                   WriteLn ('==== Fading ====');
                   ActivePlayer.FadeToNext;
                   PAL.WaitForTime('+00:00:08');
                   S := S + 1;
                end;
             WriteLn ('Waiting: S =' + IntToStr(S));
             PAL.WaitForTime('+00:00:08');
          PAL.LockExecution;
       end;
       
    while DayOfWeek(Now) = Saturday and ((Now >= T['16:50:30']) and (Now <= T['16:50:45'])) do
       begin
          PAL.UnLockExecution;
             PAL.WaitForTime(T['16:51:00']);
             SaveStringToFile('G:\Tekst\CurrentProgram.txt','Volgend uur: Jukebox Top40 Actueel');
          PAL.LockExecution;
       end;

    // Zaterdag 17:00 uur   Jukebox Top40 Actueel

    while DayOfWeek(Now) = Saturday and ((Now >= T['16:58:45']) and (Now <= T['16:58:55'])) do
       begin
          PAL.UnLockExecution;
             PAL.WaitForTime(T['16:59:08']);
           SaveStringToFile('G:\Tekst\CurrentProgram.txt','Nu: Jukebox Top40 Actueel');
             ActivePlayer.FadeTonext;
             Queue.Clear;
             Queue.AddFile('G:\Radio\Top 40\Top 40.mp3',ipBottom);
             Cat['020'].QueueBottom(smRandom, NoRules);
             Cat['019'].QueueBottom(smRandom, NoRules);
             Cat['018'].QueueBottom(smRandom, NoRules);
             Cat['017'].QueueBottom(smRandom, NoRules);
             Cat['016'].QueueBottom(smRandom, NoRules);
             Cat['015'].QueueBottom(smRandom, NoRules);
             Cat['014'].QueueBottom(smRandom, NoRules);
             Cat['013'].QueueBottom(smRandom, NoRules);
             Cat['012'].QueueBottom(smRandom, NoRules);
             Cat['011'].QueueBottom(smRandom, NoRules);
             Cat['010'].QueueBottom(smRandom, NoRules);
             Cat['009'].QueueBottom(smRandom, NoRules);
             Cat['008'].QueueBottom(smRandom, NoRules);
             Cat['007'].QueueBottom(smRandom, NoRules);
             Cat['006'].QueueBottom(smRandom, NoRules);
             Cat['005'].QueueBottom(smRandom, NoRules);
             Cat['004'].QueueBottom(smRandom, NoRules);
             Cat['003'].QueueBottom(smRandom, NoRules);
             Cat['002'].QueueBottom(smRandom, NoRules);
             Cat['001'].QueueBottom(smRandom, NoRules);
          PAL.LockExecution;
       end;

    while DayOfWeek(Now) = Saturday and ((Now >= T['17:03:10']) and (Now <= T['17:58:20'])) do
       begin
          PAL.UnLockExecution;
             var H_uur,H_min,H_sec,H_msec: INteger;
             var RestTijd: Integer;
             var StartTijd: String;
             var Nu,Duration,FadeNow : Integer;
             var AantalSongs,FadeSecs,FadeTime,TeLang: Integer;
    //         bereken de huidige tijd in seconden
             DecodeTime(Now,H_uur,H_min,H_sec,H_msec);
             Nu:= (H_uur*3600000) + (H_min*60000) + (H_sec*1000);
    //         writeln ('Nu   = ' + IntToStr(Nu) + ' = '+ IntToStr(H_uur) + ':' + IntToStr(H_min) + ':' + IntToStr(H_sec));
    //         writeln ('Nu   = ' + IntToStr(Nu) + ' sec.');
    //         Resterende tijd tot aan het volgende hele uur berekenen
    //         RestTijd := ((H_uur+1)*3600000) - (nu + Activeplayer.duration - activeplayer.curtime) - Speling;
    //         writeln('Rest   = '+ IntToStr(RestTijd) + ' = ' + IntToStr(RestTijd/60000) + ':' + IntToStr(RestTijd-(RestTijd/60000)));
    //         WriteLn('Queue = '+ IntToStr(Queue.duration) + ' = ' + IntToStr(Queue.duration/60000) + ':' + IntToStr(Queue.duration-(Queue.duration/60000)));
    //         writeln('Rest = ' + IntToStr(RestTijd));
          PAL.LockExecution;
             RestTijd := ((H_uur+1)*3600000) - (nu + Activeplayer.duration - activeplayer.curtime) - Speling;
             duration := 0;
             WriteLn ('==========================');
             WriteLn ('Rest = '+ IntToStr(RestTijd) + ' = ' + IntToStr(RestTijd/60000) + ':' + IntToStr(RestTijd-(RestTijd/60000)));
             WriteLn ('QueueCount = ' + IntToStr(Queue.Count));
             WriteLn ('QDuur = '+ IntToStr(Queue.duration)+ ' = ' + IntToStr(Queue.duration/60000) + ':' + IntToStr(Queue.duration-(Queue.duration/60000)));
             TeLang := (Queue.duration - RestTijd);
             WriteLn ('Telang    = '+ IntToStr(TeLang)+ ' = ' + IntToStr(TeLang/60000) + ':' + IntToStr(TeLang-(TeLang/60000)));
             FadeSecs := (Queue.duration - RestTijd)/(Queue.Count);
             WriteLn ('FadeSecs/Song = '+IntToStr(FadeSecs)+ ' = ' + IntToStr(FadeSecs/60000) + ':' + IntToStr(FadeSecs-(FadeSecs/60000)));
             FadeTime := (ActivePlayer.Duration - FadeSecs);
             WriteLn ('FadeTime = '+IntToStr(FadeTime)+ ' = ' + IntToStr(FadeTime/60000) + ':' + IntToStr(FadeTime-(FadeTime/60000)));
             WriteLn ('ActPCTime = '+IntToStr(ActivePlayer.CurTime)+ ' = ' + IntToStr(ActivePlayer.CurTime/60000) + ':' + IntToStr(ActivePlayer.CurTime-(ActivePlayer.CurTime/60000)));
             FadeNow := (Nu+FadeTime);
             WriteLn ('FadeNow = '+IntToStr(FadeNow)+ ' = ' + IntToStr(FadeNow/60000) + ':' + IntToStr(FadeNow-(FadeNow/60000)));
          PAL.UnLockExecution;
             PAL.WaitForTime('+00:00:02');
             while (ActivePlayer.CurTime >= FadeTime) do
                begin
                   WriteLn ('==== Fading ====');
                   ActivePlayer.FadeToNext;
                   PAL.WaitForTime('+00:00:08');
                   S := S + 1;
                end;
             WriteLn ('Waiting: S =' + IntToStr(S));
             PAL.WaitForTime('+00:00:08');
          PAL.LockExecution;
       end;
       
    while DayOfWeek(Now) = Saturday and ((Now >= T['17:50:30']) and (Now <= T['17:50:45'])) do
       begin
          PAL.UnLockExecution;
             PAL.WaitForTime(T['17:51:00']);
             SaveStringToFile('G:\Tekst\CurrentProgram.txt','Volgend uur: Jukebox Hitdossier');
          PAL.LockExecution;
       end;
Het volgende heb ik gedaan ten opzichte van de script die hierboven is geleverd:
- Categoriemappen aangemaakt "040" t/m "001" met 1 mp3 in elk map.
- CurrentProgram.txt bestand aangemaakt in de map Tekst op mijn G:\ schijf. Ook dit is aangepast in de script.
- Queue.AddFile('C:\Promo\KVJTspot.mp3',ipTop); en Queue.AddFile('C:\Nieuws\Radio Vredenburg - NieuwsLMN.mp3',ipBottom); verwijderd aan beide gedeeltes.
- Queue.AddFile('C:\Sam474muziek\Hitmix\wij draaien ze allemaal 01.mp3',ipBottom); vervangen door: Queue.AddFile('G:\Radio\Top 40\Top 40.mp3',ipBottom); ook aan beide gedeeltes.
-

Code: Selecteer alles

             IF (S = 2) THEN
                BEGIN
                   Cat['JinglesRV'].QueueTop(smRandom, NoRules);
                   S := 0;
                END;
verwijderd aan beide gedeeltes. Ook deze zorgde eerst al voor error. Misschien een verband ermee?

Tenslotte wou ik graag ook een nummeraankondiging toevoegen. Ik wil graag bij elk nummer een mp3 afspelen die de positie van de plaat aangeeft. Ook zou het leuk zijn als je de jingle "Nieuw in de top 40" af kunt spelen. Ik neem aan dat je dit in bijv de map 037 bovenaan kunt zetten? Dus eerst die jingle en daarna de plaat. Dit zou handig zijn aangezien het uiteraard per week dit verschild. De aankondiging "nummer 37" kan eventueel ook op deze manier, maar misschien is dit beter in de script meteen op te nemen.
drOhimself

Re: Top 40 script? Kan dat?

Ongelezen bericht door drOhimself »

plaza schreef: Syntax Error: Unknown name "Speling" (line 54, column: 102)
Dan ben je vergeten die op te nemen als Variable, bovenaan.

Overigens is de PAL van Gerrie, welke je nu aangepast hebt, een GEDEELTE uit zijn weekpal. Dus daar heb je geen info van de gebruikte Variablen.
Gerrie, graag opgave Variablen !
Gebruikersavatar
Gerrie K
VIP
Berichten: 492
Lid geworden op: 02 jan 2011, 23:41
SAM-versie: 2022.6
Database: MySQL
Windows: 10
Locatie: Strijen
Contacteer:

Re: Top 40 script? Kan dat?

Ongelezen bericht door Gerrie K »

Zie het,sorry ,niet nagedacht.
Zal vanavond effe het complete script hier plaatsen....


Update,
Sript met de top40 countdown erin verwerkt,incl.de benodigde variables.....

Kopie van WeekFormat (1300-1600) Radio Vredenburg 20110614a.PAL
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
plaza

Re: Top 40 script? Kan dat?

Ongelezen bericht door plaza »

Ik heb hem helaas nog niet uit kunnen proberen aangezien ik alles aan moet passen. Momenteel maak ik nu de hele weekschema voor onszelf. Dit vergt nog behoorlijk veel werk dus vandaar. Toch wil ik je alvast bedanken van dit geweldige script. Het ziet er in ieder geval goed uit.

Zodra ik hem klaar heb en hem ga testen zal ik het hier wel even posten.
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: Top 40 script? Kan dat?

Ongelezen bericht door Wout »

Kon het toch niet laten om verder te gaan puzzelen. :-D
Nu plaats hij ook een nummer 40..39..38..etc. ervoor.

Alleen moet je dan de PAL aanpassen als je 40..39..etc.mp3 op een andere map staan.
Nu staat het in de map c:\nummer

Daar waar je categorie met je top40 staat, dat kan je veranderen in categoryID = (6).
Bij mij is me top40 in cat 6.

Je kan met MySQL-Query-Browser met de code

Code: Selecteer alles

SELECT * FROM category ;
zien welke nummer bij welke categorie correspondeert.

Code: Selecteer alles

var Q : TDataSet ;
var nr : Integer = 40 ;

PAL.LockExecution ;

	Q := Query('SELECT artist, title, filename FROM categorylist INNER JOIN songlist WHERE (songlist.ID = categorylist.songID) AND categoryID = (6) ORDER BY filename DESC ',[],True) ;
	While not Q.EOF do
	Begin
		Queue.Addfile('C:\nummer\'+IntToStr(nr)+'.mp3', IpBottom) ;
		Queue.Addfile(+Q['filename'], IpBottom) ;		
		nr := nr - 1 ;
		Q.Next ;
	End ;
	Q.Free ;

PAL.UnLockExecution ; 
Afbeelding
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: Top 40 script? Kan dat?

Ongelezen bericht door Wout »

Voor als je geen MySQL-Query-Browser heb.
Kan je onderstaande PAL draaien.

Als je je catID niet weet en niks heb ingevuld in CatID := '' ;
Dan gaat hij automatisch de categorie-nummer + categorie-naam laten zien rechts in je PAL- Scripting IDE.

Je zoekt dan je Categorie op (bv top40) en de cijfer boven de categorie-naam vul je dan in (bv 6)
CatID := '6' ;

Code: Selecteer alles

var Q : TDataSet ;
var nr : Integer = 40 ;
var catID : string;

// hieronder komt je Categorie-nummer
CatID := '' ;

if catID = '' then
begin
   Q := Query('SELECT * FROM category',[],True) ;
   While not Q.EOF do
   Begin
	  WriteLn(Q['ID']);
	  WriteLn(Q['name']);
	  Q.Next ;
   end;
   Q.Free ;
   PAL.Loop := False ;
end
else if (CatID > '') then
begin
   PAL.LockExecution ;

	  Q := Query('SELECT artist, title, filename FROM categorylist INNER JOIN songlist WHERE (songlist.ID = categorylist.songID) AND categoryID = (:CatID) ORDER BY filename DESC ',[CatID],True) ;
	  While not Q.EOF do
	  Begin
		 Queue.Addfile('C:\nummer\'+IntToStr(nr)+'.mp3', IpBottom) ;
		 Queue.Addfile(+Q['filename'], IpBottom) ;
		 nr := nr - 1 ;
		 Q.Next ;
	  End ;
	  Q.Free ;

   PAL.UnLockExecution ;
end ;
Afbeelding
plaza

Re: Top 40 script? Kan dat?

Ongelezen bericht door plaza »

Het lijkt goed te werken. Heel erg bedankt! Jullie hebben mij erg goed geholpen.
Gesloten
  • Vergelijkbare Onderwerpen
    Reacties
    Weergaves
    Laatste bericht