Fortlaufende Nummerierung vor best. Zeichen

Frohe Ostern,

bei klassischer Musik fehlt in den Datenbanken leider regelmäßig die Nummerierung der Satzbezeichnungen in den Titeln, z.B so:

Piano Quintet in F Minor, op.34 - Allegro non troppo
Piano Quintet in F Minor, op.34 - Andante, un poco adagio
Piano Quintet in F Minor, op.34 - Scherzo. Allegro

Ich wünsche mir folgendes:
Piano Quintet in F Minor, op.34 - 1. Allegro non troppo
Piano Quintet in F Minor, op.34 - 2. Andante, un poco adagio
Piano Quintet in F Minor, op.34 - 3. Scherzo. Allegro

Könnte mir bitte jemand einen regex-string basteln, mit dem ich die fortlaufende Nummerierung nach dem letzten '- ' (Bindestrich u. Leerstelle) im Titel-Tag automatisieren kann?
Noch luxuriöser wäre es, wenn in den verschiedenen Tracks eines Albums eine Überprüfung stattfinden würde, ob vor dem Bindestrich identische Titelnamen vorliegen. Wenn ja, soll die fortlaufende Nummerierung nur solange durchgeführt werden, bis ein eine Änderung kümmt und ab der Änderung (also mit Beginn eines neuen Werkes) die Nummerierung wieder mit Eins starten. Also so:

alt
Piano Quintet in F Minor, op.34 - Allegro non troppo
Piano Quintet in F Minor, op.34 - Andante, un poco adagio
Piano Quintet in F Minor, op.34 - Scherzo. Allegro
String Quartet in A Minor, op.51/2 - Allegro non troppo
String Quartet in A Minor, op.51/2 - Quasi menuetto, moderato. Allegro vivace
String Quartet in A Minor, op.51/2 - Allegro non assai

gewünscht:
Piano Quintet in F Minor, op.34 - 1. Allegro non troppo
Piano Quintet in F Minor, op.34 - 2. Andante, un poco adagio
Piano Quintet in F Minor, op.34 - 3. Scherzo. Allegro
String Quartet in A Minor, op.51/2 - 1. Allegro non troppo
String Quartet in A Minor, op.51/2 - 2. Quasi menuetto, moderato. Allegro vivace
String Quartet in A Minor, op.51/2 - 3. Allegro non assai

Den zweiten Weg braucht ihr aber nur anzugehen, wenn ihr Spaß am Knobeln habt oder es euch superflott von der Hand geht ;-). Schon mal herzlichen Dank!

Viele Eier,

palmino

Meines Wissens ist mit der gegebenen Arbeitsweise der Aktionen deine Anfrage nicht zu lösen.
Also muss ein Umweg gegangen werden über ein Exportskript, mit dem der notwendige Gruppenwechsel durchgeführt werden kann und das eine Eingabedatei erzeugt für den Konverter 'Textdatei - Tag', um schließlich die Inhalte im Tag-Feld TITLE zu ändern.

Exportskript:

$filename($getEnv('TEMP')'\20110424.palmino.txt',ANSI) $loop(%ARTIST%%ALBUM%) $loop($regexp(%TITLE%,'^(.+ - )(.+)$','$1')%TRACK%) $regexp(%TITLE%,'^(.+ - )(.+)$','$1')%_counter%'. '$regexp(%TITLE%,'^(.+ - )(.+)$','$2')'***'%_path% $loopend() $loopend()

Eventuell ist das Argument der ersten $loop() Funktion an die gegebene Datenhierarchie anzupassen.
Vielleicht so für 'verschiedene Tracks eines Albums mit identischen Titelnamen' ...

$loop(%ARTIST%%ALBUM%$regexp(%TITLE%,'^(.+ - )(.+)$','$1'))

Die mit dem Exportskript erzeugte Ausgabedatei ist gleichfalls Eingabedatei für den Konverter 'Textdatei - Tag'.

TITLE vorher:
String Quartet in A Minor, op.51/2 - Allegro non troppo
String Quartet in A Minor, op.51/2 - Quasi menuetto, moderato. Allegro vivace
String Quartet in A Minor, op.51/2 - Allegro non assai

TITLE nachher:
String Quartet in A Minor, op.51/2 - 1. Allegro non troppo
String Quartet in A Minor, op.51/2 - 2. Quasi menuetto, moderato. Allegro vivace
String Quartet in A Minor, op.51/2 - 3. Allegro non assai

