Ok, es hat in den Fingern gejuckt...
Da ich ein Synology NAS im Einsatz habe, hier ein Shell-Script, das wahrscheinlich nur auf ebendiesem funktioniert. Keine Gewähr auf irgendetwas. Wenns explodiert, ich habs gesagt...
Vorab:
Ich hab meine Playlisten substituiert, á la:
<substitute>
<from>special://videoplaylists</from>
<to>smb://IP-ADRESSE-SERVER/PFAD-ZU-XBMC/playlists/video/</to>
</substitute>
#!/bin/sh
cd /volume1/public/XBMC/playlists/video/_RND # MEIN lokaler Pfad auf dem NAS, der die Playlisten beherbergen soll. Zwecks Substitution, s.o.
tmpfile="XBMC_RND.tmp" # Temporäre Datei, die den Verzeichnisinhalt auffängt.
listfile="XBMC_RND" # Name der Playlisten.
ext=".m3u" # Erweiterung der Playlisten.
/opt/bin/find /volume1/ORDNER_AN_DIE_FREUDE/ ! -iwholename '*@eadir*' \( -iname "*.avi" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mpg" \) | head -1000 > $tmpfile # finde alle Dateien, die mit "-iname = bla" enden, aber nichts, was den Verzeichnisnamen "*@eadir*" enthält.
/bin/sed 's/'\\/volume1'/'smb\:\\/\\/SERVERNAME'/g' -i $tmpfile # Mache aus lokelen Dateien auf dem NAS, für XBMC via Samba Freigaben erreichbare Dateien. (Vorraussetzung ist, das XBMC den Pfad erreichen kann. Ich hab das getestet, indem ich die "current" Playlist von XBMC gespeichert habe und mir die enthaltenen Pfade angeschaut habe)
nlines=`cat $tmpfile |wc -l` # Zähle gefundenen Ergebnisse.
for i in 1 2 3 4; do # Schleife, um n Playlisten zu erzeugen. 1 2 3 4 5 6 wäre sechs mal.
echo "#EXTM3U" > $listfile$i$ext # Schreibt den Kopf der Playlist. Optional.
line=`expr $RANDOM % $nlines` # Zufällige Zeile errechnen...
head -n$line $tmpfile |tail -n10 >> $listfile$i$ext # tail -n bestimmt die Anzahl der Zeilen pro Playlist
#chown admin:users $listfile
#chown root:root $listfile
chmod 777 $listfile$i$ext
echo $i # Modernste grafische Ausgabe
done # Schleife vorbei.
rm -rf $tmpfile # TMP Datei löschen
Alles anzeigen
Nachdem das Script gelaufen ist, habe ich 5 Playlisten namens XBMC_RND1.m3u, XBMC_RND2.m3u u.s.w. auf die ich innerhalb von XBMC zugreifen kann.
Leider heissen die Playlisten dort alle gleich, aber nunja... Ist ja eh ne Überraschung, was innerhalb der Playlisten angezeigt wird 8-)
Nochetwas zur Logik: Es gibt keine!
Aber zum Ablauf vielleicht: Das Skript schreibt eine temporäre Datei auf die Platte des NAS mit dem Inhalt des zu durchsuchenden Verzeichnisses. diese Liste, welche auf 1000 Zeilen gekürzt wird, wird dann zufällig angesprungen und 10 in Folge kommende Einträge aus Ihr entnommen und in eine Playlist geschrieben. Das gleiche geschieht 4 mal.
Wie ich das ganze aber eleganz innerhalb von XBMC lösen könnte, würde mich dennoch interessieren...