Exportkonfiguration von Chapter zu TXT Datei

Hallo und einen wunderschönen Sonntag.

Ich möchte gerne in die Runde fragen, ob folgendes mit mp3tag möglich ist (Ohne ggf. Excel noch verwenden zu müssen).

Hintergrund: Chapter werden in eine TXT gespeichert.
Die Exportkonfiguration sieht aktuell so aus:

$filename(txt,utf-8)$loop(%_path%)%_length% | %chapter%
$loopend()

Ausgabe (Beispiel):
Die Namen: Kapitel_1, Kapitel_2, Kapitel_3 sind nur Beispiele der Kapitelbezeichnungen.

01:00 | 01 | Kapitel_1
01:00 | 02 | Kapitel_1
01:00 | 03 | Kapitel_1
00:40 | 04 | Kapitel_1
01:00 | 05 | Kapitel_2
01:00 | 06 | Kapitel_2
00:23 | 07 | Kapitel_2
01:00 | 08 | Kapitel_3
01:00 | 09 | Kapitel_3
01:00 | 10 | Kapitel_3
01:00 | 11 | Kapitel_3
00:19 | 12 | Kapitel_3

Es wäre jedoch super wenn folgende Ausgabe möglich wäre:

03:40 | 01 | Kapitel_1
02:23 | 05 | Kapitel_2
04:19 | 08 | Kapitel_3

Im Grunde eine vereinfachte Darstellung der jeweiligen Chapter,
wobei die "Länge" zusammengefasst und gleiche Kapitelbezeichnungen (außer jeweils eine)
entfernt werden.

Es wäre sehr hilfreich wenn jemand einen Vorschlag dazu hat, wie man dies
mit einem Skript hinbekommen kann.

Vielen Dank für eure Hilfe.
Gruß

wo kommen denn die Daten für die fortlaufende Nummer her? aus %track%?
Und da mir %chapter% benutzerdefiniert vorkommt ... ist da nur die 1 oder "Kapitel_1" drin gespeichert?

Ich würde nicht nach %_path% die Sortierung anlegen, sondern nach vermutlich %chapter% mit $loop(%chapter%,1)

$loop(%chapter%,1)$loop(%chapter%)$loopend()%_total_time% | $num(%track%,2) | %chapter%
$loopend()
1 Like

Hallo ohrenkino!

Die fortlaufende Nummern wurden per Skript nachträglich geändert, ansonsten würde für Kapitel_1
= fortlaufend 1, Kapitel_2 = fortlaufend 2 etc. stehen. %chapter% ist benutzerdefiniert, und stammt von %title% (dupliziert).
In %title bzw. %chapter% steht:
01 | Kapitel_1
...
02 | Kapitel_2
...
03 | Kapitel_3

Dein Vorschlag funktioniert auch (Vielen DANK!), jedoch "nur" wenn keine Zahl
01, 02, 03 bereits in %title% bzw. %chapter% für die Kapitelnamen mit aufgeführt sind.
Das | macht keine Probleme.

%_total_time% wird dann hinzugefügt, aber wie gesagt die Kapitelnamen erscheinen alle.
Leider gibt es ein weiteres Problem. Auch wenn die Track Nummern z.B. aufsteigend in mp3tag sind,
werden diese bei dem Export vollständig durcheinander geworfen. Somit stimmt auch die Reihenfolge der Kapitelnamen nicht mehr. Wie kann man die Sortierung z.B. aufsteigend beim Export mitgeben?

Warum das dann nicht funktioniert ist mir echt ein Rätsel.
Vielleicht noch eine Idee?

wenn auch nach %track% sortiert werden soll, dann müsste es werden zu:

$loop(%chapter%,1)$loop(%chapter%)$loop(%track%)$loopend()$loopend()%_total_time% | $num(%track%,2) | %chapter%
$loopend()

Und dann wäre es gut, wenn die Redundanzen aus den Daten verschwinden würden - wozu %chapter%, wenn das schon in %title% steht?

Es ist übrigens fast unmöglich, ein sinnvolles Skript zu entwickeln, wenn man nicht genau die Daten in den Feldern zu sehen kriegt.

Nochmals Danke für die Hilfestellung.

Ich habe es X-mal getestet, aber leider besteht der Fehler weiter.

Um es besser aufzuzeigen, habe ich Screenshots angefertigt.

So sieht die Schreibweise im Chapter aus:

Im Chapter steht bereits ein 01 | Kapitel_1 ... 12 | ..., und die Schreibweise muss weiter bestehen bleiben. Die gewünschten Änderungen werden nicht vollständig durchgeführt.

Nimmt man:

dann stimmt das Ergebnis.

Was könnte der Fehler im Skript sein?

$loop(%chapter%,1)$loop(%chapter%)$loop(%track%)$loopend()$loopend()%_total_time% | $num(%track%,2) | %chapter%
$loopend()

Du willst, dass nach "Kapitel x" gruppiert wird und alle gleichen zusammengefasst werden - nur: es gibt keine gleichen, da vor jedem "Kapitel x" eine eindeutige Nummer steht.
Du könntest jetzt entweder ein Feld wählen (TITLE?), wo wirklich nur "Kapitel x" drinsteht oder $regexp(%chapter%,^\d+ \| ,) statt nur %chapter% verwenden.
Das entfernt dann die führende Nummer und den Balken.

Ja, Ohrenkino Du hast vollkommen recht. Die Kapitelzahlen (01 | etc.) müssen vorher entfernt werden,
um gleiche Namen wieder zu bekommen (zwecks Gruppierung).

Es wäre hervorragend gewesen wenn das Skript einfach bis zum ersten | das ignorieren könnte,
dann wäre das Problem nicht (somit gleiche Namen) und die Gruppierung könnte erfolgen. Aber das scheint nicht möglich zu sein.

