erster Artist vor Ft. ft feat. usw. soll in Album-Artist rein

Hallo,

ich suche eine Möglichkeit aus dem Artist Tag den ersten Interpreten vor dem "&, ft, FT, ft. oder FT. feat. und weiteren (zig) Versionen" in den Tag Albumartist zu kopieren.

Ich denke mal das geht, nur weiß ich nicht wie es geht.

Hier noch ein Beispiel:

Dateiname: David Guetta Ft Taio Cruz & Ludacris - Little Bad Girl
Title: Little Bad Girl
Artist: David Guetta Ft Taio Cruz & Ludacris

jetzt soll "David Guetta" als AlbumArtist erkannt und eingefügt werden.

später möchte ich dann aus dem Dateinamen
"David Guetta - Little Bad Girl " machen, aber das krieg ich auch allein hin. Wenn das mit Albumartist erledigt ist kann ich bestimmt einfach den Converter nutzen und aus dem Tag zum dateinamen machen.

Bitte präsentiere eine komplette Liste von allen unterschiedlichen Featuring-Konnektoren.

Gibt es noch andere Beispiele, die sich anders verhalten je nach Featuring-Konnektor?

Schaue dich im Forum um, deine Problemstellung wurde schon zig-mal gefragt und auf unterschiedliche Weisen gelöst.
Als Anregung zum Weiterbasteln siehe dort ...
(feat. [..]) von 'title' nach 'artist'

DD.20110703.1559.CEST

ft ft. feat feat. featuring
Ft Ft. Feat Feat. Featuring
FT FT. FEAT FEAT. FEATURING
& with With

Verstehe nicht, was du damit meinst.

Danke, ich lese schon so ziemlich alles was es hier gibt und die Forensuche ist echt nicht der Bringer.....

EDIT>>>>>>>>>>>>>>die dritte

Die Idee mit dem "Basteln" ist ja gut und fiel mir auch ein, nur müßte hier eine Erklärung unter Faq was diese Zeichen alle bedeuten.
Die meisten bekommen einfach eine Lösung auf Ihr spezeilles Anliegen und der Mitleser weiß nicht was da passiert.

Ich meine, wie schreibt man, suche im Tag Artist?
Dann suche nach Leerzeichen?
Dann suche nach Ft FT ft. FT. Feat. usw.?
Suche nach allen Zeichen "vor" oder "nach" ft usw.

Wenn es solch Erklärungen gäbe....

Habe auch schon gestern über Wiki versucht mir die Regulären Ausdrücke beizubringen und habe zumindest geschafft, Aktionen anzulegen die alle runden und eckigen Klammern samt Inhalt zu löschen.

Jetzt komme ich aber leider nicht weiter und habe mich hier angemeldet.

Vielleicht ist die Sichtweise eine falsche. Denn SUCHE ich? oder bestimme ich eine Position? Ich meine, letzteres. Und damit müsstest du in der Hilfe die Skript-Befehle durchflöhen, welche dir die Position einer Zeichenkette zurückliefern, um dann festzulegen, was mit der Teilzeichenkette vor dieser Position und danach passieren soll.
Mit diesem Ansatz würde dir auch klar werden, was DetlevD mit "Featuring-Konnektor" meint: das ist genau die Position von Ft. usw, an der die Zeichenkette geteilt wird.

Wenn du wirklich so viele Möglichkeiten von ft. hast, wie oben gezeigt, gibt es unterschiedliche Ansätze: entweder bastele ich eine Aktion, die für jedes Vorkommen das komplette Verschieben ausführt oder ich vereinheitliche alle Variationen (z.B. durch Suchen/Ersetzen) auf nur noch ein Vorkommen und bastele dann eine Aktion, die sich auf die vereinheitlichte Zeichenkette stürzt.

Von daher: soll der Forumseintrag ein kleiner Programmierkurs werden, eine Lösungsstudie oder einfach ein Kochrezept, um zum gewünschten Endresultat zu kommen? Da scheinen die Geschmäcker verschieden zu sein.

OK, die Idee mit Suchen und Ersetzen auf nur noch eine Version wie "Ft" zu kommen ist natürlich super und würde ich sogar selbst hinbekommen. (ich versuche es)

