Das folgende Script habe ich bei mir unter ~/bin/randomAlbum liegen. Es ermöglicht es mit Clementine Musik albenweise wiederzugeben, d.h. es wählt aus der Sammlung ein Album zufällig aus und beginnt die Wiedergabe. Neigt sich das Album dem Ende entgegen, wird automatisch das nächste Album geladen.
#!/bin/bash
function atEnd(){
LEN=$(qdbus org.mpris.clementine /TrackList GetLength)
if [ $LEN -eq 0 ]; then
loadAlbum
LEN=$(qdbus org.mpris.clementine /TrackList GetLength)
fi
CURRENT=$(qdbus org.mpris.clementine /TrackList GetCurrentTrack)
if [ $CURRENT -eq -1 ]; then
qdbus org.mpris.clementine /Player Play
sleep 5
CURRENT=$(qdbus org.mpris.clementine /TrackList GetCurrentTrack)
fi
CURRENT=$(($CURRENT+1))
DIST=$(($LEN-$CURRENT))
if [ $DIST -lt 5 ]; then
loadAlbum
fi
if [ $CURRENT -gt 11 ]; then
for I in $(seq 0 10); do
qdbus org.mpris.clementine /TrackList DelTrack 0 2> /dev/null
done
fi
}
function loadAlbum(){
ALBUM=""
while [ "$ALBUM" = "" ]; do
ALBUM=$(echo "select album from songs order by random() limit 1;" | sqlite3 /home/srichter/.config/Clementine/clementine.db)
done
FILES=$(echo 'select filename from songs where album="'$ALBUM'" order by disc,track;' | sqlite3 /home/srichter/.config/Clementine/clementine.db)
for FILE in $FILES; do
FILE=$(echo $FILE | echo -e $(sed 's/+/ /g; s/%/\\x/g'))
qdbus org.mpris.clementine /TrackList AddTrack "$FILE" 0 >/dev/null 2>&1
done
}
if [ $# -lt 1 ]; then
nohup randomAlbum hidden > /dev/null &
else
while [ true ]
do
atEnd
sleep 10
done
fi
Neuen Kommentar hinzufügen