Deine geschätzten Tipps sind schon richtig und sehr hilfreich.

Aber auch wenn die Zahlen entfernt sind, werden beim Export die Tracknummern und somit die Kapitelnamen alle durcheinander geworfen, und sind nicht aufsteigend sortiert (Getestet bei z.B. max. 255 Chapter).

Bisher habe ich auch keine Lösung gefunden wie man z.B. eine Sortierung (sort) mitgegeben kann.

Eigentlich hatte ich genau für den Zweck diesen Ausdruck

vorgeschlagen

Geht denn

$loop($regexp(%chapter%,^\d+ \| ,),1)$loop($regexp(%chapter%,^\d+ \| ,))$loopend()%_total_time% | $num(%track%,2) | %chapter%
$loopend()
1 Like

Ja. Das funktioniert. - Jedoch die Track Nr' n. werden durcheinander gewürfelt.
Die Gruppierung ist aber in Ordnung.

Ich verstehe es nicht. Wenn doch die Kapitel aufsteigend gruppiert werden, dann kann es doch pro Kapitel nur 1 Track-Nr geben. Und die ist entweder zufällig oder jeweils die letzte.
Wenn nach TRACK sortiert wird, dann passt doch wieder die Sortierung nach %chapter% nicht, würde ich sagen.

Beispiel einer Ausgabe

00:02:48 | 26 | 26 | Titel1
00:00:38 | 29 | 29 | Titel2
00:02:53 | 33 | 33 | Titel3
00:02:19 | 30 | 30 | Titel4
00:02:10 | 01 | 01 | Titel5

26 | Titel1 steht im Chapter
und 26 ist die Track Nr.
30 | Titel4 z.B. steht im Chapter
und 30 ist die Track Nr.

Richtig wäre jedoch:

00:02:10 | 01 | 01 | Titel5
00:02:48 | 26 | 26 | Titel1
00:00:38 | 29 | 29 | Titel2
00:02:19 | 30 | 30 | Titel4
00:02:53 | 33 | 33 | Titel3

Die zweite Spalte muss aufsteigend sortiert, und darf nicht durcheinander sein.
Leider weiß ich auch nicht warum das nicht so ausgegeben wird.

Was tut sich denn mit

$loop($regexp(%chapter%,^\d+ \| ,),1)$loop($regexp(%chapter%,^\d+ \| ,))$loopend()$loop(%track%)%_total_time% | $num(%track%,2) | %chapter%$loopend()
$loopend()
00:01:00 | 26 | 26 
00:00:38 | 29 | 29 
00:01:00 | 33 | 33 
00:01:00 | 30 | 30 
00:01:00 | 01 | 01 
00:01:00 | 17 | 17 
00:01:00 | 54 | 54 

Hier wird auch alles durcheinander geworfen, und total_time stimmt gar nicht mehr.

Der vorherige Tipp war schon ziemlich nah, wenn die 2 Spalte "aufsteigend" ausgegeben wird, wäre das die Lösung.

was zeigt denn die 2. Spalte? TRACK oder CHAPTER?

Das sind die Track Werte "aufsteigend" in mp3tag.

00:01:00 | 26
26 = Track Wert

Ich kann dir nicht mehr weiterhelfen.
Meiner Ansicht nach weiß MP3tag am Ende der jetzt erzeugten Liste für 1 chapter nicht, welche weiteren chapter noch kommen und welches dann die niedrigste Tracknummer ist.

Ich weiß nicht, ob eine gruppierte Liste noch sortiert werden kann, jedenfalls fällt mir dazu nichts ein.

Ja, ich komme auch nicht weiter. Unzählige Tests nochmals getätigt, und alle
scheitern bei der Sortierung.

Vermutlich bleibt nur noch der Weg ggfs. die Sortierung über Excel durchzuführen.

Nochmals ein D A N K E für deine aufgebrachte Zeit und deiner großen Hilfe.
Gruß

Ich meine OK, auch wenn es immer keinen Wert hat, über den Sinn einer Nutzeranforderung zu reden: aber warum ist es wichtig, dass ausgerechnet TRACK aufsteigend sortiert wird, wo dann nur irgendeine Zahl drinsteht, die Kapitel können aber in beliebiger Reihenfolge erscheinen?
Denn in deinem Beispiel aus dem 1. Beitrag ist diese (für mich) komische Reihenfolge nicht ersichtlich.
Nach meinem Eindruck, könnte man auf TRACK komplett verzichten ...
Deshalb bitte ich um Aufklärung

Ich habe eine abschließende (externe) Lösung gefunden.

Wie erwähnt werden die TRACK Nummern nicht aufsteigend sortiert bei dem Export (Warum auch immer) . Das hat auch die folge das automatisch die Kapitelnamen nicht mehr in der Reihenfolge erscheinen, wie sie eigentlich sollten.

Meine Lösung ist nun diese:
Ich verwende dieses Skript (von Dir ohrenkino)

$loop($regexp(%chapter%,^\d+ \| ,),1)$loop($regexp(%chapter%,^\d+ \| ,))$loopend()%_total_time% | $num(%track%,2) | %chapter%
$loopend()

Weil die TRACK Nummer und gleichzeitig die Kapitelnamen nicht aufsteigend exportiert werden,
vielmehr durcheinander, verwende ich im Anschluss dies:

JSORT.BAT utility

sowie den Befehl:
JSORT export.txt /p 12 /I /N /o new.txt
und alles ist Gut.

P.s.
00:02:53 | 33 | 33 | Titel3
Titel3 (War nur ein Kapitelname und die 3 war / ist nicht relevant)