staging.inyokaproject.org

Skripte/flac2mp3

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Skripte/flac2mp3.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Oh, das geht noch kürzer und robuster für Sonderzeichen in Dateinamen:

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

# Convert a folder of .flac files to another folder
# with .mp3 files.

test -z "$DEBUG" || set -x

export flac_dir="${1:-/archive/media/flac}"
export mp3_dir="${2:-/archive/media/mp3}"

# number of cores i.e. parallel jobs
cores=4

# ---- main ---------------

( cd "$flac_dir" && find -type f -name '*.flac' -print0 ) | xargs -r0 -P $cores -n 1 sh -${DEBUG:+x}c '
mp3="$mp3_dir/${1%.*}.mp3"
flac="$flac_dir/$1"

if ! [ "$mp3" -nt "$flac" ]; then
  echo "from $flac to $mp3"
  mkdir -p "${mp3%/*}"
  #nice -n 15 flac -s -c -d "$flac" | nice -n 15 lame -S --vbr-new -V0 - "$mp3" 2>/dev/null
  nice -n 15 lame -S --vbr-new -V0 "$flac" "$mp3" 2>/dev/null
fi
' --

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

von "kompletter Mist" war in der Tat nie die Rede. Der Artikel ist "verbesserungswürdig" - was IMHO, wenn man sich mit der Materien auskennt bzw. ein Ziel hat, < 10 Minuten gedauert hätte.

Aber: wir machen das alle freiwillig hier. Wenn jemand diese 10 Minuten nicht hat oder haben will, dann ist das zu akzeptieren. Aber vielleicht hat ja wer anders die 10 Minuten ☺

Gruß, noisefloor

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

Hi,

rklm schrieb:

Poste ich das jetzt als zweites Skript auf der Seite?

besser wäre nur ein Skript - und das einigermaßen erklärt und nach Wiki-Referenz. Vom Artikel her sowas wie Skripte/pdf2mp3 zum Beispiel. Dass es immer mehrere Wege zum Ziel gibt ist bekannt - aber dafür gibt es GitHub und Konsorten 😉

Gruß BillMaier

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

BillMaier schrieb:

rklm schrieb:

Poste ich das jetzt als zweites Skript auf der Seite?

besser wäre nur ein Skript - und das einigermaßen erklärt und nach Wiki-Referenz.

OK, dann sucht Euch erst mal ein Skript aus. ☺

Vom Artikel her sowas wie Skripte/pdf2mp3 zum Beispiel.

Danke für den Hinweis!

pepre Team-Icon

Supporter
(Themenstarter)
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6474

rklms Script ist viel hübscher!

"xargs -P" war mir bis dato unbekannt. Sehr elegant. Danke! ☺

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

Gut, dann bin ich dafür, dass im Artikel hier rklms Skript beschrieben und erklärt wird. Wenn jemand Anmerkungen dazu hat, kann man die ja hier diskutieren.

Gruß BillMaier

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

BillMaier schrieb:

Gut, dann bin ich dafür, dass im Artikel hier rklms Skript beschrieben und erklärt wird. Wenn jemand Anmerkungen dazu hat, kann man die ja hier diskutieren.

OK, mache ich dann mal. Da das die erste Seite im Wiki ist, an der ich nicht nur kleine Änderungen mache, bitte auf die Finger klopfen, wenn irgendwas nicht passt oder unverständlich ist.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Done. Das Herunterladen funktioniert in der Baustelle nicht, korrekt?

Beforge Team-Icon

Ehemalige

Anmeldungsdatum:
29. März 2018

Beiträge: 2007

Hallo rklm,

wenn auf den nicht existenten Anhang Skripte/flac2mp3/flac2mp3 verwiest, funktioniert der Download (in der Baustelle) in der Tat nicht. Der Anhang kann ja erst an dieser Stelle existieren, wenn die Seite aus der Baustelle ins Wiki verschoben wurde. Im Moment liegt der Anhang noch unter Baustelle/flac2mp3/flac2mp3.

Deswegen ist es sinnvoll, auf Anhänge, die auf der selben Wikiseite liegen, nicht hart zu verweisen (Wikiseite/Anhang), sondern einfach nur auf den Anhang: Anhang oder ./Anhang. Da betrifft übrigens alle Anhänge, auch Bilder.

Hier wäre

[Anhang(flac2mp3, flac2mp3)]]

oder vor mir aus auch

[Anhang(./flac2mp3, flac2mp3)]]

korrekt.

Ich habe das jetzt mal im Artikel geändert.

Viele Grüße
Beforge

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Beforge schrieb:

