Genau, inkl. der neuesten Erfindung rund um den Buchstaben x
Mir ist es eigentlich egal, ob der erstgenannte Künstler "wichtiger" als der Zweitgenannte ist und deshalb "feat." in irgendeiner Schreibweise verwendet wird.
Mir ist auch egal, ob mit x in "Kygo x Selena Gomez" angedeutet wird, dass beide Künstler gleichberechtigt zusammenarbeiteten.
Das & verwende ich persönlich eher bei festen Gruppen wie "Simon & Garfunkel" oder "Earth, Wind & Fire" (wobei letztere ja keine Künstlernamen sind, im Gegensatz zu Paul Simon und Art Garfunkel.)
Ich sehe das ähnlich wie @ohrenkino und nehme mir meine eigene "künstlerische Freiheit" bei der Benamsung.
Da ticken wir definitiv anders - da ich in meinem Arbeitsalltag mit einer großen Anzahl an Programmen arbeite und jedes anders "tickt", vermeide ich Sonderzeichen, die auch nur eines der Programme als Steuerzeichen deutet, so weit es geht...
was das "Featuring" betrifft - das ist ein Relikt aus den 1980ern und 1990ern - im Zeitalter von "vs.", "X" oder sonstwas gibt es schlichtweg keinen Hauptinterpreten mehr. "Früher" hat man da den genommen, auf dessen Album das drauf war, so wie
AAA (feat. XY) - YZ
Wenn es dann aber auch YZ auf sein Album nahm, hat dessen Label es als
AAA (feat. YZ) - XY getagt .. und schon hab ich ein und dieselbe Nummer unter zwei Titeln.
Daher haben nach meinem Verständnis ARTISTs nichts mehr im Tag verloren.
Ich steuer es dann darüber, dass beide Titel
AAA - XY\YZ
sind,
Aber einmal XY der Albumartist und einmal YZ...
Simon + Garfunkel stehen bei mir mit "+", weil es ja Paul Simon + Art Garfunkel sind,
Earth, Wind And Fire aber mit "AND", da es ja nicht Herr Earth, Herr Wind und Herr Fire sind...
Ebenso sind "Ich und ich" nicht "Ich & ich".
Simon + Garfunkel tagge ich auch wirklich so, weil sie ja eine längere Zeit zusammengearbeitet haben, ebenso wie "Ike + Tina Turner", die so stehen bleiben und nicht als "Ike Turner\Tina Turner" in der Datenbank landen oder "Daryl Hall + John Oates".
Künstler, die aber nur ein oder zwei Alben zusammen gemacht haben - gerade fällt mir nur "Thomas Anders + Florian Silbereisen" ein bleiben dann aber "Thomas Anders\Florian Silbereisen".
Aber ich denke auch, das sollte jeder machen, wie er will - Hauptsache er/sie/es macht es für seine/ihre Sammlung einheitlich...
Aus unserer Diskussion sollte sich mittlerweile das Bild ergeben haben, dass eine automatisierte Auswertung nach "Fehlern" nicht wirklich möglich ist.
Schludrigkeiten bei der Eingabe lassen sich durch vorhandene FUnktionen oder Aktionen abdecken - aber (automatische, fest eingebaute) eine Anzeige, was als Fehler zu interpretieren ist und was nicht, ist mMn nicht umzusetzen.
Es bleibt für mich dabei: die vorhandenen Funktionen reichen eigentlich aus.
Solche Unterscheidungen würde ich nie machen, weil ich mir dann zusätzlich zum Namen auch noch merken muss, ob ich die als Personen oder als andere Bezeichnungen eingestuft habe.
Ist der Künstler "Judy and Mary" eine Person oder eine Gruppe oder 2 Individuen? (Es sind 3: Takuya (3); Yoshihito Onda; Yuki)
Für mich hilft da die Vereinheitlichung. Das muss nicht für jeden gelten.
und teste sie wie empfohlen über "Tag - Tag". Aber - ich bekomme immer ein "invalid Syntax". Habe jetzt so ziemlich alles versucht, was ich an Bordmitteln kenne (" " oder statt ' ' für den Ausdruck, wahlweise escapen von Leerzeichen oder = Zeichen ... ich finde den Fehler nicht und habe auch keine Ahnung, wie ich mich ihm nähern kann...
Im Titel hat m.E. ein Ampersand nur etwas zu suchen, wenn er tatsächlich als solcher typischerweise Verwendung findet. Der Ampersand ist keine generelle Alternative zu "and".
Bei Bandnamen käme ich aber auch nicht auf die Idee "Of Mice and Men" in "Of Mice & Men" oder "Florence + the Mechine" in "Florence & the Machine" zu ändern. Im Prinzip neige ich Zweifelsfall, wenn bei Bandnamen sowohl "and" als auch der Ampersand in der freien Wildbahn gleichberechtigt verwendet werden zu "&".
Feat. sollte eigentlich nur Verwendung bei einem hervorgehobenen Gastmusiker/Gastinterpreten finden. "Echte" Duos fallen eigentlich nicht darunter.
Leider verstehe ich noch nicht, was genau Du als funktionierenden Filter verwendest und neu als Spaltenprüfung haben möchtest.
Bitte zeig uns den kompletten Filter, unbedingt in Backticks ("schräge Hochkomma" -> `) einschliessen oder in Deiner Antwort den Code-Button verwenden:
(%title% MATCHES (&|;|^\s+|\s+$|\s\\|\\\s|\s\s+|\")) OR (NOT %title% MATCHES "^[a-zA-Z0-9äöüÄÖÜ=ß' \-\(\)\/:,\.\?!#\+@_%\*\']+$")
Teil 1 funktioniert als Formel - ich versuche nun im nächsten Schritt Teil 2 als Formel zum Laufen zu bringen, um sie dann in den "dann" Teil des If-Clause zu hängen, also
Das quittiert "Tag - Tag" aber mit einem "Invalid Error".
Daher habe ich versucht die "Hochkomma" im 2. regexp Paarameter zunächst durch Anführungszeichen, dann durch Klammern zu ersetzen - ohne Erfolg.
Als nächstes habe ich versucht das Leerzeichen und das =-Zeichen zu maskieren . auch nichts...
und da gehen mir die Ideen aus da "Invalid Syntax" mich nicht näher bringt WO genau es hakt...
Die erklärende Schreibweise für Dein OR und NOT im Filter wäre für eine Spalte wie folgt:
$if(
$or(
$regexp(%title%,'(&|;|^\s+|\s+$|\s\\|\\\s|\s\s+|")',1),
$not($regexp(%title%,'^[a-zA-Z0-9äöüÄÖÜ=ß'' \-\(\)\/:,\.\?!#\+@_%\*]+$',1))
),
BAD,
OK
)
Als Einzeiler - kaum mehr lesbar - und noch viel schlechter wartbar: $if($or($regexp(%title%,'(&|;|^\s+|\s+$|\s\\|\\\s|\s\s+|")',1),$not($regexp(%title%,'^[a-zA-Z0-9äöüÄÖÜ=ß'' \-\(\)\/:,\.\?!#\+@_%\*]+$',1))),BAD,OK)
Mangels konkreter Beispiele kann ich nicht 100% garantieren ob diese OR und NOT-Verknüpfung wirklich wie gewünscht funktioniert. Du hast jetzt aber damit das Gerüst um in Deiner Sammlung testen zu können.
Da sind wir an einem Punkt angelangt, wo ich persönlich zwei Spalten verwenden würde, um einerseits den Schwierigkeitsgrad zu reduzieren und gleichzeitig die Wartbarkeit zu erhöhen.
Schon die Text-Erklärung ist nicht ganz ohne:
Diese Spaltendefinition prüft, ob das TITLE-Feld problematische Inhalte enthält. Sie meldet BAD, wenn
a) unerwünschte Muster vorkommen (z. B. führende/folgende Leerzeichen, doppelte Leerzeichen, &, ;, Backslashes, Anführungszeichen) oder
b) TITLE Zeichen enthält, die nicht in der definierten Whitelist erlaubt sind.
Alles andere wird als OK markiert.
Das muss aber schlussendlich jeder für sich selber entscheiden.
Stimmt, bis dahin funktioniert es (hatte Dir leider einen "Versuch" zu früh geschickt - er erkennt aber alle Eingaben mit Apostroph (CHR(39)) als BAD / .
Nun begann meine Odyssee:
(ich spreche nur vom zweiten Teil der "Formel", noch nicht von der "OR" Verknüpfung, also den Filter: NOT %title% MATCHES "^[a-zA-Z0-9äöüÄÖÜ=ß \-\(\)\/:,\.\?!#\+@_%'\*]+$"
(hier ist das ' sogar unmaskiert drin und funktioniert...)
Wenn ich das doppelte Apostroph setze, ändert sich nichts - die Eingabeprüfung funktioniert, alle Eingaben mit Apostrophs werden aber als BAD erkannt.
Wenn ich das ' als einzelnes Zeichen hinzufüge $if($eql($regexp(%title%,'^[a-zA-Z0-9äöüÄÖÜ=ß \-\(\)\/:,\.\?!#\+@_%\*']+$',''),%title%),❌,)
erkennt er ALLE Eingaben als "gut", auch wenn sie unerwünschte Zeichen enthalten.
If frage mich immer, was bei diesen regulären Ausdrücken als Ergebnis herauskommen soll.
Also die konkrete Frage: wenn ich den regulären Ausdruck anwende, was zeigt dann die Vorschau? Und ist das das gewünschte Ergebnis?
Nur so: wenn ein regulärer Ausdruck keinen Treffer hat, ist das Ergebnis der Eingabestring. Wenn der aus einem Feld kommt und ich den Feldinhalt mit dem unveränderten Feldinhalt vergleiche, kommt immer ein OK dabei heraus.
OK, ich gehe noch mal einen Schritt zurück - vielleicht habe ich auch einen Denkfehler, aber nach meinen Test SCHEINT es am Apostroph zu liegen.
Ich nehme mal die Idee von @ohrenkino auf, zuerst die regexp isoliert zu betrachten.
Die Grundidee ist ja - ich denke, das ist jedem klar - zu schauen, ob in einem String / einer Eingabe nur die hier vorgegebenen Zeichen enthalten sind.
Als Filter funktioniert das super und fehlerfrei, das Apostroph muss auch weder maskiert noch gedoppelt werden: NOT %title% MATCHES "^[a-zA-Z0-9äöüÄÖÜ=ß' \-\(\)\/:,\.\?!#\+@_%\*]+$"
Nun will ich das ganze als Funktion/Formatstring haben und teste es an "Tag - Tag".
Zunächst teste ich die Funktion komplett ohne Apostroph:
Die Funktion macht, was ich erwarte:
Wenn %title% nur die angegebenen (erwünschten) Zeichen enthält, erscheint GOOD,
wenn weitere (unerwünschte) Zeichen enthalten sind, erscheint der %title%.
Natürlich erscheint der %title% auch bei allen Zeichenketten, die das Apostroph enthalten, ich habe es ja noch nicht zu den erwünschten Zeichen hinzugefügt.
Das mache ich jetzt zunächst wie im Filter ohne jede Maskierung:
und laufe in einen Invalid Syntax error - das kommt erwartet, da er das ' nunmehr als Counterpart zum ', das den regulären Ausdruck einschließt, betrachtet und für ihn daher danach nur noch dummer Zeug kommt.
Also maskiere ich es, wie die anderen "Steuerzeichen" -()* usw...
Auch das gibt einen Invalid Syntax Error - für mich überraschend, bedeutet aber m.E., dass er kein Maskieren des Apostrophs erkennt / anerkennt und daher hier nur das ' als Ende des regulären Ausdrucks sieht und dahinter dummes Zeug erkennt.
Und siehe da: Kein Error mehr... aber auch keine Änderung zum Ursprungsverhalten ohne jedes Apostroph. Weiter werden Titel, die das ' enthalten, nicht als GOOD erkannt - er erkennt demnach weiterhin das Apostroph nicht als erwünschtes Zeichen...
Auch jeglicher Versuch, hier ein CHR(39) einzubauen, in welcher Schreibweise auch immer (CHR(39),CHR[39],$CHR(39),$CHR[39]), ändert daran nichts. Das Apostroph bleibt für ihn unerwünscht.
Meine allerletzt Idee war jetzt noch, dass er den regulären Ausdruck nicht in Apostrophs eingeschlossen haben will, sondern "gar nicht", in runden Klammern, in eckigen Klammern... Fehlanzeige, er läuft immer in einen Invalid Syntax Error, er besteht also auf die umschließenden Apostrophs...
Habt Ihr noch andere Ideen?
Natürlich könnte es auch ein Bug sein, dass er das ' maskiert (oder gedoppelt) nicht zulässt, aber eh ich da irgendwas ins Bug-Forum schreibe (das ist sozusagen meine Ultima Ratio), mag ich es hier nochmal diskuttieren....
Damit endet zunächst meine Weisheit, ihm zu erklären, dass das ' "erlaubt" ist.
$if(
$eql(
$regexp(%title%,'[^a-zA-Z0-9äöüÄÖÜ=ß ''\-\(\)\/:,\.\?!#\+@_%\*]',''),
%title%
),
OK,
BAD
)
Dieser Ausdruck prüft den Inhalt von TITLE ob er ausschliesslich aus Zeichen in der Whitelist besteht, indem er alle anderen Zeichen entfernt und mit dem Original-TITLE-Inhalt vergleicht. Ist er identisch wird ein OK angezeigt, sonst ein BAD.
Soweit ich es bisher verstehe (und durch Tests nachvollziehen kann), gibt es eine "Besonderheit" bei der Behandlung von $if und $regexp.
Deshalb muss man quasi die Blacklist zur Whitelist machen:
Zu der inhaltlichen Frage, warum ich es gerade alles in EINE Formel packen wil:
Das soll mir als "Warnzeichen" dienen, dass irgendwas nicht stimmt und soll optisch schnell erfassbar sein. Ich plane das für jede meiner Felder und da will ich es möglichst knapp halten, um nicht nachher 30 -Felder überblicken zu müssen.
Wenn ich das sehe, ist das erste, meine Korrekturgruppe zu starten - das ist das wahrscheinlichste, dass ich beim ersten Taggen vergessen habe die Korrekturgruppe zu starten oder sie inzwischen Korrekturen enthält, die sie beim ersten Taggen noch nicht enthielt - damit werde ich ca 90 % der erschlagen.
Bei den restlichen schaue ich per Hand - meist sehe ich recht schnell, was da noch zu tun ist und wenn ich es so gar nicht blicke, habe ich weitere Filter, die ich starten kann, um es einzugrenzen....