Album List: K|Karajan ... B|Berl.Phil.

Begonnen von stefle, 20. Juli 2009, 03:44:32

Vorheriges Thema - Nächstes Thema

stefle

Ist jetzt nicht so das dringende Problem, aber vielleicht weiß gerade niemand, wohin mit seiner Zeit.

Ich hab eine Album List, die nach Performern sortiert. Performer ist (neben Genre) vielleicht ein Parade-Beispiel für Multivalue-Fields. Im Fall Performer: Kissin; Karajan; Berliner Philharmoniker soll natürlich jeder Name einzeln in der Liste auftauchen.

Gibt es nun eine Möglichkeit, eine Ebene mit Anfangsbuchstaben voranzustellen, so dass folgende Struktur entsteht:

B|Berliner Philharmoniker
  .
  .
  .
K|Karajan
  .
  .
  Kissin
  .
  .


Meines Erachtens ist das mit Title Formatting nicht möglich, aber ich kann mich ja irren.

Vorteile hätte die Struktur eigentlich nur dann, wenn man die Tastatur nicht griffbereit hat und sich mit der Muas durch die Album List klickt. Kommt wohl eher selten vor. Allerdings habe ich eine ziemlich lange Liste mit ca. 600 verschiedenen Performern.

Morgentliche Grüße von stefle

tedgo

Hm, hab das gerade mal auf die Schnelle probiert und mit Multivalue Fields geht das tatsächlich nicht (zumindest nicht mit meiner Methode...)
Ich habe folgendes ausprobiert:
$left(%performer%,1)|%<performer>%|%album%|%tracknumber%. %title%

Damit würden unter K wie Kissin (da das ja an erster Stelle im Performer-Tag steht) bei deinem Multivalue-Beispiel folgendes gelistet:
K---
  Berliner Philharmoniker
  Karajan
  Kissin

was nicht gerade optimal wäre.

