Ich gebe ein Beispiel:
Der Titel-Tag lautet: "Ludwig van Beethoven Symphonie Nr. 3 Es-Dur op. 55 Berliener Philharmoniker 3. Marcia funebre (Adagio assai)".
Hieraus soll werden:
KOMPONIST: "Ludwig van Beethoven", also die ersten drei durch Leerzeichen getrennten Wörter;
WERK (=CONTENTGROUP): "Symphonie Nr. 3 Es-Dur op. 55", also die nächsten sechs durch Leerzeichen getrennten Wörter;
Orchester (=ORCHESTRA): "Berliener Philharmoniker", also die nächsten beiden durch Leerzeichen getrennten Wörter;
schließlich soll als Titel bleiben: "Marcia funebre (Adagio assai)", also "3." weg, dann bleibt der Rest der Zeichenkette stehen.
Ich hoffe, dass das mit mp3tag geht. Aus der Bedienungsanleitung kann ich es nicht erkennen.
Wenn das ein durchgängiges Muster ist mag das gehen.
Aber da der Titel ja keinerlei erkennbare Trennzeichen hat, habe ich den Eindruck, dass es einfacher ist, eher sowas zu machen wie nach allen Titeln zu filtern, die Ludwig van Beethoven enthalten, das dann per Hand im Tag-Panel einzutragen und dann mit "Ersetzen" zu löschen.
Und so ähnlich geht es dann mit den nächsten Begriffen.
Oder du findest ein Muster, wie Trennzeichen oder trennende Wörter - dann kannst du eine Aktion "Tag-Feld importieren" verwenden.
Also wenn der Titel z.B. lauten würde:
Ludwig van Beethoven_Symphonie Nr. 3 Es-Dur op. 55_Berliener Philharmoniker_3. Marcia funebre (Adagio assai)
Dann würde der Import-String lauten:
%composer%%contentgroup%%artist%_%title%
Solche Aktionen lohnen aber eigentlich nur, wenn es wirklich viele Dateien mit so einem Muster gibt.
Das Abtentern einzelner Wörter ist fehleranfällig.
Weil die gegebene lange Zeichenkette eine eindeutige Struktur nicht aufweist, so wird es so ohne weiteres nicht möglich sein, die von Mp3tag angebotenen automatischen Werkzeuge zu benutzen.
In einem solchen Fall sollte man eine externe Datenquelle ausfindig machen und mit copy&paste die passenden Texte übertragen.
TEMP ==> "Ludwig van Beethoven=Symphonie Nr. 3 Es-Dur op. 55=Berliner Philharmoniker=3. Marcia funebre (Adagio assai)="
KOMPONIST <== $regexp(%TEMP%,'^(?:(.+?)=){1}.$','$1')
WERK <== $regexp(%TEMP%,'^(?:(.+?)=){2}.$','$1')
ORCHESTER <== $regexp(%TEMP%,'^(?:(.+?)=){3}.$','$1')
TITEL <== $regexp(%TEMP%,'^(?:(.+?)=){4}.$','$1')
TEMP <== $char(0)
KOMPONIST ==> "Ludwig van Beethoven"
WERK ==> "Symphonie Nr. 3 Es-Dur op. 55"
ORCHESTER ==> "Berliner Philharmoniker"
TITEL ==> "3. Marcia funebre (Adagio assai)"
DD.20170428.2025.CEST
Beachten:
Wegen der Komplexität des regulären Ausdrucks mit den vielen Klammerausdrücken kann man an die Grenze der in Mp3tag benutzten RegExp-Maschine kommen, was zu einem nicht optimalen Ergebnis führen kann.
Es scheint also doch zu gehen. Vielen Dank! Jetzt versuche ich, die Syntax zu verstehen.
Darf ich noch um Hinweise bitten, wie ich diese Formeln im Programm anwenden muss, dass sie zum Ziel führen? Ich bin ein Anfänger auf diesem Gebiet.
Bei dem Lösungsvorschlag in ... Einen Tag auf mehrere andere Tags verteilen
... kann man wegen der Komplexität des regulären Ausdrucks mit den vielen Klammerausdrücken an eine Grenze in der RegExp-Maschine kommen, deshalb folgend ein anderer Vorschlag.
Man kann den langen Titel zunächst in temporäre Hilfsfelder aufteilen, dann werden die jeweiligen Textteile einzeln extrahiert.
TITLE_ORIG <== %TITLE%
TEMP_0 <== %TITLE%$char(32)
--> "Ludwig van Beethoven Symphonie Nr. 3 Es-Dur op. 55 Berliner Philharmoniker 3. Marcia funebre (Adagio assai) "
TEMP_1 <== $left(%TEMP_0%,$len($regexp(%TEMP_0%,'^((?:.+?\s){3}).*$','$1')))
--> "Ludwig van Beethoven "
TEMP_0 <== $cutLeft(%TEMP_0%,$len(%TEMP_1%))
--> "Symphonie Nr. 3 Es-Dur op. 55 Berliner Philharmoniker 3. Marcia funebre (Adagio assai) "
Das haben wir (DetlevD und ich) auch nie bezweifelt, dass es prinzipiell geht.
Nur erscheint mit der Aufwand und die Komplexität der erforderlichen Ausdrücke immer noch so hoch, dass es schon wirklich eine Unmenge Stücke mit genau dem hier vorgestellten Muster geben muss, damit sich die Entwicklung des regulären Ausdrucks lohnt.
Und gerade wenn du dich noch nicht so auskennst, erscheint mir der häppchenweise Weg mit Filtern und Tag Panel und Ersetzen deutlich besser für die Gewöhnung an dieses Programm.
Jetzt mal ehrlich: wie viele Stücke mit dem Muster hast du denn jetzt?
Ja, du hast schon irgendwie Recht damit, wenn es um den Aufwand geht, wie er zu leisten war für die hier vorgestellte Methode.
Aber nun gibt es ja eine Mustervorlage, welche nur noch verlangt, ...
die Anzahl der Wortgruppen anzupassen, ...
und innerhalb jeder Wortgruppe die Anzahl der Worte anzupassen.
Dass du das als unbestrittener Champion der Regulären Ausdrücke (ehrliche Bewunderung) ruckzuck hinkriegst, ist mir klar.
Aber beim OP weiß ich nicht, wie steil die Lernkurve ansteigen muss, da der OP selbst sagt:
Wenn man sich mit der Mp3tag Funktion "Regulärer Ausdruck" nicht so gut auskennt, dann kann man in diesem Fall auch ganz gut die Mp3tag Funktion $meta_sep() benutzen.
Diese Funktion wird hier benutzt, um die einzelnen Worte zu erkennen.
Danke an DetlevD für den letzten Vorschlag, den ich nachvollziehen und umsetzen konnte. Der einzige Fehler: In WERK fehlt "op."; dort steht jetzt nur. "Symphonie Nr. 3 Es-Dur 55". Woran liegt das?
Zweite Frage: Wie kann ich den 2. Vorschlag, den mit den reg. Ausdrücken, umsetzen?
Wie viel von den FAQs und der Hilfe hast du schon gelesen?
Ich würde in diesem Zusammenhang die Abschnitte zu Aktionen https://docs.mp3tag.de/actions und Scripting https://docs.mp3tag.de/scripting empfehlen.
Wenn du in MP3tag auf F1 drückst gibt es die Hilfe vermutlich auch auf Deutsch.
Ich habe dank Eurer Hinweise die erste Aktionengruppe von DetlevD im Wesentlichen verstanden und kann sie auf ähnlich gelagerte Fälle übertragen.
Die mp3-tag-Hilfe ist in Bezug auf reguläre Ausdrücke recht spärlich. Was bedeutet z. B. in der genannten Aktionengruppe die Zeichenreihe "((?:.+?\s){3})"? Es geht um das 3. Leerzeichen, das ist klar, aber was bedeuten die Zeichen davor?