Deswegen ist es sinnvoll, auf Anhänge, die auf der selben Wikiseite liegen, nicht hart zu verweisen (Wikiseite/Anhang), sondern einfach nur auf den Anhang: Anhang oder ./Anhang. Da betrifft übrigens alle Anhänge, auch Bilder.

Ja, ergibt natürlich total Sinn. Hätte ich auch selbst drauf kommen können. 🙄

Ich habe das jetzt mal im Artikel geändert.

Super! Ich hatte mich an einem anderen Artikel orientiert, in dem das so ist. ☺

Beforge Team-Icon

Ehemalige

Anmeldungsdatum:
29. März 2018

Beiträge: 2007

Gibt es leider oft hier im Wiki. Solange die Seite an der selben Stelle bleibt, ist das ja auch kein Problem. Probleme gibt es erst, wenn man eine Seite in die Baustelle, ins Wiki oder sonst wo hin verschiebt.

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

rklm schrieb:

Ich hatte mich an einem anderen Artikel orientiert, in dem das so ist. ☺

war. 😉 Danke für deinen Hinweis! Dafür gibt es ja das Wikiteam, in diesem Fall Beforge 👍

Was mir beim Überfliegen des Artikels auffällt: Es fehlt noch die Ubuntu-Version, für die das Skript getestet wurde. Kannst du die bitte noch ergänzen?

Ich schau gerne nochmal genauer drauf, komme aber momentan nicht dazu.

Gruß BillMaier

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

BillMaier schrieb:

Was mir beim Überfliegen des Artikels auffällt: Es fehlt noch die Ubuntu-Version, für die das Skript getestet wurde. Kannst du die bitte noch ergänzen?

Habe ich ergänzt

Ich schau gerne nochmal genauer drauf, komme aber momentan nicht dazu.

Jo, eilt ja nicht.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Hatte noch eine interessante Idee für eine alternative Übergabe des eingebetteten Skriptes.

pepre Team-Icon

Supporter
(Themenstarter)
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6474

Ich hab's mal für mich erweitert - vllt könnt ihr ja Teile davon gebrauchen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash

cores=$(nproc --all)
mp3_tags=1
dbg=""

while getopts "c:thd" opt; do
  case $opt in
    t) mp3_tags=0;;
    c) cores=$OPTARG;;
    d) dbg="x";;
    h)
      echo " "
      echo "Usage: flac2mp3 [source dir] [destination dir]"
      echo -e "\nOptions:\n"
      echo "  -t     without id3 tags"
      echo "  -c n   use n cores (default = all)"
      echo "  -d     debug mode"
      echo " "
      exit 0;;
    \?) echo -e "\nInvalid option: -$OPTARG\n" >&2; exit 1;;
  esac
done
shift "$((OPTIND -1))"

export mp3_tags
export flac_dir="${1:-/archiv/media/flac}"
export mp3_dir="${2:-/archiv/media/mp3}"

function enc_tags() {
  mp3="$mp3_dir/${1%.*}.mp3"
  flac="$flac_dir/$1"
  trap "rm -f '\''$mp3'\''; exit 1" INT TERM HUP
  if [ "$mp3" -nt "$flac" ] ; then
    echo "Already encoded: $mp3"
  else
    echo "Encoding: $mp3"
    mkdir -p "${mp3%/*}"
    if [ $mp3_tags -eq 1 ] ; then
      tx="--add-id3v2 --pad-id3v2 --ignore-tag-errors"
      ta=$(metaflac "$flac" --show-tag=ARTIST | sed s/.*=//g)
      tt=$(metaflac "$flac" --show-tag=TITLE | sed s/.*=//g)
      tl=$(metaflac "$flac" --show-tag=ALBUM | sed s/.*=//g)
      tg=$(metaflac "$flac" --show-tag=GENRE | sed s/.*=//g)
      tn=$(metaflac "$flac" --show-tag=TRACKNUMBER | sed s/.*=//g)
      ty=$(metaflac "$flac" --show-tag=DATE | sed s/.*=//g)
      nice -n 19 lame -S --replaygain-accurate --vbr-new -V0 ${tx} --ta "${ta}" --tt "${tt}" --tl "${tl}"  --tg "${tg:-12}" --tn "${tn:-0}" --ty "${ty}" "$flac" "$mp3" 2>/dev/null
    else
      nice -n 19 lame -S --replaygain-accurate --vbr-new -V0 "$flac" "$mp3" 2>/dev/null
    fi
  fi
}
export -f enc_tags

cd "$flac_dir"
find -type f -name '*.flac' -printf '%P\0' | sort -z | xargs -r0 -P $cores -n 1 bash -${dbg}c 'enc_tags "$@"' --

echo -e "\n\nDone.\n"