rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13127
|
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
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
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6493
|
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
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13127
|
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
Supporter
(Themenstarter)
Anmeldungsdatum: 31. Oktober 2005
Beiträge: 6474
Wohnort: Erlangen
|
rklms Script ist viel hübscher! "xargs -P" war mir bis dato unbekannt. Sehr elegant. Danke! ☺
|
BillMaier
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6493
|
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
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13127
|
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
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13127
|
Done. Das Herunterladen funktioniert in der Baustelle nicht, korrekt?
|
Beforge
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
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13127
|
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
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
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6493
|
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
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13127
|
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
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13127
|
Hatte noch eine interessante Idee für eine alternative Übergabe des eingebetteten Skriptes.
|
pepre
Supporter
(Themenstarter)
Anmeldungsdatum: 31. Oktober 2005
Beiträge: 6474
Wohnort: Erlangen
|
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"
|
|