Mehrere feat. Artists in Extrafeld kopieren

Hallo mp3tag-Forum,

ich beschäftige mich jetzt seit 3 Wochen mit mp3tag und bin begeistert.
Ich habe schon viele Tipps aus dem Forum umsetzen können. Insbesondere durch gute Aktionen kann man sich ja viel Arbeit ersparen.
Ich versuche gerade Aktionen für (fast) alle Eventualitäten zu schreiben und diese sinnvoll zusammenzufassen,
um meine Sammlung anschließend mit so wenig Klicks wie nötig zu vereinheitlichen.
Für viele Tagfelder habe ich schon gute Varianten hier im Forum gefunden und fange dadurch auch langsam an,
die Scriptsprache zu verstehen.

Ich würde gerne alle zusätzlichen Artists, außer dem Mainartist, inkl. der Mitwirkungsform/dem Indikator (feat. / vs. / with / &)
in einem Extrafeld "FEATARTIST" speichern.

Meine bisherige Vorgehenesweise sieht folgendermaßen aus:

  1. Alle Schreibweisen von feat/featuring/ft/vs/versus/with (inkl. Groß-/Kleinschreibung und mit/ohne Punkt) auf die o.g. 4 Varianten vereinheitlichen --> feat. / vs. / with / &
  2. Alles was nach dem Mainartist kommt in FEATARTIST speichern
  3. Im Tagfeld ARTIST alles außer den Mainartist löschen

Punkt 1 und 3 funktionieren gut, in Punkt 2 habe ich noch nicht die optimale Lösung gefunden.

Bisher sieht die Aktion für FEATARTISRT so aus:

Tagfeld formatieren: FEATARTIST
$if($eql($strstr(%artist%,'feat. '),0),
$if($eql($strstr(%artist%,'vs. '),0),
$if($eql($strstr(%artist%,'with '),0),
$if($eql($strstr(%artist%,'& '),0),
,$mid(%artist%,$strstr(%artist%,'& '),$len(%artist)))
,$mid(%artist%,$strstr(%artist%,'with '),$len(%artist%)))
,$mid(%artist%,$strstr(%artist%,'vs. '),$len(%artist%)))
,$mid(%artist%,$strstr(%artist%,'feat. '),$len(%artist%)))

Also 4 verschachtelte if-Abfragen, die nacheinander überprüfen, ob die Indikatoren (feat. vs. with &) im Artistfeld vorhanden sind.
Wenn nicht, passiert eben nichts und wenn doch, dann wird die Länge des Strings ab dem Indikator ausgegeben.

So weit so gut, das klappt für alle Artistvariationen, in denen nur 1 Indikator vorkommt.

Ich würde die Funktion aber gerne so weit ausbauen, dass sie auch bei mehreren Indikatoren/mitwirkenden Artists funktioniert.

Artistvariationen mit mehreren gleichen Indikatoren:
feat. B feat. C feat. D -->
feat. B, C, D

Artistvariationen mit mehreren verschiedenen Indikatoren:
feat. B vs. C -->
feat. B vs. C

vs. B with C -->
vs. B with C

with B & C feat. D-->
with B & C feat. D

Artistvariationen mit mind. 2 gleichen Indikatoren und mind. einem weiteren anderem Indikator:
feat. B vs. C feat. D -->
feat. B, D vs. C

with B vs. C vs. D -->
vs. C, D with D

& B feat. C & D, feat. E, vs. F -->
& B, D feat. C, E vs. F

Also kurz zusammengefasst: 2 gleiche Indikatoren sollen per Komma getrennt werden und die restlichen anderen sollen dann dahinter folgen.

Ist so eine Funktion in einer Aktionengruppe grds. möglich?
Die if-Abfragen müssten irgendwie solange wiederholt werden, bis alle Indikatoren eines Typs gefunden wurden,
um anschließend zu schauen, ob noch weitere andere vorhanden sind.

Das nächste Problem besteht glaub ich darin, dass meine if-Abfragen bisher nacheinander abgearbeitet werden.
Wenn man die Reihenfolge der Indikatoren beibehalten möchte, müsste die Suche in einer Abfrage geschehen oder?

Wäre super, wenn sich ein Crack von euch mal dazu äußern könnte, wie weit man das Ganze theoretisch überhaupt umsetzen könnte
bzw. ob es in der Überlegung irgendwo Grenzen gibt, und wo die dann wären.

Greetz Fastnoob

Mir erscheint die Aufbereitung kaum nachzuvollziehen.
Die Beispiele erscheinen mir konstruiert und die Änderung der Reihenfolge sinnentstellend

Ich hätte gedacht, dass C D featured und nicht B und D vs C gefeatured werden.

Woher kommt die Verdoppelung von D? Welchen Sinn macht "D with D"? Wohin ist B verschwunden?

Warum muss die Reihenfolge von D und C geändert werden, wenn die doch zuvor schon wunderbar in Reihe waren.

Ich glaube, es ist nützlicher, konkrete Beispiele zu nehmen.