staging.inyokaproject.org

Dateien aus Playlist (m3u) auslesen, samt Cover in Ordner kopieren und umwandeln

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Mein minimalistischer Vorschlag sieht so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh

[ -z "$DEBUG" ] || set -x

set -e

ext=.mp3
tmp=$(mktemp -d)

while read -r line; do
  [ -z "${line###*}" ] && continue

  if [ ! -f "$line" ]; then
    echo "WARNING: no file $line" >&2
    continue
  fi

  target="$tmp/${line%.*}.$ext"
  echo ffmpeg -i "$line" -y -acodec libmp3lame -qscale:a 0 "$target"
done <"$1"

rm -rf "$tmp"

Was noch fehlt ist das Verschieben an den Zielort (mittels puddletag?).

motu23

(Themenstarter)

Anmeldungsdatum:
26. April 2008

Beiträge: 184

Im Moment funktioniert es mit dem Skript von dingsbums wie folgt:

1. ich speichere die Playlist als m3u im Verzeichnis temp

2. ich wechsle in der Konsole ins Verzeichnis temp

3. ich starte das Skript

3.1 die mp3 und flac gemäss der Playlist sowie das folder.jpg werden mit der ursprünglichen Verzeichnisstruktur (Ordner und Unterordner) ins Verzeichnis temp kopiert

3.2 die flac werden in mp3 konvertiert

3.3 die kopierten flac werden gelöscht (die "ursprungs" mp3 und flac dürfen nicht gelöscht oder geändert werden)

4. ich verschiebe die Ordner "Genre" (mit den [konvertierten] mp3) ins Verzeichnis temp, da die gesamte Ordnerstruktur übernommen wird und auf dem Zielmedium (USB-Stick) die ersten Ordner jeweils das Genre sein sollen (mnt/musik/flac bzw. mnt/musik/mp3 wird nicht benötigt)

Ordnerstruktur ist wie folgt:

mnt/musik/flac/genre1/artist/album
mnt/musik/flac/genre2/artist/album
...
mnt/musik/mp3/genre1/artist/album
mnt/musik/mp3/genre2/artist/album
...

Hinweis: Schritt 4 könnte auch mit puddletag vorgenommen werden; das manuelle Verschieben in Nautilus geht jedoch sehr zügig

5. ich passe Playlisten, die auch auf das Zielmedium sollen, an (mnt/musik/flac bzw. mnt/musik/mp3 aus dem Pfad entfernen und die Dateiendung flac durch mp3 ersetzten)

Ginge dies mit deinem Skript auch? Müsste ich da in der Konsole ebenfalls in das Zielverzeichnis wechseln? Könnte in deinem Skript die folgende Zeile wie folgt angepasst werden, damit wav erstellt werden?

echo ffmpeg -i "$line" -y -acodec libmp3lame -qscale:a 0 "$target"

nach

echo ffmpeg -i "$line" -y -sample_fmt s16 "$target"

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

motu23 schrieb:

Ginge dies mit deinem Skript auch?

Es fehlt noch das Kopieren an den Zielort, wie geschrieben. Das andere Hin- und Herkopieren ist m.E. über. Ich kann es aber nicht im Detail anschauen, weil keine Zeit.

Müsste ich da in der Konsole ebenfalls in das Zielverzeichnis wechseln?

Nein, Du musst lediglich den Pfad zur Playlist als erstes Argument übergeben

Könnte in deinem Skript die folgende Zeile wie folgt angepasst werden, damit wav erstellt werden?

Erst mal muss das echo weg, damit wirklich etwas getan wird. Dann: schau Dir an, wie $target belegt wird. Du könntest noch eine case-Verzweigung auf der Extension einfügen, falls Du verschiedene Kommandozeilen pro Zieltyp brauchst.

1
2
3
4
5
case "$ext" in
.mp3) ffmpeg -i "$line" -y -acodec libmp3lame -qscale:a 0 "$target" ;;
.wav) ffmpeg -i "$line" -y -sample_fmt s16 "$target" ;;
*) echo "ERROR: unknown extension: $ext" >&2; exit 1 ;;
esac
Antworten |