Frage zu Aktion

hallo leute!

ich würde gerne folgende aufgabe per aktion lösen:

im feld ARTISTSORTORDER sollen die artikel "the", "der/die/das" oder "a" ans ende gestellt werden. also zum beispiel:
"The Kooks" zu "Kooks, The"

ich habe hier im forum einiges dazu gefunden, wie man diese artikel aus dem tag löscht, wie man sie aber gleichzeitig ans ende verschiebt, konnte ich nicht herausfinden.

vielleicht kann mir bei der gelegenheit jemand nen tip geben, wo ich am besten von grund auf lernen kann, wie scripting, titleformating oder wie auch immer es nun gerade heißt, in mp3tag und foobar funktionieren!?
ich werde aus den ganzen tabellen und englischen tutorials nämlich leider nicht schlau.

vielen dank schonmal!

Hi,

du kannst das mit der Aktion "Ersetzen mit regulärem Ausdruck" machen.
Feld: ARTISTSORTORDER
regulärer Ausdruck: (der|die|das|the|a) (.*)
Treffer ersetzen durch: $2, $1

Erklärung: der reguläre Ausdruck beschreibt, wie der String (also die Zeichenkette), die du suchst, aussehen soll: In deinem Fall ist das ja am Anfang ein der, die, das, the oder a (im Ausdruck:(der|die|das|the|a)) und danach ein Leerzeichen und dann irgendetwas beliebiges (im Ausdruck: (.*)). Die Treffer, also die Strings, die der reguläre Ausdruck passend beschreibt, werden ersetzt durch, das was im regulären Ausdruck durch die zweite Klammer ausgedrückt wurde, also das beliebige, und dann mit Komma abgetrennt, das was durch die erste Klammer ausgedrückt wurde: das der, die, das, the oder a, je nachdem was gefunden wurde.

Allgemein bei Formatstring in Aktionen gillt: Du schreibst mit dem Formatstring eine Maske für das Feld, was du füllen willst, d. h. wenn du eine Aktion "Tag-Felder formatieren" hast mit dem Feld: TITLE und dem String: %title% - $left(blabla,2) - %artist%, dann beschreibst du mit dem String wie Mp3tag das Feld TITLE befüllen soll.
Das soll mit dem früheren Titel (%title% ist ein Platzhalter von Mp3tag für den String, der momentan in dem Feld TITLE steht), dann einem " - " dann den beiden ersten Buchstaben von blabla (das bedeutet der Befehl: nehme die ersten 2 Buchstaben, von der Zeichenkette die im Befehl steht, also blabla), also bl, dann wieder " - " und abschließend der String, der momentan im Feld ARTIST steht.
Wenn die Felder also folgendermaßen gefüllt sind:
TITLE: Waterloo
ARTIST: Abba
sieht der TITLE nach Durchführen der oben beschriebenen Aktion so aus:
TITLE: Waterloo - bl - Abba

Ich hoffe, das war verständlich, ansonsten probiere einfach aus (im Konverter Tag-Dateiname gibt es eine sehr hilfreiche Vorschau)

mfG
gnor

mach eine aktion vom typ tag-feld formatieren, die den inhalt von Artist oder Band in artistsortorder kopiert.
dann mach eine aktion vom Typ Ersetzen mit regulärem ausdruck für das feld artistsortorder.

trage als such-string ein:
^(.* )(.*) -> die beiden Ausdrücke in Klammern spalten den Suchbegriff in 2 abteilungen.
trage als replace string ein:
$2, $1
das heißt: inhalt von 2. Klammer zuerst, dann ein Komma-Blank, dann Inhalt von der 1. Klammer
Müsste für alle Artisten funktionieren, die aus mindestens 2 Wörtern bestehen.

Wie immer: probier das erst mit einem Track aus, damit es nicht so weh tut, wenn es noch nicht ganz so ist, wie es eigentlich sein sollte.

ich verstehe ein wenig - danke für eure tips!
dazu aber noch zwei fragen:

  1. was bewirkt das ^ in ^(.* )(.*)?

  2. ich habe mir jetzt auch eine aktion gebastelt, um vor- und nachnamen zu trennen.
    also gleiche aktion, wie gnor sie vorgeschlagen hat, nur bei regulärer Ausdruck habe ich (.) (.) statt (der|die|das|the|a) (.*) eingetragen!)
    ich frage mich jetzt, warum mp3tag die zweite klammer automatisch dem letzten wort zuordnet!
    nach meiner logik (!) könnte bei einem namen wie wolfgang amadeus mozart, der mit meiner aktion ja zu mozart, wolfgang amadeus wird (wie es ja auch sein soll!), genauso gut zu amadeus mozart, wolfgang werden!
    oder nicht?

Das ^ heißt "Beginn des Feldes" - ein Muster ^(.* ) würde sich also auf das erste Blank nach Beginn des Feldes stürzen.

Das machen auch andere Programme so und ist eine Eigenschaft von regulären Ausdrücken. Das Sternchen (*) bedeutet, dass von dem Zeichen davor kein oder mehrere genommen werden. Mehrere heißt in diesem Fall, so viele wie möglich. Man spricht dann auch von einem gierigen Ausdruck.
D.h. die erste Klammer in deinem Ausdruck sucht nach so vielen wie möglichen Zeichen, so dass die zweite Klammer gerade noch zutrifft und das ist dann der Fall, wenn die zweite Klammer nur für das letzte Wort steht.
Du kannst das Verhalten auch ändern, wenn du ein ? hinter das * schreibst. Dann ist der Ausdruck nicht gierig und sucht so wenig wie möglich Zeichen.

mfG
gnor

ah, verstehe....

könnt ihr mir vielleicht trotzdem einen rat geben, wo ich sowas nachschlagen kann? so absolute einsteigerinfos halt?
ich könnte jetzt nämlich endlos weiterfragen! (was machen z. b. <,>,',|,...)
ich bräuchte sowas wie eine übersicht für anfänger. auf audiohq et al. verstehe ich leider meist nur bahnhof!

Die Kurzanleitung regulärer Ausdrücke für Mp3tag steht in der Hilfe, ebenso die Erklärung der Aktionen. Ich habe die regulären Ausdrücke damit und mit rumprobieren gelernt. Ansonsten gehe doch mal in eine Bibliothek oder benutze entsprechende e-Books, die eine Programmiersprache genauer erklären, wenn dir die normalen Tutorials nicht ausreichen. Es gibt in fast jeder Programmiersprache eine Implementierung der regulären Ausdrücke, die in diesen Bücher dann ebenfalls erklärt wird. Ich habe z.B. ein Buch über die BASH gelesen, in denen reguläre Ausdrücke sehr gut erklärt waren (gerade im Zusammenhang mit dem Werkzeug/Programm grep).

mfG
gnor