controle PAL script

Voor vragen over Playlist Automation Language.
Gesloten
FH8

controle PAL script

Ongelezen bericht door FH8 »

Hallo,
Ik dacht dat ik het lek vwb uurvullen had gevonden.. Maar het klopt niet helemaal. Kunnen julllie eens kijken naar onderstaande scripts. Nu wordt er willekeurig rond xx.59.10 of xx.59.35 of zelfs rond xx.58 nog een nieuwe soms ook lange plaat gestart die vervolgens wordt afgekapt door m'n uuropener.

Code: Selecteer alles

 // PRECIES EEN UUR VULLEN PAL:
   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 ;

   PAL.WaitForTime(T['XX:59:54']);
   //  PAL.UnLockExecution;
   Queue.Clear;
   Queue.AddFile('C:\Jingles\uuropener.mp3',ipTop);
   ActivePlayer.FadeToNext;

Code: Selecteer alles

PAL.Loop:=True;

var QueueTime : Integer = (60*60*1000);
    While Queue.Duration < QueueTime do

    Begin

      Cat['Music (All)'].QueueBottom(smRandom, EnforceRules);
      
    end;
//   PAL.UnLockExecution;

Code: Selecteer alles

PAL.Loop:= True;
Cat['Jingles (All)'].QueueTop(smLRP, NoRules);
PAL.WaitForTime (T['+00:09:30']);
Ik begrijp dat je met faden enz zit, maar ik heb sterk het idee dat er iets in de scripts niet klopt. Wie biedt hulp?
drOhimself

Re: controle PAL script

Ongelezen bericht door drOhimself »

Heb je nog met deze regel zitten experimenteren ?

Code: Selecteer alles

':RestTijd + 9000 ' +    // Hier wat speling op de lengte van het gezochte nummer met 9 seconden
Het valt of staat natuurlijk met het voorhanden hebben van één (of meerdere) nummer(s) wat/welke voldoet aan de berekende tijd.
Hoeveel nummers zitten in je database momenteel?

Ik zou hier rustig 15 seconden van maken.
Liever een nummer op de laatste 3 seconden afgekapt, dan een nieuw nummer die maar 5 seconden speelt......toch ?

Denk ook aan de laatste toegevoegde regels in eerste PAL.

Code: Selecteer alles

PAL.WaitForTime(T['XX:59:54']);
   //  PAL.UnLockExecution;
   Queue.Clear;
   Queue.AddFile('C:\Jingles\uuropener.mp3',ipTop);
   ActivePlayer.FadeToNext;
Die pikt ook nog eens 6 seconden !
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Momenteel heb ik zo'n 4900 nr's in mijn database. Ik ben nog steeds aan het vullen, maar dit zou toch voldoende moeten zijn. Ik heb ook al eens met die seconden getest. Dit ga ik dan nogmaals doen en kijken of "15 seconden" dan wel werkt. Hopen maar! En zou ik dan die laatste regels in de eerste PAL eruit moeten halen en de uurjingle PAL alleen moeten laten draaien?
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Na nog een avondje stoeien met de instelingen denk ik dat ik weet waar de "fout" zit. PAL 1 zorgt ervoor dat er een uur muziek aangemaakt wordt. PAL 2 zorgt voor de jingles en PAL 3 is het "5 min script" dat er voor moet zorgen dat het uur precies gevuld wordt. En juist dat gebeurt niet. Oftewel het uur wat aangemaakt wordt door PAL 1, blijft ook gewoon zo doorlopen. PAL 3 start op de één of andere manier niet op. Kan iemand zien wat daar toch fout aan is?
PAL 1

Code: Selecteer alles

PAL.Loop:=True;

var QueueTime : Integer = (60*60*1000);
    While Queue.Duration < QueueTime do

    Begin

      Cat['Music (All)'].QueueBottom(smRandom, EnforceRules);
      
    end;
//   PAL.UnLockExecution;

PAL 2

Code: Selecteer alles

