fragen zu "album list panel" ...

Begonnen von MonDieu, 07. März 2009, 12:01:32

Vorheriges Thema - Nächstes Thema

MonDieu

hallo leute :-)

anfänger frage:
verwende foobar2000 v0.9.6.0 dazu "colums ui" und "album list panel"

hab ALLE meine mp3 die einen sogenannten feat. ARTIST haben, die ARTIST mit & getrennt.

hab mir dann einen filter für album list panel erstellt:
$if($strchr(%<artist>%,'&')=0,$left(%artist%,$sub($strchr(%<artist>%,&),3)),%artist%)|$if($strchr(%<artist>%,'&')=0,%artist%|%album%|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%,%album%|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%)

habe jetzt 2 fragen:
erste frage:
warum reagiert in diesem fall das $if so komisch ?¿?¿?
genau so wie es dasteht funktioniert es bei mir ...
eigentlich sollte ja wenn $strchr()=0 ist kein '&' gefunden sein und dadurch der "else" zweig kommen ... tut er aber nicht.

zweite frage:
besteht die möglichkeit den ARTIST mit einer art split zutrennen und jeden einzelen teil des splits als Artist wieder anzuzeigen ?¿?¿?
dh. FileTitel "Franz & Josef & Heinrich - Das Lied.mp3"
TagInfo: ARTIST = "Franz & Josef & Heinrich"
TagInfo: TITEL = "Das Lied"
momentan wird das lied nur bei ARTIST "Franz" angezeigt.
möchte aber das das lied auch bei ARTIST "Josef" und "Heinrich" angezeigt wird.
geht das ?¿?¿?

ist diese art des filters überhaupt die beste möglichkeit ?¿?¿?

DANKE für eure hilfe im vorhinein
*cu*


tedgo

#1
Zunächst mal benutzt du die $if-Funktion falsch. Das "=" gibt es nicht darin.
%<artist>% funktioniert ebensowenig in einer Funktion (zumindest, soweit ich es weiß...)

Der erste Teil deiner Funktion müsste also (wenn überhaupt*) heißen:
$if($strchr(%artist%,'&'),$left(%artist%,$sub($strchr(%artist%,'&'),2)),%artist%)

*wenn überhaupt deswegen, weil ich ehrlich gesagt nicht ganz nachvollziehen kann, was du eigentlich mit deinem ganzen String vorhast...
Denn wenn ich das im Schnelldurchgang überblicke, hättest du bei Interpreten mit einem '&' Zeichen zweimal den ARTIST in deiner "Baumstruktur", und zwar einmal den Artist bis zum ersten '&' und ein zweites mal mit dem vollen ARTIST-Tag


Ich denke es wäre hilfreich, wenn du mal genau ausführen könntest, wie deine Baumstruktur letztendlich aussehen soll.
Das zu begreifen, ist mir bislang nicht gelungen... ;)

Wenn du einfach nur wolltest, dass die Interpreten, die in einem TAG mit & vorkommen, in der Album List und auch anderswo in foobar2000 als eigene Interpreten aufgelistet werden, dann hättest du mit einem Semikolon trennen können (das kannst du nachholen: Alle betreffenden Dateien in der Playlist markieren über Properties --> Rechtsklick auf Artist --> Split values).
Aber wie gesagt, ich weiß nicht genau, was du vorhast, also erläutere es besser noch mal.

EDIT:
Ein Tipp:
Du könntest dir das Plugin foo_menu_addons installieren.
Dann hast du über Menu --> View einen "Title Format Viewer", in dem du solche Strings austesten kannst.

MonDieu

hi ... danke für die antwort

ok ... das mit dem $if hab ich wirklich falsch verstanden ... DANKE.

also mein string zerlegt:
$if($strchr(%<artist>%,'&')=0,$left(%artist%,$sub($strchr(%<artist>%,&),3)),%artist%)|$if($strchr(%<artist>%,'&')=0,%artist%|%album%|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%,%album%|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%)

der standart "by artist" filter lautet:
%<artist>%|%album%|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%

den ersten teil %artist% frage ich mit $if($strchr(%<artist>%,'&') ab.
wenn im %artist% ein '&' enthalten ist dann nehme ich mit $left(%artist%,
die zeichen von links bis zur position von '&' --> $strchr(%<artist>%,&) --> minus 3 ->
daher $sub($strchr(%<artist>%,&),3)) ... hoffe logisch erklärt.

dann das zweite $if
wenn mit "|$if($strchr(%<artist>%,'&')," ein '&' gefunden wird dann
%artist%|%album%|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%,
dh. es werden neben den %album% auch die singgemeinschaften angezeigt.

wenn kein '&' gefunden wird
%album%|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%)
werden nur die %album% angezeigt.

soweit die erklärung für meinen string.
das funtioniert ja auch soweit.


