# ARTIST-Tag nach MB Picard nicht teilbar

**URL:** <https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800>\
**Category:** Allgemein\
**Created:** [November 16, 2020, 9:46am UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800 "2020-11-16T09:46:42Z")\
**Posts on this page:** 8\
**Page:** 2

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [January 3, 2021, 6:17pm UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800/21 "2021-01-03T18:17:45Z")

</div>

Passt in dieses Schema auch  
Artist: Sigala, Fuse ODG & Sean Paul  
TITLE: Feels Like Home \<feat. Kent Jones\>  
Du kannst ja mal gucken, ob sowas in die Nähe kommt:  
`$replace($regexp($regexp(%artist%,(.*)\\(.*),$1 & $2),(.*?)\\(.*),$1 & $2),\, feat. )`

Voraussetzung ist, dass der ARTIST gefüllt ist mit sowas wie im Beispiel:

> [@bkh](#):
>
> ARTIST David Guetta\Afrojack\Charli XCX\French Montana

---

<div class="post-metadata">

**Author:** ![bkh](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/b/da6949/32.png) [@bkh](https://community.mp3tag.de/u/bkh)\
**Post date:** [January 3, 2021, 6:36pm UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800/22 "2021-01-03T18:36:17Z")

</div>

Mir ist schon klar, das die Komplexität des Beispiels unendlich sein kann.

Von zwei Voraussetzungen ausgehend könnte es theoretisch möglich sein:

ARTIST ist ein durchgehender String  
ARTISTS ist ein mulitvalue-Feld in dem die ARTIST (zwingend) enthalten sein müssen.  
Die JOINs sind die Teile zwischen den ARTISTS. Welche Werte die einnehmen, bestimmt ja MB als führendes System.

Nur so kann ein Parser sinnvoll arbeiten.  
Meine Schwierigkeit liegt darin die join-Werte aus ARTIST zu ermitteln und in JOIN zu übertragen.  
ARTIST kann ja aus ARTISTS kopiert werden.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [January 3, 2021, 7:05pm UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800/23 "2021-01-03T19:05:04Z")

</div>

Mein Beispiel funktioniert ja mit 4 Künstlern ...  
Wer setzt denn nach welchen Kriterien welches Wort in JOIN?  
Woher weiß man, an der wievielten Stelle das "feat. " hin muss?  
Geht es darum, einen bestehenden ARTIST auseinanderzunehmen und das Wort mit Kleinbuchstaben zu erkennen?  
`$regexp('David Guetta & Afrojack feat․ Charli XCX with French Montana',.*?( \l.*? ).*,$1)`  
gibt "feat." - so könnte man doch mit einer Aktion vom Typ "Tag-Feld formatieren" JOIN füllen.  
und für den nächsten String nimmt man dann `%join%\\$regexp()`  
Ist das der Weg?

---

<div class="post-metadata">

**Author:** ![bkh](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/b/da6949/32.png) [@bkh](https://community.mp3tag.de/u/bkh)\
**Post date:** [January 3, 2021, 7:41pm UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800/24 "2021-01-03T19:41:10Z")

</div>

Ich glaub(t)e das soweit verstanden zu haben.

In dem Fall ist es nach der MB-Doku so, das die join-Phrasen jeden Wert einnehmen können, den die Produzenten vorgeben, solange er nicht leer ist (also auch ein Leerzeichen).  
Schlichtweg muss man sich darauf verlassen, bzw. getreu dem Motto Vertrauen ist gut, …  
Es kann zwar maximaler Unsinn eingeben werden, der jedoch durch ein internes QS verifiziert wird. (Bin anfangs da schon manchmal durchs Raster gefallen).

Daraus folgt, das die Werte zwischen den ARTISTS jeden "verifizierten" Wert einnehmen (können).

Die Werte können jeden beliebigen String annehmen. Aus Gründen der Lesbarkeit sollten jedoch im String das erste und der letzte Zeichen ein Leerzeichen sein, muss aber nicht. I.d.R. ist das so, Default ist ' & '.

Zusammenfassend liegt mein Problem darin, die einzelnen Werte in ARTIST mittels ARTISTS aufzuteilen und dem/n neuen TAG/s zuzuordnen.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [January 3, 2021, 7:48pm UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800/25 "2021-01-03T19:48:50Z")

</div>

Dann zeig doch mal den echten Inhalt aus dem Dialog "Erweiterte Tags" von ARTIST und ARTISTS vor und nach der Bearbeitung (per Hand).  
Denn die bisher gezeigten Beispiele von ARTISTS sind ja eher so:  
ersetze das erste Semikolon durch "and", das zweite durch "with" oder alle (Default) durch "&".

---

<div class="post-metadata">

**Author:** ![bkh](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/b/da6949/32.png) [@bkh](https://community.mp3tag.de/u/bkh)\
**Post date:** [January 3, 2021, 9:16pm UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800/26 "2021-01-03T21:16:58Z")

</div>

Werde ich tun.  
Melde mich morgen mit detailierten Beispielen

bkh

---

<div class="post-metadata">

**Author:** ![bkh](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/b/da6949/32.png) [@bkh](https://community.mp3tag.de/u/bkh)\
**Post date:** [January 4, 2021, 11:24am UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800/27 "2021-01-04T11:24:28Z")

</div>

Mit der Aktion Tag-Felder importieren und der RegEx-Funktion

$regexp(%artist%,(._)( feat. | & | vs. | with | pres. | duet with | duet |, )(._)( feat. | & | vs. | with | pres. | duet with | duet |, )(._)( feat. | & | vs. | with | pres. | duet with | duet |, )(._),$1\\$3\\$5\\$7 +++ $char(32)$2$char(32)\\$char(32)$4\\$char(32)$6$char(32))

ist es mir gelungen die einzelnen Werte zu trennen und den Tags zuzuordnen.

Soweit so gut.

Nach der Aktion Tag-Feld aufteilen "\" werden jedoch die Leerzeichen am Anfang und Ende des Strings entfernt.  
In dem Ziel-String zum Formatieren für Dateinamen jedoch würden diese benötigt.  
Aber dafür werde ich auch noch eine Lösung finden.

 ![Nach Tagging mit MB-Picard](https://community.mp3tag.de/uploads/default/original/2X/0/0a6d846d79bb929ffe265e1d10a1c80e21b919c7.jpeg)

 ![Tagging nach Aktion](https://community.mp3tag.de/uploads/default/original/2X/2/2028f097b2633e2b18a25840e77b512c32d022d7.jpeg)

Eine Frage habe ich noch:  
Gibt es eine Möglichkeit, das oben angegebene Funktion auch für ARTISTS mit nur 2 oder 3 Interpreten und entsprechenden JOIN PHRASES funktioniert?

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [January 4, 2021, 11:47am UTC](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800/28 "2021-01-04T11:47:56Z")

</div>

Um die JOIN-Phrases in der vorgefundenen Reihenfolge in ein multivalue-Feld JOIN zu kriegen, kannst du z.B. diese Funktion anwenden:  
`$regexp($replace(%artist%, ,\\),\u\l*,%dummy%)`  
Die lässt nur noch die Bestandteile übrig, die nicht mit einem Großbuchstaben anfangen und dann mit einem Kleinbuchstaben weiter gehen.

Bei der Anwendung für `$regexp($replace('David Guetta & Afrojack feat․ Charli XCX with French Montana', ,\\),\u\l*,%dummy%)`  
kommt raus:  
`\\\\&\\\\feat․\\\\\\with\\\\`  
Wenn du das als Format string für JOIN nimmst, ergibt dies 3 JOIN Felder in der Reihenfolge "&", "feat." und "with".  
Die vielfach-Schräger-Paare, die ggf. zu einem leeren Feld führen würden, werden verworfen, das es keine leeren Felder gibt.  
Anschließend entfernst du per $replace() alle join-Schlüsselwörter aus ARTIST bzw. ersetzt sie durch den Doppel-Rückwärts-Schräger `\\`

[Previous page](https://community.mp3tag.de/t/artist-tag-nach-mb-picard-nicht-teilbar/50800.md?page=1)