PAL.Loop:= True;
Cat['Jingles (All)'].QueueTop(smLRP, NoRules);
PAL.WaitForTime (T['+00:09:30']);

PAL 3

Code: Selecteer alles

 // PRECIES EEN UUR VULLEN PAL:
   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 + 15000 ' +    // Hier wat speling op de lengte van het gezochte nummer met 15 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 ;

   PAL.WaitForTime(T['XX:00:00]);
   //  PAL.UnLockExecution;
   Queue.Clear;
   Queue.AddFile('C:\Jingles\uuropener.mp3',ipTop);
   ActivePlayer.FadeToNext;


Blijkbaar zit er in PAL 3 dus iets waardoor deze niet werkt...
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: controle PAL script

Ongelezen bericht door Wout »

PAL 3 werkt wel, alleen heeft het een variabel tijd, soms is ie eerder en soms is ie langer.
Alleen heb jij een stop-tijd gegeven die niet variabel is maar constant en nog een clear-functie waardoor de PAL 3 soms wel werkt en soms niet.
Dus als je de clear-functie en stop-tijd eruit haal, dan zal het werken.
Afbeelding
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Dank voor je antwoord, maar ik ben nog niet helemaal een die hard SAM'er. Kun je me wellicht nog vertellen waar dan die clear-functie en stop-tijd precies in die PAL staan? Alvast dank!!
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Ik heb inmiddels de clear functie uit onderstaande stukje van PAL 3 gehaald.

Code: Selecteer alles

PAL.WaitForTime(T['XX:00:00]);
   //  PAL.UnLockExecution;
      Queue.AddFile('C:\Jingles\uuropener.mp3',ipTop);
   ActivePlayer.FadeToNext;

Maar waar o waar staat de stoptijd in PAL 3 toch. [smilie=ireful1.gif] Deze moet er nog uit om de PAL goed te laten werken...
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: controle PAL script

Ongelezen bericht door Wout »

Een andere omschrijving voor stoptijd is WachtOpTijd. ;)
Afbeelding
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Ik heb in PAL 3 op 2 plaatsen waitfortime staan namelijk hier:

Code: Selecteer alles

// Begin het script op elk uur vanaf 5 voor het uur
   PAL.WaitForTime(T['XX:55:00']) ;


en hier:

Code: Selecteer alles

 PAL.WaitForTime(T['XX:00:00]);
   //  PAL.UnLockExecution;
   Queue.Clear;
   Queue.AddFile('C:\Jingles\uuropener.mp3',ipTop);
   ActivePlayer.FadeToNext;

moet het daar dan uit of moet de tijd hierachter aangepast worden?
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Ik heb nu onderstaande PAL getest. (waitfortime is verwijderd)
Dit geeft niet het beoogde resultaat. Wat doe [smilie=girl_devil.gif] ik toch fout

Code: Selecteer alles

  // PRECIES EEN UUR VULLEN PAL:
   PAL.Loop:=True;

  // 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 + 18000 ' +    // Hier wat speling op de lengte van het gezochte nummer met 18 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 ;

   PAL.WaitForTime(T['XX:00:00']);
   Queue.AddFile('C:\Jingles\uuropener.mp3',ipTop);
   ActivePlayer.FadeToNext;
drOhimself

Re: controle PAL script

Ongelezen bericht door drOhimself »

Wout schreef:PAL 3 werkt wel, alleen heeft het een variabel tijd, soms is ie eerder en soms is ie langer.
Alleen heb jij een stop-tijd gegeven die niet variabel is maar constant en nog een clear-functie waardoor de PAL 3 soms wel werkt en soms niet.
Dus als je de clear-functie en stop-tijd eruit haal, dan zal het werken.
Wout, we hebben daar juist die laatste paar regels IN gezet om de uurjingle direct te starten.
De PAL.WaitForTime(T['XX:00:00]);-regel start pas zodra de feitelijke functie van de PAL (opzoeken van passend nummer om uur te vullen) is beeindigd.
Ook de verhoging van 'SPELING' naar x seconden zou de nauwkeurigheid alleen maar verhogen zodat een 'te lang' nummer gebruikt wordt en zodoende (bijna) nooit een 'te kort' nummer gebruikt wordt.
Een 'te lang' nummer wordt dan door de jingle om xx:00:00 afgekapt, en is in mijn optiek beter dan een nieuw nummer wat dan maar bijv. 5 seconden draait.

Ik had het zojuist hier even getest met die PAL, en loopt hier goed.
Had jij andere ervaringen ?
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: controle PAL script

Ongelezen bericht door Wout »

Zo zou het theoretisch moeten werken.
Alleen heb je nummers die 'staand eindigen' en/of langzaam uitfaden.
De staand einde stoppen tussen XX:00:00 t/m XX:00:14
De langzaam uitfaden kunnen stoppen op 15 seconden voor het einde. XX:59:47 t/m XX:00:14

Dat betekend dat je de 1ste 'resttijd' al 15 seconden extra moet geven voor platen die uitfaden, maar dat betekend voor een staand eind extra 15 seconden die erbij komt.
Daarmee is de kans dat hij ooit op TOTH eindig vele malen kleiner.

Dan kan je beter het voor lief nemen dat hij soms 15 seconden eerder en/of 15 seconden later klaar is op het uur.

Als ie 15 seconden eerder klaar is op zijn PAL betekend dat er nog 1 plaat wordt gepakt en na 15 seconden weer uitfade.
Heb hier de link met de oplossing, waardoor hij rond het uur uitkomt (+- 15 seconden)
viewtopic.php?f=81&t=4565&start=20#p28818
Afbeelding
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Wout en drO heel erg bedankt voor het meedenken Ik heb nu 2 scripts voor (PAL3). Ik zal ze allebeide gaan testen. Welke hebb jij getest drO?

Code: Selecteer alles

  // PRECIES EEN UUR VULLEN PAL:
   PAL.Loop:=True;

  // 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 + 18000 ' +    // Hier wat speling op de lengte van het gezochte nummer met 18 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 ;

   PAL.WaitForTime(T['XX:00:00']);
   Queue.AddFile('C:\Jingles\uuropener.mp3',ipTop);
   ActivePlayer.FadeToNext;

Code: Selecteer alles

 // PRECIES EEN UUR VULLEN PAL:
   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 + 20000 ' +    // Hier wat speling op de lengte van het gezochte nummer met 20 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 ;

   PAL.WaitForTime(T['XX:00:00']);
   //  PAL.UnLockExecution;
   Queue.AddFile('C:\Jingles\uuropener.mp3',ipTop);
   ActivePlayer.FadeToNext;
één van beide moet wel de goede zijn....
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: controle PAL script

Ongelezen bericht door Wout »

Nee hoor, je hebt weer 2 'foute' instaan.

De link die ik je gaf verwijs weer naar een andere link. ;)
Afbeelding
drOhimself

Re: controle PAL script

Ongelezen bericht door drOhimself »

FH8, ik heb deze getest :

Code: Selecteer alles

PAL.Loop := True ;
PAL.WaitForTime(T['XX:55:00']) ;
PAL.LockExecution ;
	var ID, RestTijd : Integer ;
	var Now_minutes : String ;
	var C, D : TDataSet ;
	Now_minutes := FormatDateTime('n', Now) ;
	RestTijd := ( (60 - Now_minutes ) * 60000 + 5000) - ( Activeplayer.Duration - ActivePlayer.CurTime ) ;
	C := QUERY('SELECT ' +
			'songlist.date_played, songlist.songtype,songlist.ID, categorylist.categoryID, categorylist.songID ' +
		'FROM ' + 'songlist ' + 'INNER JOIN ' + 'categorylist ' + 'ON' + '(categorylist.songID = songlist.ID)' +                
		'WHERE ' + '(songlist.songtype = :songtype ) ' + 'ORDER BY ' + 'songlist.date_played ' + ' DESC ' + 'LIMIT 1 ', ['S'], True ) ;
	C.First ;
	while not C.EOF do
		begin
		   ID := C['categoryID'] ;
		   C.next ;
		end ;
	C.free ;
	D := QUERY('SELECT ' +
			'categorylist.songID, categorylist.categoryID, songlist.artist, songlist.filename, songlist.duration, songlist.ID ' +
		'FROM ' + 'categorylist ' + 'INNER JOIN ' + 'songlist ' + 'ON ' + '(songlist.ID = categorylist.songID) ' +
		'WHERE ' + 'categoryID = :catID ' + 'AND ' + 'date_played <= DATE_SUB( NOW( ), INTERVAL 1 HOUR )' +  // Alleen nummers die al 1 uur niet zijn gespeeld              
		'AND '+ 'duration '+ 'BETWEEN '+ ':RestTijd '+ 'AND '+ ':RestTijd + 9000 ' + 'ORDER BY RAND() ' + 'LIMIT 1', [ID, RestTijd], True ) ;
	D.First ;
	while not D.EOF do
		begin
			Queue.Addfile(+D['filename'], IpTop) ;            
			D.next ;
		end ;
	D.free ;
PAL.UNLockExecution ;

PAL.WaitForTime(T['XX:00:00']);
   //  PAL.UnLockExecution;
   Queue.Clear;
   Queue.AddFile('G:\Radio\Jingles\Broadcasterforum (aangezet).mp3',ipTop);
   ActivePlayer.FadeToNext;
De eerste die jij laat zien, mist de xx:55:00 regel om te beginnen.
Wat er aan de 2e fout, zie ik niet zo snel, maar weet wel, het komt er heel erg op aan wat er in je PAL staat.

Wat Wout ook al hierboven aangeeft, de nummers met een 'staand einde' geven een hele andere 'lengte' aan als een 'uitfade'-nummer.
Om dus e.e.a. ALTIJD goed te laten lopen, moet je concessies doen:
of het voor lief nemen dat er soms een kort nummer voor je nieuws zit,
of dat er een nummer met 'staand einde' te vroeg wordt afgekapt,
of je nieuws niet precies op xx:00:00 laten beginnen maar gewoon aan het eind van een nummer, ergens in de buurt van xx:00:00 !
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: controle PAL script

Ongelezen bericht door Wout »

drOhimself schreef: Wat Wout ook al hierboven aangeeft, de nummers met een 'staand einde' geven een hele andere 'lengte' aan als een 'uitfade'-nummer.
Om dus e.e.a. ALTIJD goed te laten lopen, moet je concessies doen:
of het voor lief nemen dat er soms een kort nummer voor je nieuws zit,
of dat er een nummer met 'staand einde' te vroeg wordt afgekapt,
of je nieuws niet precies op xx:00:00 laten beginnen maar gewoon aan het eind van een nummer, ergens in de buurt van xx:00:00 !
Klopt als een bus. [smilie=good.gif]
Afbeelding
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Goed ik ga de door jou geteste PAL gebruiken en kijken of dat 'm dan is! "
En m'n nieuws, daar zit ik met smart op te wachten.... Heb het inmiddels aangevraagd en wacht op de inlogcodes. [smilie=taunt.gif]
Als ik dat dan heb, da kan ik idd het nieuws er strak achter plannen. Maar eerst nu jou PAL testen. Alvast dank!!
FH8

Re: controle PAL script

Ongelezen bericht door FH8 »

Wout en drO heel erg bedankt voor jullie hulp. Ik gebruik nu de PAL die Wout ook heeft getest (zie eerdere berichten in dit topic). Meestal wordt nu het uur netjes volgemaakt.

Vanaf 1 juni verzorgd Novum nieuws de dagelijkse nieuws bulletins op rockfiles.nl. Dan ga ik verder met de volgende uitdaging. Maar zoals wout voorstelde kan ik dit wel strak plannen. Zonodig iets na het hele uur! [smilie=good.gif]
Gesloten
  • Vergelijkbare Onderwerpen
    Reacties
    Weergaves
    Laatste bericht