Formatierung von UNSYNCEDLYRICS

Bei der Nutzung von Webquellen kommt es immer wieder zu Songtexten in UNSYNCEDLYRICS, die noch einer Nachbearbeitung bedürfen.

Dafür nutze ich u.a. folgenden Formatstring:
$replace(%unsyncedlyrics%,verse,$char(13)$char(10)'[Verse]',intro,$char(13)$char(10)'[Intro]',chorus,$char(13)$char(10)'[Chorus]',outro,$char(13)$char(10)'[Outro]',hook,$char(13)$char(10)'[Hook]',bridge,$char(13)$char(10)'[Bridge]')

Vorgefunden werden die Strings "verse", "intro", "chorus" usw. in einem durchgehenden Songtext ohne doppelte Zeilenabstände zur Unterteilung in Strophen, Refrains usw., die dann durch [Verse] usw. ersetzt werden. Dabei wird davor noch ein CR\LF eingefügt.

Aus dem vorgefundenen Zustand:

verse
Das ist die 1. Zeile der Strophe
Das ist die 2. Zeile der Strophe
Das ist die 3. Zeile der Strophe
chorus
Das ist die 1. Zeile des Refrains
Das ist die 2. Zeile des Refrains

wird so:

[Verse]
Das ist die 1. Zeile der Strophe
Das ist die 2. Zeile der Strophe
Das ist die 3. Zeile der Strophe

[Chorus]
Das ist die 1. Zeile des Refrains
Das ist die 2. Zeile des Refrains

Leider hat das ganze noch einen Schönheitsfehler dergestalt, dass am Anfang des Songtextes jedes mal ein CR\LF eingefügt wird, das ich anschließend löschen muss.

Lässt sich dieser zusätzliche Arbeitsschritt irgendwie vermeiden?

Es soll also nur am Anfang des Songtextes ein Ersetzen des jeweiligen Strings ohne vorgestellten CR\LF ($char(13)$char(10) erfolgen. Der String kann im weiteren Songtext noch öfters vorkommen.

Für MP3s, wo dann auch noch das Sprachkürzel vorangestellt wird, ließe sich das so umgehen:
$replace(%unsyncedlyrics%,xxx||$char(13)$char(10),xxx||)
Meiner Ansicht nach ist ein 2. Bearbeitungsschritt am einfachsten umzusetzen als lange mit komplexen $if() rumzubasteln.
De facto ist ein $replace() sowieso implizit "wenn xyz da, ersetze durch abc".

Und für UNSYNCEDLYRICS ohne Sprachkürzel geht
$trim(%unsyncedlyrics%)

Alle 3 Scripting-Funktionen ließen sich ja ggf. schachteln

Gibt es "ohne Sprachkürzel"? :thinking:

%unsyncedlyrics% liefert m.W. immer den Test mit dem Sprachkürzel und den Pipes.
Ein Problem ist ja, dass wegen des Sprachkürzels ein $trim() am Anfang des Feldtextes nicht funktioniert.

Wenn es ohnehin über eine zusätzliche Aktion gehen muss, bevorzuge ich dann doch eine allgemeinere Lösung, die nicht nur CR\LF sondern auch Leerzeichen und andere nicht sichtbare Zeichen umfasst, weil sowas auch immer ansteht. Nach langem Rumrätseln und Ausprobieren bin ich auf diesen regulären Ausdruck gekommen.
$regexp(%unsyncedlyrics%,'^(...)\|\|[\s\r\n\t]+','$1||')

Soweit ich weiß gibt es das Sprachkürzel nur bei MP3.
MP4 hat das nicht, FLAC auch nicht.

Da magst Du Recht haben. Andere spielen bei mir in der Praxis keine Rolle.