Ik heb een methode gevonden om periodiek een random 100 afspeellijst te maken
Hier zijn de stappen:
- Maak een sql bestand met de code die je wilt uitvoeren om de lijst te krijgen
- Maak de lijst aan en bewaar het resultaat in de playlist m3u file, maak dat bekend aan Audiostation via synoindex -a commando
- Maak een script dat via psql het sql bestand uitvoert en bewaar het resultaat in de playlist m3u file
- Wanneer dat goed werkt, voeg het commando toe aan crontab
Hier zijn de scripts:
1) SQL voorbeeld - bewaar dit in een bestand bijvoorbeeld
/opt/etc/audiostation-stuff/random100.sql - pas het aan met je eigen code om nummers te 'excluden' via nog meer SQL statements.
select path from music
where
( duration >= 60 ) AND
( ( genre != 'Podcast' ) AND ( genre != 'Classical' ) AND ( genre != 'Kinderen' ) AND (genre != 'Luisterboek') AND (genre != 'Children\'s Music') )
order by RANDOM() limit 100;
2) script voorbeeld - bewaar dit in een ander bestand, bijvoorbeeld
/opt/etc/audiostation-stuff/random100.sh#!/bin/sh
# random100.sh
# this script will try to create a playlist with random songs, based on a SQL statement or file
# change the following values:
# BASE folder - this is were the SQLFILE is located and this script
BASE=/opt/etc/audiostation-stuff
# this is the output file - this is where the playlist resides in the filesystem
PLAYLIST=/volume1/music/playlists/random100.m3u
# Only change these values if your music library is located in another location
SEARCH="/volume1/music"
REPLACE=".."
# a better approach is to put the SQL statements into a file:
# there is more flexibility then and it is better readable
SQLFILE=$BASE/random100.sql
# run the command, but only when the playlist file already exists.
if [ -f $PLAYLIST ] ; then
# this is with the SQL statements from a file
if [ -f $SQLFILE ] ; then
/usr/syno/pgsql/bin/psql -P pager=off -A -q -t -f $SQLFILE mediaserver admin | sed "s#$SEARCH#$REPLACE#" > $PLAYLIST
fi
else
exit
fi
# you should add the PLAYLIST file one time to Audiostation with the following command
#synoindex -a $PLAYLIST
# you can add the following line to the file /etc/crontab to run this file once every day, but remove the '#' in front of it
#5 6 * * * root /opt/etc/audiostation-stuff/random100.sh
# when done, restart the cron process with the following command
#/usr/syno/sbin/synoservicectl --restart crond
3) zorg dat het script executeerbaar is:
chmod 755 /opt/etc/audiostation-stuff/random100.sh4) draai het script handmatig om te zien of het werkt
/opt/etc/audiostation-stuff/random100.sh - het resultaat moet zijn dat de playlist file is veranderd (in dit geval
/volume1/music/playlists/random100.m3u)
Wanneer je nog geen afspeellijst aan AudioStation hebt toegevoegd moet je dat nog doen via dit commando:
synoindex -a /volume1/music/playlists/random100.m3u
5) controleer of de verandering bij AudioStation komen door naar de AudioStation website te gaan en te kijken of de playlist is aangepast
6) voeg een regel toe aan de file
/etc/crontab om dit commando periodiek uit te voeren - zie het voorbeeld in het script, dat zal een maal per dag de file aanpassen, om 06:05 (vijf over 6 in de ochtend, elke ochtend)
5 6 * * * root /opt/etc/audiostation-stuff/random100.sh
7) herstart crontab via dit commando
/usr/syno/sbin/synoservicectl --restart crondBij mij werkt dit zoals beschreven en verandert de random lijst elke keer als de crontab regel wordt uitgevoerd. Als test deed ik dit elke 10 minuten en Audiostation geeft dat goed weer.
Let op 1 Het is wel belangrijk dat de lijst evenlang blijft. Omdat de playlist in de database staat als een lijst met 100 nummers, moet je die lengte intact houden. Verander je het aantal resultaten, dan moet je de lijst weghalen en opnieuw toevoegen via synoindex -d / synoindex -a
Let op 2 Een groot aantal stappen moet je doen als admin user (root), dat is niet anders. Met name de laatste twee die met crontab te maken hebben. Afhankelijk van de plek waar je de bestanden neerzet moet je ook sommige dingen als admin gebruiker doen. Zet de bestanden in je home folder of ergens op /volume1
maar zet ze niet in /usr/local of /var/tmp want dan zijn ze weg na een upgrade. In mijn voorbeeld staat alles in
/opt/etc/audiostation-stuff maar het kan ook in
/var/services/homes/kael/src ofzo
Ik hoop dat mensen er iets aan hebben, het was leuk om het uit te zoeken.
Laat weten als er iets niet klopt of onduidelijk is.