Durchnummerierung innerhalb von Hörbuchkapiteln

Guten Abend,

Ich habe vor, ein Hörbuch noch feiner zu taggen, als es eh schon ist. Mein Problemkind ist ein Hörbuch mit 26 CDs. Die Titel sind dank freedb ordentlich getaggt (yeah!), jedoch sind die einzelnen Kapitel des Buchs in mehrere Tracks unterteilt.

001 - Kapitel am Berg
002 - Kapitel am Berg
003 - Kapitel am Berg
004 - Szene am Fluss
005 - Szene am Fluss
...
287 - Showdown um Zwölf
288 - Showdown um Zwölf

Mein Plan ist nun, dass alle Kapitel nochmal mit neuen Nummerierungen, beginnend mit jedem Kapitel versehen sind. So soll es nachher aussehen:

001 - Kapitel am Berg 1
002 - Kapitel am Berg 2
003 - Kapitel am Berg 3
004 - Szene am Fluss 1
005 - Szene am Fluss 2
...
287 - Showdown um Zwölf 1
288 - Showdown um Zwölf 2

Ich habe überlegt, mit if-Abfragen zum letzen Buchstaben des Titels zu arbeiten, oder mit der Länge des Titels - wenn der sich ändert, setze Counter auf Eins zurück und nummeriere weiter. Jedoch, geht das? Und wenn ja, wie?

Natürlich kann man auch jedes einzelne Kapitel für sich markieren, und immer einen neuen Counter einsetzen, allerdings ist das bei 300 Tracks nun nicht mehr allzu praktikabel. Vorallem, weil noch knappe 10 Bücher fehlen...

Gibt es dafür einen Befehl, oder zwei kombinierte? Für heute Abend habe ich aufgegeben, wenn jedoch jemand einen hilfreichen Tip hätte, wäre ich sehr dankbar.

Beste Grüße,
Sebastian

MP3tag vergleicht keine Dateien untereinander. Von daher kannst du nicht checken, ob der vorige Titel noch so ist wie der aktuelle.
Aber du kannst eine Aktion bauen, die eine Nummer anfügt:
Tag-Feld formatieren für TITLE
Format-String: %title% %_counter%

Da markierst du immer die, die zusammengehören (und in der richtigen Reihenfolge stehen) und lässt die Aktion laufen. Der Zähler wird für jeden Aktionsstart zurückgesetzt.

Du musst einen Umweg gehen über eine Export-Datei, und danach die Werte importieren.

01: $filename($getEnv('USERPROFILE')'\Desktop\Mp3tag.Chapter.Episode.Import.txt',UTF-8)$puts(

02: )$loop(1,1)$puts(crlf,$char(13)$char(10))$puts(br,'{br}')$loopend()$replace(
03:
04: $loop($num(%TRACK%,4))$replace(
05: $puts(Chapter,$if($neql($get(Title),%TITLE%),$add(1,$get(Chapter)),$get(Chapter)))
06: $puts(Episode,$if($neql($get(Title),%TITLE%),0,$get(Episode)))
07: $puts(Episode,$add(1,$get(Episode)))
08: $puts(Title,$if($neql($get(Title),%TITLE%),%TITLE%,$get(Title)))
09:
10: '"'$get(Chapter)'"|"'$get(Episode)'"|"'%_path%'"'$get(br)
11:
12: ,$get(crlf),,$get(br),$get(crlf))$loopend()
13: ,$get(crlf),,$get(br),$get(crlf))

Beispiel für die Textdatei Ausgabe ...
"1"|"1"|"T:\Hörbuch\001 - Kapitel am Berg.mp3"
"1"|"2"|"T:\Hörbuch\002 - Kapitel am Berg.mp3"
"1"|"3"|"T:\Hörbuch\003 - Kapitel am Berg.mp3"
"2"|"1"|"T:\Hörbuch\004 - Szene am Fluss.mp3"
"2"|"2"|"T:\Hörbuch\005 - Szene am Fluss.mp3"
"3"|"1"|"T:\Hörbuch\287 - Showdown um Zwölf.mp3"
"3"|"2"|"T:\Hörbuch\288 - Showdown um Zwölf.mp3"

Diese Textdatei importieren mit Konverter "Textdatei - Tag".
Formatstring: "%CHAPTER%"|"%EPISODE%"|"%_PATH%"

Die Dateinamen neu schreiben mit den angehängten Episode-Nummern.

Siehe auch dort ..
/t/16649/1

DD.20160314.0856.CET, DD.20160315.1833.CET

Hallo,

Danke, ohrenkino, dieser Befehl hilft fürs erste weiter. Das wird zwar immernoch mit Fleißarbeit verbunden sein, aber es erleichtert die Arbeit trotz alledem um einiges. Sehr gut :slight_smile:

Leider reichen meine Kenntnisse nicht aus, um die Befehle aus dem Skript zu verstehen, aber ich werde mich mal dransetzen, das nachvollziehen und versuchen es anzuwenden. Danke auch dir, DetlevD.

Aus dem Ausgabebeispiel kann ich dann die zweite Variable "$get(Episode)" entnehmen, bzw. deren Wert am Ende des Dateinamens anfügen? WIe ich das erreiche, versuche ich dann aus der pdf zu entnehmen. Das kriege ich bestimmt irgendwie hin, mit genug Hirnschmalz, Kaffee und Zeit.

Ich bin euch beiden sehr dankbar für die schnelle und kompetente Hilfe!
Beste Grüße,
Sebastian