$left(%<performer>%,1)... funktioniert nämlich leider nicht...
Habe aber nur mit dem Album List Panel für Columns UI probiert.
Singlevalue-Fields würden aber korrekt einsortiert, nur hilft dir das wohl jetzt nicht so recht weiter  :-[

Eine Lösung dafür würde mich jetzt aus purer Neugier auch interessieren.

stefle

#2
Zusätzlich gibt es anscheinend Probleme mit String-Befehlen in Kombination mit %<xxx>%.

Siehe http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Titleformat_Album_List:

Any string manipulation function that removes a part of a string or inserts a substring by position is generally unsafe. This includes $left(), $right(), $cut(), $pad(), etc.

qwert73

Zitat von: tedgo in 20. Juli 2009, 09:05:36
Eine Lösung dafür würde mich jetzt aus purer Neugier auch interessieren.

Eine Lösung dafür gibt es nicht! Ich hoffe aber, dass das irgendwann mal möglich sein wird, da somit auf einen Schlag jede Menge sinnvoller Features und Funktionen sich verwirklichen ließen.

Wer das Album List Panel nutzt, dem können diese Funktionen nützlich sein, wenigstens bei mehreren Künstlern mit Artikeln umzugehen.

Der einzige mir bekannte Library Viewer, der eine Komplettlösung anbietet, ist das nicht empfehlenswerte und buggy Playlisttree (Mod). Wenn ich mich noch richtig erinnere, funktioniert es dort folgendermaßen: "$put(performer,%<performer>%) $left($get(performer),1)". Als ich das Snippet vor langer Zeit sah, kam mir das so nachvollziehbar vor, dass ich dachte, es wäre ein Feature von foobar - aber Pustekuchen!

stefle

#4
Ist zwar etwas OT  :-\ :-[ :-X  aba ...
... was mich schon länger gewundert hat: Wenn man Multivalue-Fields mit string functions (z.B. $replace) bearbeitet, wird aus dem Semikolon ein Komma, so dass sie als Multivalue-Field nicht mehr funktionieren. Ebenso funktionieren Semikolons nicht, die man mithilfe von string functions erzeugt (man muss stattdessen Split Values... bemühen). Offenbar wird bei string functions grundsätzlich nur ein Feld geschrieben. (Betrifft aber nur Title Formatting, denn bei der Capitalize-Funktion tritt der Effekt nicht auf.)

Ich frag mich gerade, ob es einen Zusammenhang meinem Album-List-Problem gibt.

stefle

Zitat von: tedgo in 20. Juli 2009, 09:05:36
Damit würden unter K wie Kissin (da das ja an erster Stelle im Performer-Tag steht) bei deinem Multivalue-Beispiel folgendes gelistet:
K---
  Berliner Philharmoniker
  Karajan
  Kissin

Interessanterweise passiert etwas ganz anderes. Das hängt wohl mit dieser Inkompatibilität zusammen, die auf der Hydrogenaudio-Seite dokumentiert ist.

qwert73

Zitat von: stefle in 22. Juli 2009, 04:43:30
... was mich schon länger gewundert hat: Wenn man Multivalue-Fields mit string functions (z.B. $replace) bearbeitet, wird aus dem Semikolon ein Komma, so dass sie als Multivalue-Field nicht mehr funktionieren. Ebenso funktionieren Semikolons nicht, die man mithilfe von string functions erzeugt (man muss stattdessen Split Values... bemühen). Offenbar wird bei string functions grundsätzlich nur ein Feld geschrieben.

Ich glaube, Du weißt nicht wirklich, was multiple Tags sind, so wie foobar2000 sie erzeugt. Also hier mal der Versuch einer simplen Erklärung:

Nehme mal einen anderen Player oder ein externes Taggingprogramm (MP3Tag z.B) und gebe dem Genre Tag folgenden Wert: "a;b;c".
Der Versuch, in foobar2000 dir die einzelnen Genres über %<genre>% zeigen zu lassen, funktioniert nicht - und Du fragst Dich: warum nicht? Warum muss man erstmal über "Split Values" gehen? Wenn Du innerhalb des Properties-Fensters einmal vor "Split Values" und ein zweites Mal nach "Split Values" schaust, was bei Genre steht, so wirst Du scheinbar dasselbe sehen - nämlich: "a;b;c". Zwingende Schlussfolgerung: auch wenn es gleich aussieht, so steht nicht das gleiche drin - heißt: das Semikolon erfüllt zwei grundverschiedene Funktionen.

Ein Tag besteht (vereinfacht geschildert) aus einem Frame und einem Wert. Wenn Du also z.B. in Mp3Tag dem Frame Genre den obigen Wert zuordnest, so hast Du folgendes Ergebnis:

GENRE = a;b;c
Das Semikolon ist ein stinknormales Satzzeichen und als solches hat es keine Sonderrolle.

Wenn Du jetzt in foobar2000 die Aktion "Spli Values" ausführst, so erhältst Du drei Frames:
GENRE = a
GENRE = b
GENRE = c

Das Semikolon, was Du nun im Properties-Fenster siehst, ist kein Satzzeichen mehr, sondern ein Hilfsmittel, um die mehrfache Auflistung des gleichen Frames unnötig zu machen (so macht es Mp3Tag). Das Semikolon bot sich wohl deswegen an, weil es so gut wie gar nicht in Songtiteln, Künstlername, usw. vorkommt.

Kapiert? Und auch verstanden, warum in den "Advanced Preferences" multiple Tags als solche deklariert werden müssen?

Notiz am Rande:

Auch andere Programme können mit "multiplen Werten" umgehen, jedoch werden keine multiplen Tags geschrieben: WMP z.B. benutzt lediglich ein Frame und splittet programmintern den darin enthaltenen Wert mit Hilfe des Semikolons auf. Für foobar2000 handelt es sich dabei dann jedoch um einen single Tag, der einen Wert enthält, welcher zufällig Semikolons enthält. Sowas kann einen schon in tiefe Verwirrung stürzen.

stefle

Offenbar habe ich mich unklar ausgedrückt.
Zitat von: stefle in 22. Juli 2009, 04:43:30
Offenbar wird bei string functions grundsätzlich nur ein Feld geschrieben. (Betrifft aber nur Title Formatting, denn bei der Capitalize-Funktion tritt der Effekt nicht auf.)

Die Art, wie foobar Multivalue Fields schreibt, ist mir bekannt. Aber wenn man mit String Functions über ein solches Multivalue Field (was in wirklichkeit mehrere Felder sind) hinweggeht, wird offenbar wieder ein einzelnes Feld geschrieben, welches eben ein Semikolon beeinhaltet. Man bekommt also Schwierigkeiten, wenn man solche Felder stapelweise bearbeiten will.

Ich hoffe, das habe ich jetzt richtig verstanden. Wenn ja, dann sehe ich einen Zusammenhang mit dem Thread-Thema, denn in der Album List kann man auch nicht ohne Gefahr String Functions einbauen.

qwert73

Zitat von: stefle in 30. Juli 2009, 08:47:54
Offenbar habe ich mich unklar ausgedrückt.

Hast Du! ;) Ich hab diesen Satz als Hinweis darauf (miß)verstanden, dass Du es nicht weißt: "Ebenso funktionieren Semikolons nicht, die man mithilfe von string functions erzeugt (man muss stattdessen Split Values... bemühen)"

(Ich hoffe aber, dass ich eine nachvollziehbare Erklärung für diejenigen hinbekommen habe, die es nicht wissen)

Das Problem, was Du angesprochen hast, hängt wohl damit zusammen, dass erstmal die String-Funktion durchgeführt werden und dann erst die einzelnen Werte aufgelistet werden.

stefle

Hab hier ziemlichen Mist verbreitet. Es kommt gar nicht darauf an, ob man zum Bearbeiten von Multivalue Fields nun String Functions oder andere Title-Formatting-Befehle verwendet. Also ergibt sich auch kein Zusammanhang.