DD.20110424.1515.CEST

Eine vielleicht bessere Alternative für das Exportskript:

$filename($getEnv('TEMP')'\20110424.palmino.2.txt',ANSI) $loop(%ARTIST%)$loop(%ALBUM%)$loop($regexp(%TITLE%,'^(.+ - )(.+)$','$1'))$loop(%TRACK%) $regexp(%TITLE%,'^(.+ - )(.+)$','$1')%_counter%'. '$regexp(%TITLE%,'^(.+ - )(.+)$','$2')'***'%_path% $loopend()$loopend()$loopend()$loopend()

DD.20110425.0512.CEST

Für den Import:

Konverter | Textdatei - Tag | ALT+4

Formatstring auswählen

Dateiname:
20110424.palmino.2.txt

Formatstring:
%TITLE%***%_path%

DD.20110425.1258.CEST

Wenn in der Konverter Vorschau angezeigt wird 'Zeile 1 konnte nicht geparst werden.', dann hat das keine negativen Folgen.
Diese Warnung wird angezeigt, weil das Exportskript leere Zeilen erzeugt.
Weil leere Zeilen keinen Inhalt haben, können sie nicht 'geparst' werden.
Man kann im Exportskript versuchen, die leeren Zeilen zu verhindern indem man alle Kommandos in einen Zeile schreibt und die wirklich notwendigen Zeilenwechsel besonders kodiert, aber dann wäre das Exportskript für Menschen nur noch sehr schwer zu lesen.
Erfreulicherweise überspringt der Konverter 'Textdatei - Tag' die leeren Zeilen und orientiert sich für die Zuordnung von Text zu Datei am mitgelieferten Dateipfad.

DD.20110426.0717.CEST

Hallo DetlevD,

vielen, vielen Dank für die Mühe!! Ich werde etwas Zeit brauchen, um mich da rein zu fuchsen, da ich bisher nicht mit Exportskripten gearbeitet habe. Ich melde mich demnächhst nochmal und gebe Rückmeldung.

Beste Grüße,

palmino

Hallo DetlevD,

dein erstes Script funktioniert wunderbar, ich bin begeistert!
Es gibt nur ein kleines Problem mit der exportierten Textdatei: Ich muss diese bei der Nachfrage, ob der Export angezeigt werden soll, händisch mit meinem Texteditor abspeichern, da diese sonst nicht (oder nur irgendwo temporär?) existiert. Oder ich bin zu doof, auf diese Temp-Datei zu verweisen, wie geht das bitte?

Viele Grüße und noch mal besten Dank,

palmino

Das höre ich gerne und ich freue mich, dass du es benutzen kannst.

Aber es funktioniert nicht, wenn sich mehrere Dateiengruppen in einem Ordner befinden, denn dann werden alle Dateien von 1 bis n nummeriert, ohne Berücksichtigung ihrer Gruppenzugehörigkeit.

Das zweite Exportskript ist besser geeignet, denn damit werden Dateiengruppen auch wirklich gruppenweise nummeriert, selbst wenn sich mehrere Gruppen in einem Ordner befinden.

Du kannst einen beliebigen Namen und Ort für die Ausgabedatei eintragen.
Für mich ist der TEMP Ordner immer ganz praktisch, was sich darin befindet hat keine lange Lebensdauer.

Wenn du in der Adresszeile des Windows Explorer eingibst:
%TEMP%
... dann wird dein TEMP Ordner angezeigt.

Wenn du in der Adresszeile des Windows Explorer eingibst:
%TEMP%\20110424.palmino.txt
... dann wird der Notepad Editor mit der Datei geöffnet.

Mp3tag beherrscht leider noch nicht in allen Dialogen die Unterstüzung von Umgebungsvariablen.
So musst du hier und da den Pfad zum temporären Ordner noch voll ausschreiben.

DD.20110416.1827.CEST

Klar, ich hatte mit beiden Scripten gespielt, diese dann aber in der Reihenfolge verwechselt. Danke für die Hilfe beim Abstreifen meiner Unwissenheit mit dem Temp-Ordner. Es ist doch immer wieder schön, wenn der Rechner tatsächlich das tut, was mich sich wünscht :wink:

Viele Grüße, palmino