Hilfe bei den Skripting-Befehlen

Hallo,

Teil_2021-12-31-1

ich möchte aus allen Titeln die von den Plattenfirmen vergebenen Informationen entfernen in das Feld Kommentar eintragen.
Z.B.: Am weißen Strand von Sourabaya ( NH 22 429 )

Im VBA würde ich so vorgehen (ich formuliere es bewusst so ausführlich):
1.) suche von rechts das erste vorkommen von '(' .... es könnten ja im restlichen Titel noch Klammern enthalten sein, deshalb von rechts. Im obigen Beispiel ist es das 13. Zeichen von rechts
2.) jetzt alles was IN den Klammern steht, also ab dem 12. Zeichen von rechts bis zum 2. Zeichen von rechts ausschneiden und in eine Variable schreiben.
3.) nun in der jetzt mit Inhalt gefüllten Variablen die Leerzeichen vorne und hinten mit trim abschneiden.
Jetzt steht in der nun gefüllten Variablen NH 22 429
4.) zuletzt die Variable in das Feld Kommentar schreiben.

Im VBA ist es ein Zwei- bis Dreizeiler.
Die Skripting-Befehle geben das sicherlich her, nur ich kann sie mangels Wissen nicht umsetzen.
Ich wäre dankbar, wenn sich jemand die Zeit nehmen könnte und dieses kleine Beispiel mit erklärenden Worten ins Mp3-Tag-Skriptig umsetzt.
Dann wird es mir sicher leichter fallen spätere Aktionen dieser Art selbst zusammenzustellen.
Natürlich könnte ich die Dateien über Export in Access übertragen, umwandeln und über Import wieder importieren, aber ich möchte versuchen das Skripting zu verstehen.

Vielen Dank

Du könntest es mit einem sogenannten regulären Ausdruck im Konvert Tag->Tag versuchen:
Feld: COMMENT
Format String:
$trim($regexp(%TITLE%,'(.*) \((.+)\)$',$2))

Erklärung:
Aus dem %TITLE% wird am Schluss $ nach öffnender \( und schliessender \) Klammer gesucht und alles darin in die zweite Capture Group (.+) gesetzt. Der Text davor (.*) inkl. Leerschlag steht in der ersten Capture Group.
Der so ermittelte Inhalt der zweiten Capture Group wird getrimmt in COMMENT geschrieben.

Bitte probiere das unbedingt mit Deinen echten Titeln in Testdateien aus, insbesondere mit solchen die keine Leerschläge vor und nach den Klammern haben und solche mit mehreren Klammerpaaren.

Hinweis:
Allfällig bereits vorhandener Inhalt in COMMENT wird in diesem Fall ungefragt komplett überschrieben.

Du kannst auch hier weitere Beispiel selber probieren oder für zukünftige Versuche benutzen.

Herzlichen Dank!
Vorhandene oder auch nicht vorhandene Leeranschläge innerhalb des letzten Klammerpaares werden korrekt umgesetzt.
Im Bild habe ich ein Klammerpaar zusätzlich eingefügt, leider ist das Ergebnis dann noch nicht ok

Eventuell habe ich mich falsch ausgedrückt, aber der komplette Teil des letzten Klammerpaares, incl. der Klammern, soll aus dem Titel gelöscht werden.

Rückfrage: um was für eine Programmierrache geht es eigentlich im Skripting?

In Deinem nicht funktionierenden Beispiel fehlt die schliessende Klammer. Die muss zwingend vorhanden sein, sonst wird sie nicht als "komplettes letztes Klammer-Paar mit Inhalt" erkannt.

Der oben verwendete Ausdruck ist ein "regulärer Ausdruck" oder auf Englisch "Regular Expression"

Stimmt, das hab ich übersehen, sorry

Das zeigt auch eindrücklich, dass solche regulären Ausdrücke auf das Zeichen genau funktionieren.
Fehlt ein Zeichen oder ist eines zu viel da, funktionieren diese Ausdrücke nicht mehr. Deshalb ist das Testen mit allen möglichen Varianten extrem wichtig!

Das menschliche Auge verzeiht in Deinem Beispiel die letzte, fehlende Klammer. Ein solcher Ausdruck prüft aber Zeichen um Zeichen, Position um Position und verzeiht grundsätzlich absolut rein gar keine "Abweichungen".

Ich habe viele Jahre in Access programmiert, deshalb beziehe ich mich oft auf dieses Programm.
Ich muss dir zustimmen, das Austesten ist ist eines der wichtigsten und nervigsten Schritte.
Dieses von Microsoft hinterlegte VBA ist so angelegt, dass ich bisher mit den 'regulären Ausdrücken' nie in Kontakt kam. Daher meine Verwirrung bei den Skripting-Beispielen in der MP3Tag-Hilfe

Da der reguläre Ausdruck schon erklärt ist, hier ein Beispiel, wie man es in einem Rutsch hinbekommt, das aus der Klammer in TITLE zu entfernen und gleich in COMMENT zu packen:
Aktion vom Typ "Tag-Felder importieren"
Quelle: $trim($regexp(%TITLE%,'(.*) \((.+)\)',$1==$2))
Ziel: %title%==%comment%

1 Like

Ich habe dein Beispiel komplett übernommen, mal mit mal ohne abschließendem Apostroph.
Es passiert rein gar nichts, ausser dass das 'Geändert-Datum' geändert wird.

Ich glaube, da ging beim copy & pasten etwas verloren. Probiere es mal damit:
Aktion vom Typ "Tag-Felder importieren"
Quelle: $trim($regexp(%TITLE%,'(.*) \((.+)\)$' ,$1==$2))
Ziel: %title%==%comment%

$regexp('Am weißen Strand von Sourabaya ( NH 22 429 )','(.*) \((.*)\)',$1==$2)
führt zu
Am weißen Strand von Sourabaya== NH 22 429
Ich weiß nicht, was da nicht passen soll.

Achte darauf, dass Du den Formatstring EXAKT copy & pastest, ohne führende Leerschläge, endende Hochkomma oder so...
In dieser Variante als "Quellformat" und als "Formatstring"

image

@Fotoknipser: es ist in dem Dump von dir zu sehen, dass am Ende noch ein Hochkomma steht. das soll da nicht hin,

Ich hab es mit beiden Varianten versucht, leider ohne Erfolg.

ich sehe keinen Unterschied. Habe den String in Notepad++ eingefügt, um Sonderzeichen zu sehen sind. Es sind keine da.

Teil_2021-12-31-4

Um das Thema nicht ausufern zu lassen, versuch ich jetzt meine externe Variante.

Bitte prüfe doch erst Mal in Konverter>Tag-Tag, ob der reguläre Ausdruck überhaupt zu einem passenden Ergebnis führt. Und dann wendest du die Aktion vom Typ "Tag-Felder importieren" an.

Das klappte sofort korrekt, von der fehlenden Klammer eines Titels abgesehen

Hast du diesen Ausdruck getestet:
$regexp(%title%,'(.*) \((.*)\)',$1==$2)
es müsste dann dies gezeigt werden:
Am weißen Strand von Sourabaya== NH 22 429

Es könnte noch am einen Leerschlag zu viel zwischen $' ,$1 liegen. Es sollte
$',$1
sein

Also nochmal die komplette Aktion "Tag-Felder importieren":
Quellformat:
$trim($regexp(%TITLE%,'(.*) \((.+)\)$',$1==$2))

Formatstring:
%title%==%comment%

1 Like

das führt dazu:
Teil_2021-12-31-5

aber der titel soll NICHT mit kopiert werden