Hallo
mir wurde hier schon super geholfen mit einer Aktion, mit der ich Komponisten formatieren kann (im Prinzip Vor- und Nachnamen tauschen):
$regexp($regexp(%composer%,(.*?) (\w*)('; '|$),$2', '$1; ),; $,)
Aus dem Ergebnis leite ich dann den Nachnamen für eine weitere Aktion ab.
Funktioniert soweit perfekt, auch mit mehreren Vornamen, aber nicht, wenn ein Bindestrich im Namen vorhanden ist - beim Nachnamen wird aus Camille Saint-Saëns weiterhin Camille Saint-Saëns und nicht Saint-Saëns, Camille. Und wenn der Vornamen einen Bindestrich hat, wir auch nicht umgedreht.
Könnt Ihr da helfen, wo es hakt?
Vielen Dank!
P.S.: Sorry, hatte vergessen, den Code richtig einzufügen - danke für den Hinweis!
Ich habe dies versucht:
$regexp($regexp(%composer%,(.*?) (\w*|\w*-\w*)('; '|$),$2', '$1; ),; $,)
Aber warum weiterhin 0 oder mehr statt 1 oder mehr?
(\w+|\w+-\w+)
Es gibt weitere Zeichen, die von \w
nicht abgedeckt werden, aber in Namen vorkommen können, bspw. Apostroph '
oder ’
in irischen und aus dem Kyrillischen transliterierten Familiennamen.
Mir kamen da spontan noch Namen wie
Hildegard von Bingen
oder
Ludwig van Beethoven
in den Sinn. Da wird es dann schwierig und zeigt auch, dass man auch mit regulären Ausdrucken kaum je eine perfekte Abdeckung hinkriegt.
Vielleicht reicht es ja, wenn man den Großteil der Fälle mit dem Regulären Ausdruck abdeckt und die SOnderfälle dann mit einem Schwung "Ersetzen"-Aktionen.
Dankeschön, ich habe es gerade mit Phantasienamen mit mehreren Bindestrichen ausprobiert, funktioniert hervorragend!
Also, bei meinem "Original" passte das schon wunderbar, da wird ein "Beethoven, Ludwig van" draus - genau so sollte es ja sein. Mit dem neuen Vorschlag klappt das auch.
Mein Problem waren nur die Bindestriche, die mir einfach zu oft unterkamen. Bei allen anderen "Sonderfällen" arbeite ich halt manuell nach.
Unabhängig vom aktuellen Problem mal noch ein dickes Danke und Lob an die Community - durch Euch hab' ich mir über die Zeit eine ganze Zahl an Automatismen schaffen können, die die Erstellung von Tags für meinen Streaming Server enorm erleichtert. Ein Klick und aus den typischen Schreibweisen bei Klassik erzeuge ich automatisch Opus, Satz, Komponisten-Sortierung, Titel mit Komponisten-Nachnamen - Opus - Satz, und und und (das, was der Musik-Freak halt so alles im Suchkatalog braucht... )
Müsste ich das alles per Hand eingeben (bzw. die teilweise sehr übel zugerichteten Tags der von Qobuz, HDTracks & Co alle von Hand korrigieren), käme ich aus dem Tippen nicht mehr 'raus....
Hallo @Crissov - ich bin leider kein Programmierer, wie Du sicher schon gemerkt hast Was heißt das denn jetzt übersetzt? Ist Dein Vorschlag eine Abwandlung, die mehr als nur Bindestriche abdeckt? Ich sehe erstmal nur das + und das * als Unterschied - deckt das "Sonderzeichen" ab?
Nach meiner Logik hiess Ludwig mit Nachnahmen "van Beethoven". Aber wenn das für Dich mit "Beethoven, Ludwig van" passt, dann passt der reguläre Ausdruck auch für diese Fälle.
könnte man auch abwandeln zu
$regexp($regexp(%composer%,(.*?) (\w*|\w*.\w*)('; '|$),$2', '$1; ),; $,)
Damit werden
Ich weiß aber nicht, welche ungewollten Nebenwirkungen es geben könnte.
@dvdr: Kannst Du uns bitte erklären, was Du mit den Strichpunkten in Deinem regulären Ausdruck erreichen willst? Möchtest Du damit mehrere Komponisten die mit Strichpunkt getrennt aufgeführt sind einzeln behandeln/tauschen?
Hallo @LyricsLover - ich kann Dir das leider nicht erklären. Ich hatte vor ewiger Zeit mal um Hilfe zum "Namensdrehen" gebeten und diesen Code bekommen und ihn dann einfach verwendet. Es könnte tatsächlich sein, dass damit das Problem mit der Strichpunkt-Trennung angepackt wird, weil sowohl bei der Umwandlung des Tags "Artist" in "Artiststort" oder eben "Composer" in "Composersort" die Originaltags bei mehreren Personen klassischerweise per Strichpunkt getrennt sind.
Wird denn der Strichpunkt beim Kodieren in der Regel für etwas anderes verwendet?
Bei regulären Ausdrücken ist jedes einzelne Zeichen und dessen Reihenfolge entscheidend.
Wenn es aber wie von Dir erklärt zur Trennung der einzelnen Komponisten ist, dann ist das schon in Ordnung.
Meine Nachfragen und Bemerkungen sollen auch keinerlei Kritik sein, sondern nur für spätere Lösungssucher aufzeigen, dass es hier nicht einfach nur um einen "Vor- und Nachnamen-Tausch" geht, sondern - wie wir nun alle wissen - um aus mehreren Komponisten in der Form von
Camille Saint-Saëns; Ludwig van Beethoven
die Komponisten-Sortier-Variante
Saint-Saëns, Camille; Beethoven, Ludwig van
in COMPOSERSORT abzuleiten.
Dabei wird jeweils jeder einzelne durch Strichpunkt und Leerschlag getrennte Komponist behandelt und von diesem das letzte Wort (welches meistens den Nachnamen enthält) an erste Stelle gestellt. Dann zusätzlich ein Komma und ein Leerschlag hinzugefügt und der Rest (meistens der Vorname) angehängt.
Nachtrag:
Zukünftige Leser sollten beachten, dass obiger Ausdruck für klassische Komponisten funktioniert.
Wendet man den gleichen regulären Ausdruck aber auf Vertreter populärerer Musik an, würde z.B. aus
Huey Lewis and the News
-> News, Huey Lewis and the
The Mamas & the Papas
-> Papas, The Mamas & the
Bob Marley & The Wailers
-> Wailers, Bob Marley & The
Ich würde sowas für die Erkennung eines (optionalen) Nachnamen vorschlagen: (\w*|\w+[-'’]\w+)
oder (\w+([-'’]\w+)?)
.
Man könnte auch für den Vornamen Bindestriche (wie in Karl-Heinz) zulassen: ([\w-]*?)
.
würde z.B. aus
Earth, Wind & Fire -> "Fire, Earth, Wind &
Dave Dee, Dozy, Beaky, Mick & Titch -> Titch, Dave Dee, Dozy, Beaky, Mick &
Zusatz: ich finde diese ganze Umdreherei sowieso überflüssig.
Wo wird denn der COMPOSER gezeigt? Im Abspieler, vermute ich mal. Und der zeigt einem garantiert alle Einträge von Ludwig van Beethoven, Beethoven, Ludwig van und van Beethoven, Ludwig, wenn man einfach nur "Beethoven" eintippt.
Also muss ich doch die Namen sowieso kennen. Oder ich blättere eine Liste durch nach dem Motto "mal sehen, was so da ist" und dann ist eine alphabetische Sortierung nach mehr oder weniger willkürlichen Kriterien eh egal.
Mein ganz eindeutiges Placet: Alle Namen so eingeben, wie sie von vorne nach hinten gelten. Alles andere führt zu komplizierten Ausnahmeregeln, die ein leichteres Auffinden verhindern.
Aber das ist nur meine Meinung. Die ggf. gewünschte Technik zum Umdrehen haben wir hier beschrieben. Also: möglich ist es, ob es sinnvoll ist ... s.o.