Aha, ich glaube ich vertsehe so ein bischen was Detlev wollte. Dieses "Ft" hat ausnahmslos 1 Leerzeichen davor und 1 Leerzeichen danach. Erst dann kommen die Anderen Artisten. Schreibweise mache ich immer so daß der erste Buchstabe groß ist, egal was für ein Wort.
Und ich definiere den Albumartisten immer damit:

ein oder 2 Wörter mit einem Leerzeichen gefolgt von 1 Leerzeichen und Ft gefolgt von beliebeig vielen Zeichen oder auch Nummern und weiß nicht sonst was.

Beispiel: Name Vorname Ft blablabla blablabla

oder auch: Name Ft blabla blabla

Gegen einen kleinen Kurs hab ich nichts einzuwenden. Wollte nicht unbedingt Copy&Paste fertig und auf wiedersehen. Ich verstehe gerne was ich mache.

Probiere es damit ...
Aktion: Tag-Feld formatieren
Feld: ALBUMARTIST
Formatstring:

$regexp(%ARTIST%,'^(.+?)\s+(?:ft\.?|feat\.?|featuring|with|&)\s+.+$','$1',1)

Testdateien ...
TEST.FEAT.MEMO.zip (4.67 KB)

DD.20110703.1826.CEST

TEST.FEAT.MEMO.zip (4.67 KB)

vielen vielen Dank!

Funktioniert super, kannst du noch eine kleine Erklärung dazu geben? Wenn du Zeit und Lust hast natürlich.

Edit:

Jep, wurde bei allen Versionen richtig formatiert.

Edit2:

Ist das so richtig?

Also, das habe ich nun aus der Hilfedatei:

$regexp(x,expr,repl) Ersetzt das durch den regulären Ausdruck expr angegebene Muster in der Zeichenkette x durch repl. Der vierte optionale Parameter gibt an ob Groß-/Kleinschreibung ignoriert (1) oder beachtet (0) werden soll.

Dein Vorschlag:
$regexp(%ARTIST%,'^(.+?)\s+(?:ft.?|feat.?|featuring|with|&)\s+.+$','$1',1)

das heißt dann für mich:

x= alles vor dem ersten Komma. Also %ARTIST% . Und das bedeutet: Alles was im Artist Tag steht.

expr= hier definiere ich was weg/ersetzt soll. Also '^(.+?)\s+(?:ft.?|feat.?|featuring|with|&)\s+.+$'

repl= womit ersetzt werden soll. Also '$1' und das bedeutet dann wohl durch nichts?

dann kommt der optionale Parameter nach dem Komma. Da hast du eine 1 stehen. Das wiederrum besagt= Groß-/Kleinschreibung ignorieren.

Meine Deutung der Mp3tag Syntaxbeschreibung der Funktion $regexp(x,expr,repl[,flag]) ...

Parameter 1: x
Eine beliebige alphanumerische Zeichenkette.
Das kann sein ein Literal 'abc' oder ein Tag-Feld-Inhalt %ARTIST% oder eine Zahl 123 oder eine Kombination dieser Datentypen %ALBUM%123' - '%ARTIST%'abc'

Parameter 2: expr
Der reguläre Ausdruck, also das Programmierskript zur Interpretation durch die Reguläre-Ausdruck-Auswertung-Maschine (spezielle Syntax beachten).

Parameter 3: repl
Der reguläre Ausdruck, also das Programmierskript zur Interpretation durch die Reguläre-Ausdruck-Ersetzen-Maschine (spezielle Syntax beachten).

Parameter 4: flag (optional)
Ausschalten (0) oder Einschalten (1) des Ignorierens der Groß- und Kleinschreibung beim Parameter 1.

Siehe auch dieses Einsteiger Tutorial ...
Regular Expressions

DD.20110703.2040.CEST

OK, ich danke nochmals für die Erklärung. Nun muß ich nur noch den Regulären Ausdruckt entschlüsseln, besser gesagt "auf deutsch übersetzen".

Mein Problem ist, ich erkenne nicht ob jedes Zeichen für sich allein steht oder mehrere in Kombination eine Funktion haben. Da das ganze immer ohne Leerzeichen geschrieben werden.

Ist das so richtig, so wie ich das zerhackt habe?

' ^ (.+?) \s+ (?:ft.?|feat.?|featuring|with|&) \s+ . + $'

