m3u8-Dateien per Script in m3u umbennen inkl. Suchen/Ersetzen

powermaniaxx

Benutzer
Mitglied seit
26. Nov 2015
Beiträge
99
Punkte für Reaktionen
7
Punkte
8
Also der Code

Code:
for pl in *.m3u8
  do iconv -f UTF-8 -t ASCII//TRANSLIT "$pl" > "${pl%\.m3u8}.m3u8"
  echo "converted $pl"
done

funktioniert, Inhalt ist nur leer, wenn man den Code einzeln ausführt. Würde ja reichen, wenn er nach dem erstellen in den Ausgabeordner die Dateien nochmals umcodiert, falls es nicht direkt mit der Erstellung klappt.
 
Zuletzt bearbeitet:

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
funktioniert, Inhalt ist nur leer, wenn man den Code einzeln ausführt.
Mitdenken ist aber schon erlabut an dieser Stelle :D

Wenn das mit diesem Befehl nun klappen sollte, dann hast du doch eigentlich die Lösung schon vor Augen.

Dann sollte das Script wie folgt aussehen.
Anstelle von dem Copy Befehl, gleich iconv verwenden.
Code:
#!/bin/bash

OLD_IFS=$IFS
IFS=$'\n'

source=/volume1/Sicherung/PlaylistPoweramp
target=/volume1/Sicherung/PlaylistAuto

for f in `find "$source" -type f -regex '.*\.[mM]3[uU]8$' | sort`; do

  source_filename=`basename "$f"`

  target_filename="${source_filename%.m3u8}.m3u"

  iconv -f UTF-8 -t ASCII//TRANSLIT "$f" > "$target"/"$target_filename"

  sed -i -e 's/Music/Musik/g' "$target"/"$target_filename"
  sed -i -e 's/3132-3363//g' "$target"/"$target_filename"

done

IFS=$OLD_IFS

exit 0
 
  • Like
Reaktionen: powermaniaxx

powermaniaxx

Benutzer
Mitglied seit
26. Nov 2015
Beiträge
99
Punkte für Reaktionen
7
Punkte
8
Ja, mit dem Denken wird nach einem langen Arbeitstag dann dich schon etwas schwierig :)

Jetzt funktioniert es wie gewünscht, ich danke dir für die mega Hilfe. iconv erstellt sozusagen die Dateien mit der richtigen Kodierung. Bin was so etwas betrifft nur Laie mit ein wenig Grundkenntnissen. Danke danke.

Mit fällt aber noch ein, ich müsste doch ein paar Stellen entfernen in der Playlist, da mein Auto diese nicht lesen kann.

Code:
#EXT-X-RATING:5
/Musik/Electro, EBM, Industrial,Synthpop/Absurd Minds/(2000) Absurd Minds - Brainwash (MCD)/01 - Brainwash.mp3
#EXT-X-RATING:5
/Musik/Electro, EBM, Industrial,Synthpop/Absurd Minds/(2000) Absurd Minds - Brainwash (MCD)/02 - Venture Inward 99.mp3

Wie ich "#EXT-X-RATING:5" wegbekomme, ist noch einfach, schwer wirds mit der Leerzeile, die bleibt, die muss nämlich weg.

Code:
/Musik/Electro, EBM, Industrial,Synthpop/Absurd Minds/(2000) Absurd Minds - Brainwash (MCD)/02 - Venture Inward 99.mp3

/Musik/Electro, EBM, Industrial,Synthpop/Absurd Minds/(2000) Absurd Minds - Brainwash (MCD)/03 - Brainwash (Empty Head Mix Von Pierrepoint).mp3

Hast du da eine Idee?

Has
 
Zuletzt bearbeitet:

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Hast du da eine Idee?
Hier der Befehl um alle Leerzeilen in einer Datei zu entfernen.

sed -i '/^$/d' file.txt

Du könntest aber auch das "#EXT-X-RATING:5" anstelle von
sed -i -e 's/"#EXT-X-RATING:5"//g' file.txt hiermit versuchen sed -i '/"#EXT-X-RATING:5"/d' file.txt dann werden die Zeilen gleich gelöscht und es bleiben keine Leerzeilen übrig.
 
Zuletzt bearbeitet:

powermaniaxx

Benutzer
Mitglied seit
26. Nov 2015
Beiträge
99
Punkte für Reaktionen
7
Punkte
8
So?
Code:
 sed -i '/"#EXT-X-RATING:5"/d' "$target"/"$target_filename"
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Ja so hätte ich gedacht.
Wie hast du es denn vorher mit sed entfernt?
Zeig doch mal. Ist es so wie ich es erwähnt habe?

Edit:
Ich habe es gerade selbst einmal ausprobiert. Und so funktionert es:
sed -i '/#EXT-X-RATING:5/d' "$target"/"$target_filename"
 
Zuletzt bearbeitet:

powermaniaxx

Benutzer
Mitglied seit
26. Nov 2015
Beiträge
99
Punkte für Reaktionen
7
Punkte
8
Mega, jetzt funktioniert alles (y) Nochmals vielen lieben Dank, hast mir sehr geholfen.

Code:
#!/bin/bash

OLD_IFS=$IFS
IFS=$'\n'

source=/volume1/Sicherung/PlaylistPoweramp
target=/volume1/Sicherung/PlaylistAuto

for f in `find "$source" -type f -regex '.*\.[mM]3[uU]8$' | sort`; do

  source_filename=`basename "$f"`

  target_filename="${source_filename%.m3u8}.m3u"

  iconv -f UTF-8 -t ASCII//TRANSLIT "$f" > "$target"/"$target_filename"

  sed -i -e 's/Music/Musik/g' "$target"/"$target_filename"
  sed -i -e 's/3132-3363//g' "$target"/"$target_filename"
  sed -i '/#EXT-X-RATING:5/d' "$target"/"$target_filename"
  sed -i '/#EXT-X-RATING:4/d' "$target"/"$target_filename"
  sed -i '/#EXT-X-RATING:3/d' "$target"/"$target_filename"
  sed -i '/#EXT-X-RATING:2/d' "$target"/"$target_filename"
  sed -i '/#EXT-X-RATING:1/d' "$target"/"$target_filename"
  sed -i '/#EXT-X-RATING:0/d' "$target"/"$target_filename"

done

IFS=$OLD_IFS

exit 0
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Mega, jetzt funktioniert alles (y) Nochmals vielen lieben Dank, hast mir sehr geholfen.
Das freut mich zu hören :)

Du kannst die 6 Zeilen zum Entfernen des Ratings auch zu einer einzigen mit einem regulären Ausdruck zusammenfassen.
sed -i '/#EXT-X-RATING:[0-5]/d' "$target"/"$target_filename"
 
  • Like
Reaktionen: powermaniaxx


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat