Remove na >3 keer draaien

Voor vragen over Playlist Automation Language.
Plaats reactie
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:

Remove na >3 keer draaien

Ongelezen bericht door Kees »

Een leuke na denker.
Ik zoek een manier om nummers uit een bepaalde categorie, na meer dan 3 keer gedraaid te zijn, uit de categorie gehaald wordt . ( Remove )
Dus niet van de harde schijf verwijderen.
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: Remove na >3 keer draaien

Ongelezen bericht door Wout »

Kan dat niet met de standaardinstellingen van SAM om het te remove`en?
Of is het alleen uit de categorie halen en niet uit de database van SAM?
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Afbeelding
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: Remove na >3 keer draaien

Ongelezen bericht door Kees »

Zoals ik het op het plaatje zie, moet ik dit handmatig doen bij alle nummers uit die categorie.
Is niet te doen bij 800+ nummers.
Zeker niet als ik het ga toepassen bij nog meerdere categorieën.
Het is de bedoeling dat PAL alle nummers uit die bepaalde categorie zet zoals je op het plaatje aangeeft.
Wel uit de categorie maar niet uit de database.
Ik denk zelf niet dat dat met PAL kan.
Ben het nog nergens tegen gekomen.
Bedankt voor het meedenken.
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: Remove na >3 keer draaien

Ongelezen bericht door Wout »

Het was even denken, maar ik heb iets gemaakt.

Dit is een PAL die je kan starten (run), hij zal 2 vragen aan je stellen.
1: Na hoeveel keer gespeeld te hebben mag een nummer uit de categorie worden gehaald.
2: Maak een nummer uit de gekozen categorie.

Hierna krijg de aantallen te zien en daarna zal hij deze verwijderen uit de categorie.

Code: Selecteer alles

{Gebruik op eigen risico!
Zorg eerst voor een back-up voordat je deze PAL draait!}

PAL.loop := False;

var Q : TDataSet;
var Aantal: Integer;
var CatID, Msg, nrDel : String;

nrDel := InputBox('Aantal keer gedraaid', 'Na hoeveel keer gedraait mag het nummer uit de categorie worden gehaald?', '');

PAL.LockExecution;
Q := Query('SELECT * FROM category', [], False);
//resultaten opslaan in array
Q.First;
while not Q.EOF do
begin
   Msg :=  Msg+'Keuze: '+IntToStr(Q['ID'])+' | Categorie: ' + Q['name']+ #13#10;
   Q.Next;
end;
Q.Free;
PAL.UnLockExecution;

// laat een keuze maken vanuit de category ID
CatID := InputBox('Categorie opvragen', 'Maak een keuze uit categorieID waar de nummers mogen worden verwijderd!'+ #13#10 + #13#10 +Msg, '');

Q := Query('SELECT COUNT(*) aantal FROM categorylist c JOIN songlist s ON c.songID = s.ID  WHERE categoryID = :categorie AND s.count_played >= :keuze', [CatID, nrDel], True);

Aantal := Q['aantal'];

ShowMessage(IntToStr(Aantal)+' nummers worden er verwijderd uit de gekozen categorie!');
//hier gaat het gebeuren
ExecSQL('DELETE c FROM categorylist c JOIN songlist s ON c.songID = s.ID WHERE c.categoryID = :categorie AND s.count_played >= :keuze', [CatID, nrDel]);
Mocht je de aantallen al weten en de categoryID ook al, dan kun je de PAL verkorten in 1 zin.
In onderstaande voorbeeld het ik categoryID van 4 gebruikt en met meer dan 400 keer gespeeld.

Code: Selecteer alles

ExecSQL('DELETE c FROM categorylist c JOIN songlist s ON c.songID = s.ID WHERE c.categoryID = 4 AND s.count_played >= 400', []);
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Afbeelding
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: Remove na >3 keer draaien

Ongelezen bericht door Kees »

Top Wout, het werkt PERFECT.
Super bedankt !!
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: Remove na >3 keer draaien

Ongelezen bericht door Kees »

Het tweede korte script werkt perfect.
Het eerste script ook als je maar een paar categorieën hebt.
Bij veel categorieën kun je het nummer onderaan niet invullen.
Scrollen lukt niet.
Uitdaging ?? :? :lol:
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: Remove na >3 keer draaien

Ongelezen bericht door Wout »

Nee hoor, als je regel 18 verander in onderstaande dan kan er meer naast elkaar worden gezet.

Code: Selecteer alles

Msg :=  Msg+'('+IntToStr(Q['ID'])+')-->' + Q['name']+ #09;
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Afbeelding
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: Remove na >3 keer draaien

Ongelezen bericht door Kees »

Bijna, kom nog ruimte te kort.
Er staan heel veel categorieën in SAM.
Heeeeeeeeeel veel. :D :D
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: Remove na >3 keer draaien

Ongelezen bericht door Wout »

Voor heul veul categorieën. En anders wordt het opzoeken via SQL-editor (HeidySQl, PHPmyAdmin, MySQL admin)

Code: Selecteer alles

//ID zoekert op categorie
PAL.loop := False;

var Q : TDataSet;
var Msg: String;

PAL.LockExecution;
Q := Query('SELECT * FROM category', [], False);
Q.First;
while not Q.EOF do
begin
   Msg :=  Msg+'ID='+IntToStr(Q['ID'])+'->' + Q['name']+' || ';
   Q.Next;
end;
Q.Free;
PAL.UnLockExecution;

ShowMessage(Msg);
Misschien is het opslaan van een TXT-file ook een oplossing, weet niet dat PAL dat ondersteund.
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Afbeelding
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: Remove na >3 keer draaien

Ongelezen bericht door Kees »

Ik heb ook deze nog, daar kan ik in scrollen..
Category-id.PAL

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 ;
Kan dan die van jou gebruiken i.s.m. met deze.
Er wordt een oude vierkant monitor gebruikt dus blijft het aantal categorieën in beeld krijgen een probleem.
Plaats reactie
  • Vergelijkbare Onderwerpen
    Reacties
    Weergaves
    Laatste bericht