Ersetze wenn Feld1 =x dann Feld2 =y

Ich habe einiges probiert mit "$if($eql(%mixartist%,..." usw. Ich bin aber nicht annäherend zu meienem gewünschten Ergebnis gekommen. Deshalb die Frage: Wäre so eine Aktion machbar?

wenn %MIXARTIST% enthält "thomas mann" dann ersetze %LYRICIST% mit "Mann, T."
wenn %MIXARTIST% enthält "heinrich mann" dann ersetze %LYRICIST% mit "Mann, H."
wenn %MIXARTIST% enthält " zola" dann ersetze %LYRICIST% mit "Zola"
wenn %MIXARTIST% enthält " welles" dann ersetze %LYRICIST% mit "Welles"
wenn %MIXARTIST% enthält " falada" dann ersetze %LYRICIST% mit "Fallada"
usw.

Hallo Manfred, hier erst einmal etwas Ähnliches zum Ausprobieren ...

Vorname Nachname tauschen in Namenliste Von: COMPOSER = Pearl Jam, Neil Young Nach: COMPOSER = Jam, Pearl; Young, Neil $cutRight($regexp(%COMPOSER%', ','(.*?) (\w*), ','$2, $1; '),2) ... oder ... $trimRight($regexp(%COMPOSER%,'(.*?) (\w*)[, ]*','$2, $1; '),'; ') ... oder ... $trim($regexp(%COMPOSER%,'(.*?) (\w*)(?:, |$)','$2, $1; ')) ... oder ... $trim($regexp(%COMPOSER%,'(.*?) (\w*)[, ]*','$2, $1; '))

Siehe auch ...
/t/11298/1

DD.20160115.1531.CET

Danke für die schnelle Antwort.
Ich habe mich wohl missverständlich ausgedrückt. Es geht mir NICHT um die Drehung von Vor- und Zuname. Die Beispiele gehen davon aus, dass ich in einem Tagfeld JEDEN Eintrag drehen will. Dieser Eindruck ist wohl durch die ungeschickt Wahl der ersten beiden Beispele entstanden.

Es war anders gemeint: Ich möchte nur wenige konkrete MIXARTIST-Einträge in gekürzter konkreter Form in LYRICIST übertragen. Alle anderen Datensätze sollen unbearbeitet bleiben. Mit "konkret" meine ich die Tatsache, dass ich das in der Aktion so in Klartext vorgeben will. Es werden dann so ungefähr 20 Zeilen werden (d. h. 20 Einzelfälle), mehr nicht. Also es geht nicht um eine pauschale Ersetzung aller Datensätze.

Die "$if($eql(%mixartist%,..."-Anweisung ist deshalb nicht möglich, weil in MIXARTIST auch noch (durch Komma leer getrennt) weitere Namen stehen können (z.B. Émile Zola, Jean Renoir); oder Varianten wie "Emilé Zola" statt "Emile Zola". Das Beispiel Thomas/Heinrich Mann habe ich nur gewählt, weil ich diese beiden Personen unterscheiden will. In den anderen Fällen beschränke ich mich auf den Zunamen.

Sorry, dann habe ich es falsch verstanden.

Neuer Versuch.
Hierbei gibt es ein Hilfsfeld TABLE_ARTIST, welches in jeder Zeile eine Zuordnung enthält: Artistname und neuer Wert.
Wenn ARTIST == "heinrich mann", ...
dann ist das Ergebnis ...
LYRICIST = "Mann, H."

TABLE_ARTIST <== 'thomas mann~~~Mann, T.
<!--coloro:#008080--><span style="color:#008080"><!--/coloro-->heinrich mann~~~Mann, H.<!--colorc--></span><!--/colorc-->
<!--coloro:#008080--><span style="color:#008080"><!--/coloro-->zola~~~Zola<!--colorc--></span><!--/colorc-->
<!--coloro:#008080--><span style="color:#008080"><!--/coloro-->welles~~~Welles<!--colorc--></span><!--/colorc-->
<!--coloro:#008080--><span style="color:#008080"><!--/coloro-->falada~~~Fallada<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc-->
LYRICIST <== $regexp(%TABLE_ARTIST%,'.*'%ARTIST%'~~~(.+?)$.*','$1',1)

Den Tabellentext kann man eingeben in der Ansicht "Erweiterte Tags" ...
oder aus einer Textdatei einlesen, ohne den Text in Apostrohe zu fassen.

DD.20160115.1626.CET, DD.20160116.1042.CET

Vielleicht meinst du aber so etwas?

LYRICIST <== $ifgreater($strstr(%MIXARTIST%,%ARTIST%),0,'hier der neue Wert',%LYRICIST%) ... oder ... LYRICIST <== $ifgreater($strstr($lower(%MIXARTIST%),$lower(%ARTIST%)),0,'hier der neue Wert',%LYRICIST%)

