Navigation
Es gibt bei Jamendo Stücke auch im FLAC-Format zum Herunterladen, ganze Alben leider nicht.
Dieses Script verwendet als Angabe einen Dateinamen, findet anhand von Metadaten die Track-ID des Stücks bei Jamendo heraus, lädt das Stück im FLAC-Format herunter und speichert es entsprechend unter dem richtigen Dateinamen ab.
Für das Herunterladen wird der Dateiname xyz.temp verwendet, damit das Script bei einer abgebrochenen Datei und einem erneuten Aufruf diese erneut herunterlädt bzw. bereits existierende Dateien nicht erneut läst.
Einen Artikel im Blog zu diesem Thema gibt es hier.
Tipp: Ein anderes Script zum Herunterladen des Albums ohne dem Umweg über die Ogg-Dateien gibt es unter https://github.com/adiblol/audiotools/blob/master/jamendo-dl.
Basierend auf den bereits heruntergeladenen .ogg-Dateien bzw. deren Archiven sollten die entsprechenden FLAC-Dateien heruntergeladen werden. Daher benötigt dieses Script schon heruntergeladene .ogg-Dateien auf der Platte, aus denen die Metadaten ausgelesen werden können.
Das Script erwartet als Parameter immer einen einzelnen Dateinamen.
find /daten/Music_Free/ -type f -iname "*.ogg" -print0 | xargs -0 -L 1 ./reload_flac.sh
Falls diese Zeile mehrfach aufgerufen wird, werden die bereits fertigen Dateien nicht erneut heruntergeladen; nicht fertige Dateien (*.temp) werden erneut heruntergeladen.
Bestehende Dateien werden nicht gelöscht - dort (.ogg) sind Metadaten enthalten, die in den FLAC-Dateien wohl nicht drin sind.
Das Script kann man bestimmt besser und effizienter machen, aber es funktioniert :)
#!/bin/bash if [ $# -lt 1 ]; then echo -e -n "Usage $0 /path/to/file\n" exit 0 else filename="${1}" _dirname=$(dirname "${filename}") fi case "${filename##*.}" in ogg) _basename=$(basename "$filename" .ogg) _geturl=$(ogginfo "$filename" | sed -n -r -e 's#WOAF=.*/track/(.*)$#https://api.jamendo.com/get2/stream/track/redirect/\?id=\1\&streamencoding=flac#p'|tr -d ' ') ;; mp3) _basename=$(basename "$filename" .mp3) #_geturl=$(mp3info "$filename" | sed -n -r -e 's#WOAF=.*/track/(.*)$#https://api.jamendo.com/get2/stream/track/redirect/\?id=\1\&streamencoding=flac#p'|tr -d ' ') echo "Not yet possible for mp3 files..." exit 2 ;; *) echo "Not a supported file type." exit 1 ;; esac _newfile="${_basename}.flac" if [ -f "${_dirname}/${_newfile}" ]; then echo "FLAC already exists: \"${_dirname}/${_newfile}\"" exit 3 else wget --limit-rate=700k ${_geturl} -O "${_dirname}/${_newfile}.temp" #use .temp filename and mv ... wegen Abbruch if [ $? -le 0 ]; then mv "${_dirname}/${_newfile}.temp" "${_dirname}/${_newfile}" else echo "FLAC not available." rm "${_dirname}/${_newfile}.temp" fi fi