'............keine Ahnung
^..........keine Ahnung
(.+?).....irgendeine Zeichenkette ein mehrmals vorkommend und dann Fragezeichen 0 oder einmal vorkommend (verstehe ich nicht)
\s+........Leerzeichen ein oder mehrmal vorkommend
(?:ft.?|feat.?|featuring|with|&)........Liste mit den verschieden Versionen von Ft.
\s+........Leerzeichen ein oder mehrmal vorkommend
.......gefolgt von beliebeges Zeichen, beliebig oft
+.....ein oder mehrmal vorkommend
$........bis zum Zeilen/String Ende
'..........keine Ahnung

ganz schön verwirrend das ganze, wenn man auch noch so gut wie kein Englisch kann....
:frowning:

Entschlüsseln musst du nicht unbedingt, richtig anwenden müsste erst einmal reichen.

Das ist ja ganz bemerkenswert, wie du dir Mühe gibst, den regulären Ausdruck zu verstehen.
Es gibt diverse Dialekte von Regular Expressions, schaue einfach, ob du aus Beispielen lernen kannst.
Siehe auch in das Mp3tag Manual, dort gibt es eine Einführung in die Arbeit mit regulären Ausdrücken.

Wenn du dich weiter bilden willst, dann kannst du dort studieren ...

http://www.regular-expressions.info/
http://www.regular-expressions.info/reference.html

http://msdn.microsoft.com/de-de/library/az...c(v=VS.80).aspx
http://msdn.microsoft.com/de-de/library/hs600312(VS.90).aspx

http://www.codeproject.com/KB/dotnet/regextutorial.aspx

http://www.regexbuddy.com/analyze.html

http://www.carljohansen.co.uk/utils/regexpdotnet.aspx

http://gskinner.com/RegExr/

http://regexlib.com/Default.aspx

http://www.addedbytes.com/cheat-sheets/reg...ns-cheat-sheet/
http://www.addedbytes.com/cheat-sheets/reg...heet-version-1/
http://www.addedbytes.com/download/regular...t-sheet-v2/pdf/
http://www.addedbytes.com/download/regular...t-sheet-v1/pdf/

Die beiden einfachen Apostrophe dienen in Mp3tag dazu, ein Literal (eine Zeichenkette) einzufassen.
Falls Sonderzeichen der Mp3tag Skriptsprache in der Zeichenkette vorkommen, dann werden diese damit automatisch entwertet, außer das einfache Apostroph selbst, denn das muss immer verdoppelt werden, damit es als Zeichen erkannt wird.

DD.20110704.1738.CEST

' = Hier eigentlich überflüssig.
^ = Anfang der Zeile
(.+?) = Beliebiges Zeichen (.), dass wiederholt wird (+). Das Fragezeichen bewirkt, dass die die kürzeste Möglichkeit für Wiederholung angenommen wird. In Verbindung mit dem Leerzeichen hinter der Klammer heißt das dann, beliebige Zeichen bis zum nächsten Leerzeichen. Die Klammer bewirkt, dass man sich auf den gesammten Inhalt der Klammer später mit $1 (= erste Klammer), $2 (= zweite Klammer),... beziehen kann.
(?:ft.?|feat.?|featuring|with|&) = Liste mit verschiedenen Ausdrücken, da hast du recht. Als Besonderheit kommt noch das "?:" am Anfang der Klammer dazu, das bewirkt, dass man sich auf die Klammer hinterher NICHT mit $1 oder $2 rückbeziehen kann.

Den einfachsten Link Detlev scheinbar vergessen:
https://docs.mp3tag.de/actions/replace-regexp
auf Deutsch direkt aus dem mp3tag heraus aufrufbar mit F1 und dann der Menüpunkt "Aktionen"

... aber auch nur scheinbar ...
... denn das war der erste Hinweis vor allen anderen ...
Siehe auch in das Mp3tag Manual, dort gibt es eine Einführung in die Arbeit mit regulären Ausdrücken.

Im Übrigen wollte ich mit den Verweisen zu spezialisierten Webseiten verhindern, dass hier umgangssprachliche do-it-yourself Interpretationsversuche gestartet werden über die einzelnen Bestandteile eines Regulären Ausdrucks.
Warum nicht direkt von den Profis oder von der Quelle lernen?

Achtung: nur für ein paar Tage dort verfügbar ...
Boost.Regex
URL

DD.20110704.1900.CEST