... also praktisch ...

LYRICIST <== $ifgreater($strstr(%MIXARTIST%,'thomas mann'),0,'Mann, T.',%LYRICIST%) ... oder ... LYRICIST <== $ifgreater($strstr($lower(%MIXARTIST%),$lower('Thomas Mann')),0,'Mann, T.',%LYRICIST%)

DD.20160115.1658.CET

Danke für die kompetente Antwort! Die Vaiante "... also praktisch ..." funktioniert. Allerdings wäre die Variante "TABLE_ARTIST" für mich wesentlich praktischer. Damit bin ich aber nicht zurecht gekommen. Ich habe das Beispiel folgendermaßen abändern wollen:

TABLE_MIXARTIST <==
'Edgar Allan Poe~Poe, E.A.
Bertolt Brecht
~Brecht, B.
Honoré de Balzac~Balzac, H.d.
Alfred Döblin
~Döblin, A.
Rainer Werner Fassbinder~Fassbinder, R.W.
Heinrich Mann
~Mann, H.
Klaus Mann~Mann, K.
Thomas Mann
~Mann, T.
Günter Grass~~~Grass, G.'

LYRICIST <== $regexp(%TABLE_MIXARTIST%,'.'%MIXARTIST%'~~~(.+?)$.','$1',1)

Dabei habe ich die Tabelle in
Tag-Feld formatieren "TABLE_MIXARTIST" eingeben wollen. Tag-Feld formatieren läßt jedoch nur eine Zeile zu.

Die zweite Aktion habe ich ebenfalls als "Tag-Feld formatieren" eingegeben.
Ich erhielt erwartungsgemäß nicht das gewünschte Ergebnis.

Siehe Ergänzung oben in post #4.

DD.20160116.1046.CET


Ist das so richtig?

Damit wird aber die ganze Tabelle in jeden Datensatz geschrieben.


  1. Zuerst wird die externe Tabelle in ein Tagfeld geschrieben, z. B. TABLE_MIXARTIST.
  2. Dann muss der MIXARTIST im Tagfeld TABLE_MIXARTIST gefunden werden und das Ergebnis in das Tagfeld LYRICIST geschrieben werden.
    Wenn ein passender Mixartist in der Tabelle gefunden wurde, dann sollte das Ergebnis im Tagfeld LYRICIST erscheinen.
    Wenn ein passender Mixartist in der Tabelle nicht gefunden wurde, dann verhält sich die nicht passende Mp3tag $regexp Funktion so, dass sie den vollständigen Eingabewert zurückliefert; dieses Verhalten ist eigentlich soweit bekannt.
  3. Damit ein Tagfeld LYRICIST nicht angelegt wird, welches denselben Inhalt hat wie TABLE_MIXARTIST, muss man nach den beiden ersten Schritten noch einen dritten Schritt vollziehen, der den Inhalt der beiden Tagfelder miteinander vergleicht, und bei Gleichheit schließlich das Tagfeld LYRICIST entfernt.
  4. Hilfs-Tagfeld TABLE_MIXARTIST entfernen.

DD.20160117.1445.CET

Danke für die ausführliche Anleitung. Es funktioniert prizipiell. Ich habe es zunächst nur nicht erkannt, weil bei fast allen Datensätzen die vollständige Tabelle in LYRICIST stand. Das lag aber daran, dass in MIXARTIST häufig mehrere Namen durch Komma getrennt standen. Ich werde das Problem dadurch lösen, dass ich ein weiteres temporäre Zwischenfeld einführe, bei dem der erste Name abgetrennt wird.

Nochmals Danke für Deine Hilfe!

Hallo.
Ich suche eine Aktion, die folgendes bewerkstelligt:
Schaue, ob im Feld "Titel" einer MP3 bereits etwas steht, und wenn nicht, dann fülle das Feld mit einem Teil des Dateinamens (liegt im Format Interpret - Titel - Album - Track.mp3 vor). Ansonsten lass das Feld Titel unberührt.

Gibt es da etwas einfacheres als obiges Beispiel? Eine externe Tabelle brauche ich doch dafür sicherlich nicht?

Vielleicht hilft dieser Thread:
/t/11235/1

Deine Frage passt irgendwie nicht zum Thema dieses Threads.
Hier geht es eher um eine Rechtschreibkorrektur.

Das kann man machen so ...
ANTWORT <== $if(%TITLE%,'Titel ist vorhanden','Titel ist nicht vorhanden')

TITLE <== $if(%TITLE%,%TITLE%,'neuer Text')
... oder ...
TITLE <== $if2(%TITLE%,'neuer Text')

Für "Teil des Dateinamens" siehe Mp3tag String Funktionen ...
oder andere Funktionen z. B. "Tag-Felder importieren".

DD.20170628.1107.CEST