Jamendo FLAC Download
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.
Hintergrund
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.
Verwendung des Scripts
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
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
Künstliches Limit
Da der Download dieser Dateien nicht limitert zu sein scheint - im Gegensatz zu den Ogg-Downloads - wurde hier dasselbe Limit künstlich für wget gesetzt wie auch bei Ogg. 700KiB/s.