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.

Zuletzt geändert: 2023-01-10 20:08:32 +0100 CET: init