Eine Playlist ist lediglich eine Textdatei, in der Zeile für Zeile der Speicherort gesetzt ist:
../music/band a/1-song.mp3
../music/band a/2-song.mp3
usw...
Mit einem Script kann man die Play/Dateiliste auslesen und die Datei entsprechend löschen.
Es gibt allerdings einige Fallstricke:
- die erste Zeile muss entfernt werden, weil das der "Fileheader" der M3U-Playlist ist und dort kein Ziel zu einer Datei gespeichert ist, sondern nur #EXTM3U
- der Dateipfad ist relativ, ../music/usw.. also das ../ ist ausgehend vom Volume, auf dem sich die Musik befindet
- Ordner und Dateinamen mit Leer- und Sonderzeichen benötigen eine besondere Behandlung unter Linux/Unix
Gehen wir mal von aus, dass sich die Musik auf /volume2 befindet.
Die erste Zeile der Playlist entfernen ist einfach:
cat /volume2/music/playlists/delete.m3u | grep -v ^# > /volume2/music/del-tmp-1.txt
Den kompletten Dateipfad setzen ist auch noch einfach:
sed -e 's/^\.\./\/volume2\/music/g' /volume2/music/del-tmp-1.txt > /volume2/music/del-tmp-2.txt
Die Datei del-tmp-2.txt sieht dann so aus:
/volume2/music/band a/1-song.mp3
/volume2/music/band a/2-song.mp3
usw..
Eigentlich eine ideale Dateiliste zum abarbeiten. Trotzdem wird es jetzt kompliziert, weil eben Ordner und Dateinamen Leer- und Sonderzeichen enthalten können. Die Beispiele die ich jetzt auf die Schnelle gefunden habe, sind alle für die Bash. Das ist die Standard-Shell unter Linux. DSM nutzt allerdings busybox/ash als Shell. Die ist abgespeckt und dort funktionieren die Beispiele leider nicht, die ich jetzt auf die Schnelle fand.
Vielleicht weiß ja jemand anders Bescheid?