ZitatWenn du einfach nur wolltest, dass die Interpreten, die in einem TAG mit & vorkommen, in der Album List und auch anderswo in foobar2000 als eigene Interpreten aufgelistet werden, dann hättest du mit einem Semikolon trennen können (das kannst du nachholen: Alle betreffenden Dateien in der Playlist markieren über Properties --> Rechtsklick auf Artist --> Split values).

bin mir nicht sicher aber genau das will ich GLAUB ich ???

ich möchte wenn (wie in meinem beispiel)
dh. FileTitel "Franz & Josef & Heinrich - Das Lied.mp3"
TagInfo: ARTIST = "Franz & Josef & Heinrich"
TagInfo: TITEL = "Das Lied"
ein lied 3 Artists (eben Franz, Josef und Heinrich) hat, es in der baumstruktur bei allen dreien zu finden ist.

mit meinem string sehe ich es eben nur beim ersten interpreten.

danke für deine hilfe.

*cu*


tedgo

#3
Also, ich glaube, du hast mich falsch verstanden... ;)
Was dein String tun soll, habe ich schon begriffen.
Mir ging es nur darum, welchen Zweck du damit verfolgst.

So wie es scheint, möchtest du - falls im Title-Tag ein "&" vorkommt, fokgende Baumstruktur:
Franz
--- Franz & Josef & Hans
------ Albumtitel (z. B. "Jodeln mit Franz & Josef & Hans"
;))

Ist kein "&" vorhanden, soll
Franz
--- "Jodeln mit Franz"


dastehen, richtig?

Dann ginge:
$left(%artist%,$sub($strchr(%artist%,'&'),2))|$if($strchr(%artist%,'&'),%artist%|%album%,%album%)|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%

Allerdings würde dann der zweite Tipp nicht hiermit harmonieren, denn dann hättest du keine "&" mehr im ARTIST-Tag...

Da steh ich momentan auf dem Schlauch...

EDIT:
Andererseits:
Würdest du so vorgehen, wie ich es oben vorgeschlagen habe (Properties --> Artist Tag rechtsklicken --> Split values), bräuchtest du die Baumstruktur gar nicht ändern, denn dann würden dir die Lieder von "Franz & Josef & Hans" (was dann im Tag "Franz; Josef; Hans" heißen würde) dreimal in der Album List präsentiert, und zwar jeweils unter Franz, Josef und Hans.

MonDieu

hi

GENAU ... GENAU ... das hab ich damit bezweckt.

das es ohne die erste $if geht versteh ich momentan noch nicht genau ... werd mir das aber noch verinnerlichen.

zu deinem tip mit den semikolons:
Zitat(Properties --> Artist Tag rechtsklicken --> Split values),
kann ich bei mir irgendwie nicht finden.

hat das was mit "colums ui" zu tun ??? oder brauch ich da ein bestimmtes plugin ???

DANKE nochmals

*cu*

tedgo

#5
Zitat von: MonDieu in 07. März 2009, 21:44:02
das es ohne die erste $if geht versteh ich momentan noch nicht genau ... werd mir das aber noch verinnerlichen.
Da brauchst du kein $if.
Mit $strchr() suchst du innerhalb der $left() Funktion im %artist% nach dem ersten "&". Wenn aber gar kein "&" da ist, wird vom %artist% von links an bis zum letzten Buchstaben alles ausgewählt.
Soll heißen, wenn ein "&" da ist, kürzt foobar2000 ab dem & (oder besser, gemäß der exakten Funktion, 2 Buchstaben vor dem &) den %artist% tag, ist keines da, kann auch nichts gekürzt werden (war das verständlich? Ich verstehe mich manchmal selbst nicht... ;))

Zitat von: MonDieu in 07. März 2009, 21:44:02
zu deinem tip mit den semikolons:
Zitat(Properties --> Artist Tag rechtsklicken --> Split values),
kann ich bei mir irgendwie nicht finden.

hat das was mit "colums ui" zu tun ??? oder brauch ich da ein bestimmtes plugin ???
Nein, brauchst du nicht.

Markiere alle Files, die du so bearbeiten willst in deiner Playlist, rechtsklicke auf eines dieser ausgewählten Files und wähle "Properties --> Rechtsklick auf "Artist Name" --> Auswahl von "Split values" --> OK --> Apply oder OK.

MonDieu

hi :-)

DANKE vielmals ... Das ist genau das was ich gesucht habe.

Konnte das "Split Values" nicht finden da ich die Version
Zitatverwende foobar2000 v0.9.6.0 dazu "colums ui" und "album list panel"
verwendet habe und diese funktion erst ab "foobar2000 0.9.6.1 Beta 2" unterstützt wird.

DANKE nochmals.

*cu*

tedgo

#7
Hoppla, daran habe ich nicht gedacht :)
Na ja, ein Update schadet ja nicht ;)