freeQnet-Logo
freeQnet

Foobar2000 – Tricks und Kniffe

Ist es wirklich schon neun Monate her, dass ich zuletzt einen Beitrag zu Foobar2000 geschrieben habe? Das kann natürlich nicht so bleiben, und da ich mir in letzter Zeit sowieso ein paar wirklich nette Kniffe angeeignet habe, mit denen sich die Musik noch besser verwalten und mit mehr Nutzwert versehen lassen kann, geht’s heute mit dem ersten von sicherlich mal mehreren Beiträgen mit simplen oder auch mal komplexeren Tipps. Heute dabei: Musik besser gruppieren, Album-Cover automatisch herunterladen, per Shortcut Künstler-Infos aus dem Web abrufen.

Mehr Übersicht in der Album-List: Gruppieren nach dem Anfangsbuchstaben

Die Album List[1] ist, wie ich ja schon mal erwähnte, für mich der Dreh- und Angelpunkt für die Musikverwaltung in Foobar2000. Die vielseitig einrichtbare Baumansicht eignet sich perfekt, um die Musiklibrary nach den Songs und Alben zu durchforsten, die man hören will. Einfache Gruppierungen und Baumansichten sind recht schnell mit den grundlegenden Title-Formatting-Befehlen gebastelt, aber ich zeige euch hier einmal einen etwas komplexeren, aber absolut lohnenswerten Einsatz:

Die Views (also Ansichten) der Album List richtet man ein, indem man mit einem Rechtsklick in der Album List das Menü öffnet und “Settings” wählt. Hier finden wir alle bereits vorgefertigten Views. Wir erstellen eine neue durch einen Klick auf “new” und geben als Namen z.B. “by Album-Artist” an, denn wir wollen die Musik in diesem Tipp erst nach dem Alphabet, dem Album Artist und danach nach seinen Alben sortieren. Folgendes gebt ihr unter “Value” ein:

1
2
$puts(artstr,$swapprefix(%album artist%,The,Der,Die,Das,Th''))
$if3(%sortchar%,$left($get(artstr),1))|$get(artstr)|[%date% - ]%album%|[[%discnumber%-]%tracknumber%. ][%track artist% - ]%title%

Das sieht auf den ersten Blick sehr kryptisch aus. Gehen wir mal die einzelnen Befehlsteile durch:

Album-Artist in einer Variable:

1
$puts(artstr,$swapprefix(%album artist%,The,Der,Die,Das,Th''))

Mit der Funktion $puts(x,y) schreiben wir im Beispiel den %album artist%[2] (y) nachdem wir ihn durch $swapprefix() gejagt haben, in die Variable mit dem Namen “artstr” (x). Diesen Namen habe ich mir frei ausgedacht. Der Grund für die Variable ist der, dass wir diesen veränderten String später an mehreren Stellen wieder benötigen und wir uns so sparen, die Funktion $swapprefix() mehrfach angeben zu müssen.

$swapprefix(x,a,b,c,…) dient dazu, eine voranstehende Zeichenfolge ans Ende des Texts zu stellen. So wird z.B. aus “The Kills” durch die Funktion “Kills, The”. Als erstes gibt man der Funktion den Text (x), den man verarbeiten will (in unserem Fall den %album artist% und gibt danach kommagetrennt beliebig viele ans Ende zu stellende Artikel (a,b,c,…) an. Ich habe hier The, Der, Die, Das und Th’[3] eingetragen. So verhindern wir schon mal, dass später in der alphabetischen Auflistung Bands mit “The” alle bei T auftauchen etc. Interessant zu wissen ist in dem Zusammenhang, dass die Funktion den Begriff nur dann ans Ende stellt, wenn ein Leerzeichen zwischen ihm und dem Rest des Bandnamens steht. “Thelonious Monk” wird also nicht zu “lonious Monk, The”

Anfangsbuchstaben ermitteln:

1
$if3(%sortchar%,$left($get(artstr),1))|

if3(a,b,c,…) ist eine von mehreren möglichen “Wenn-Dann”-Abfragen in der Title-Formatting-Syntax. In dieser gibt man kommagetrennt beliebig viele Begriffe nacheinander (a,b,c,…) an. Der erste, der nicht leer ist, wird verwendet. Ich gehe in dieser Liste also zuerst in das Tag %sortchar% und nur wenn das leer ist, wird der erste Buchstabe aus der vorhin erstellten Variable verwendet. Ist dieser Tag leer (wie bei den meisten Bands), greift der nächste Begriff, der dieser Funktion kommagetrennt übergeben wurde.

%sortchar% ist ein Tag, dass es nicht standardmäßig in den ID3-Tags gibt, aber man kann beliebig viele eigene hinzufügen. Also gebe ich für Bands und Künstler, deren Name mit einer Zahl oder einem anderen Zeichen beginnt, das nicht im Alphabet vorkommt, in dieses Feld den Buchstaben ein, nach dem ich den Bandnamen einsortiert haben will. Ein Beispiel wäre die Band “!!!”, die “Tshok Tshok Tshok” ausgesprochen wird und von mir daher unter “T” geführt wird. Alternativ könnte man aber z.B. auch ein Zeichen wie “*” für alle Bands mit ungewöhnlichen Zeichen am Anfang definieren, um sie darunter zu sortieren.

Mit $left(x,y) holen wir uns aus dem angegebenen Begriff (x) durch die Angabe von 1 das aller erste Zeichen (y). Man kann für andere Zwecke natürlich auch z.B. immer die ersten fünf Zeichen ermitteln o.ä., aber wir wollen ja hier den Anfangsbuchstaben zur Sortierung haben.

$get(x) sorgt ganz einfach dafür, dass an der Stelle der Inhalt der angegebenen Variable (x) gezogen wird. In unserem Beispiel ist das also die vorhin erstellte Variable “artstr”.

Der vertikale Strich dient zu guter letzt in der Definition einer View für die Album List als Trenner für die Zweig-Ebenen eines Baums. Immer wenn ein “|” auftaucht, wird eine neue untergeordnete Ebene aufgemacht. In diesem Fall schließen wir somit die Ebene für den Anfangsbuchstaben ab. Die danach folgenden Befehle tauchen also im Baum erst auf, wenn wir z.B. den Knoten für den Anfangsbuchstaben “A” aufklappen.

Der Rest der Knoten:

1
$get(artstr)|[%date% - ]%album%|[[%discnumber%-]%tracknumber%. ][%track artist% - ]%title%

Jetzt wird’s etwas einfacher. Wir hängen nun nur noch die weiteren Zweige aneinander. Mit $get() holen wir uns wieder die Variable “Artstr”, diesmal aber komplett, da die Namen der Künstler ja unter dem jeweiligen Anfangsbuchstaben untergeordnet als nächstes im Baum auftauchen sollen. “|” trennt wieder die nächste Ebene ab.

Als nächstes wollen wir das Album als Ebene haben. Ich habe dabei gern das Erscheinungsjahr voranstehend, damit danach sortiert wird. Wenn dieses aber nicht gefüllt ist, will ich auch den Bindestrich zwischen beiden Werten nicht haben. Also klammere ich durch [] den Wert %date% und den Bindestrich ein. Wenn %date% leer ist, wird der gesamte Inhalt der Klammer ausgelassen. Danach folgt aber in jedem Fall das %album% und “|” trennt die nächste Ebene ab.

Bleibt zuletzt noch die Anzeige der einzelnen Titel. Hier brauchen wir nur noch die Werte %discnumber%, %tracknumber%, %track artist% und %title%. Den Bindestrich zwischen %discnumber% und %tracknumber% brauchen wir nur, wenn das Album mehrere CDs hat, also wird der Teil wieder mit [] umklammert. Das lässt sich auch verschachteln und so sorgen wir dafür, dass auch der Punkt hinter %tracknumber% nur dann angezeigt wird, wenn es eine Nummer gibt. Als nächstes geben wir den %track artist%[4] nur an, wenn das Feld gefüllt ist.

So, das war dann doch etwas komplizierter, aber ich hoffe, durch diese genaue Erklärung habt ihr etwas Mut bekommen, eigene Views zu erstellen. Ich würde mich auch freuen, wenn ihr eigene Views in den Kommentaren angebt, um sie mit allen anderen zu teilen!

Album-Cover automatisch herunterladen – und noch ne Menge mehr…

Ein Manko von Foobar2000, das Julia einmal erwähnte, war die Tatsache, dass es anfangs keine Möglichkeit gab, Album-Cover während des Abspielens automatisch aus dem Internet zu laden. Durch die Komponente “Biography View” ist das nun möglich. Zwar kann man das Cover damit noch nicht direkt in die MP3s einbetten sondern nur in einem Ordner ablegen, aber dafür kann die Komponente noch eine ganze Menge mehr. Sie lädt nämlich außerdem auf Wunsch Fotos der Bands sowie Biografien und Beschreibungen der Alben herunter. Alle Daten werden dabei von Last.fm ermittelt, die Sprache ist einstellbar. Dadurch ist vor allem bei englischer Sprache die Ausbeute sehr hoch und die Bildqualität ist auch voll in Ordnung.

Um die Komponente zum Laufen zu bringen, machen wir ertsmal ein paar Einstellungen. Zu finden sind diese nach dem Kopieren der DLL in das Components-Verzeichnis und anschließenden Neustart von Foobar unter “Tools” – “Biography Server”. Die Werte der allgemeinen Einstellungen sind soweit selbsterklärend und müssen an sich nicht verstellt werden. Interessant unter “Misc” ist der Punkt “Execute query even if no biography view panel exist”. Mit diesem Haken sorgt man dafür, dass Albumcover etc. auch heruntergeladen werden, wenn man die Anzeige des selben nicht als Panel in seiner Foobar-Oberfläche eingerichtet hat.

Die Einstellungen unter “last.fm” sind da schon ein wenig interessanter. Als erstes würde ich die “Language” auf “eng” stellen, denn für den Großteil alle Bands und auch die meisten Alben existieren eher englische als anderssprachige Texte. Leider ist es derzeit nicht möglich, eine primäre und eine Ausweichsprache einzustellen, um z.B. immer erst die deutschen Texte zu ziehen und wenn nicht vorhanden auf englisch zu wechseln. Vielleicht kommt dieses Feature ja noch!

Im Reiter “Artist” kann man einstellen, wo die einzelnen Künstler-Bilder gespeichert werden. Da es nicht immer einfach ist, die Bilder im Verzeichnis abzulegen, in dem sich der Künstler befindet, würde ich empfehlen, entweder ein Sammelverzeichnis anzugeben oder ganz auf das Speichern zu verzichten (den Haken bei “Enable cache” entfernen). In letzterem Fall zieht sich die Komponente zur Anzeige die Bilder immer frisch aus dem Netz.

Der Reiter “Album” hat im Grunde die selben Einstellungen wie “Artist” nur eben für das Album selbst. In diesem Fall habe ich als “image cache path” die Zeichenfolge “$directory_path(%path%)\%album%” eingegeben, um die Bilder so immer in dem Verzeichnis des gerade spielenden Songs unter dem Namen des Albums abzulegen. Die Endung “jpg” wird automatisch angehängt. Alternativ kann man z.B. auch statt %album% sowas wie “front” angeben, um immer ein Bild namens “front.jpg” zu bekommen. Den “Text cache path” habe ich genauso angegeben, nur mit dem Anhängsel “.bio”, da hier nicht automatisch eine Dateiendung vergeben wird und ich “.bio” ganz passend finde.

Zu guter letzt sollte man das Panel auch noch in seine Oberfläche einbauen, damit man auch etwas davon hat. Ich habe dazu einen extra Reiter erstellt und das Panel gleich zweimal eingetragen, denn es kann immer entweder die Infos zum Künstler oder zum Album anzeigen. Ein Rechtsklick auf das Panel und wählen von “Panel Preference” im Menü öffnet ein weiteres Einstellungsfenster, das man für jedes Panel getrennt einstellen kann und so Änderungen wie Schriftart, Hintergrundfarbe etc zulässt.

foo_run – weiterführende Infos und Funktionen per Shortcut

Reichen einem die Infos, die das Biography View Panel anzeigt, nicht aus, oder man möchte auf Knopfdruck die grad markierte Datei mit anderen Programmen öffnen, ist die Komponente foo_run der richtige Partner! Sie ermöglicht es nämlich, externe Programme oder Webseiten aufzurufen, denen man per Title Formatting ID3-Tags o.ä. des grad markierten Songs einbauen kann.

Als Standard gibt es schon so einfache Möglichkeiten wie “Open directory” (öffnet das Verzeichnis, in dem sich die Datei befindet, im Windows-Explorer), “OpenAs…” (öffnet den “Öffnen mit”-Dialog von Windows) oder “follow link”, mit dem sich ein möglicherweise per ID3-Tags angegebener Link im Browser öffnen lässt. Ein paar wirklich nützliche weitere Kommandos, die sich um verschiedene Webseiten drehen und einfach zusätzlich eintragbar sind, habe ich im Folgenden mal zusammengestellt. Um sie hinzuzufügen, geht man in den Programmeinstellungen auf “Tools” – “Run Services” und dort auf “add”!

Öffnen der Last.fm-Seite des Künstlers:

1
http://www.last.fm/music/$replace(%artist%, ,+)

Öffnen der Last.fm-Seite des Albums:

1
http://www.last.fm/music/$replace(%artist%, ,+)/$replace(%album%, ,+)

Öffnen der Last.fm-Seite des Songs:

1
http://www.last.fm/music/$replace(%artist%, ,+)/_/$replace(%title%, ,+)

Öffnen der englischen Wikipedia-Seite zu dem Künstler:

1
http://en.wikipedia.org/wiki/$replace(%artist%, ,_)

Öffnen der deutschen Wikipedia-Seite zu dem Künstler:

1
http://de.wikipedia.org/wiki/$replace(%artist%, ,_)

Nach dem Künstler googeln:

1
http://www.google.com/search?q=$replace(%artist%, ,+)&ie=utf-8

Nach Künstler und Songtitel googeln:

1
http://www.google.com/search?q=$replace(%artist%+%title%, ,+)&ie=utf-8

Im AllMusicGuide nach dem Künstler suchen:

1
http://www.allmusic.com/cg/amg.dll?P=amg&sql=$replace(%artist%, ,+)&x=0&y=0&opt1=1&sourceid="Mozilla-search"

Im AllMusicGuide nach dem Album suchen:

1
http://www.allmusic.com/cg/amg.dll?P=amg&sql=$replace(%album%, ,+)&x=0&y=0&opt1=2&sourceid="Mozilla-search"

Im AllMusicGuide nach dem Song suchen:

1
http://www.allmusic.com/cg/amg.dll?P=amg&sql=$replace(%title%, ,+)&x=0&y=0&opt1=3&sourceid="Mozilla-search"

Wer alle gebündelt haben will, kann sich auch die Datei beety’s Run Services von mir herunterladen, in der alle Kommandos zusammengefasst sind. Diese lässt sich auf der selben Einstellungsseite über “Import” einfach importieren!

Fazit

Das wurde dann doch ein für drei Tipps ziemlich langer Beitrag. Ich hoffe, ihr könnt ein wenig Nutzwert daraus ziehen. Sobald ich wieder ein paar Tipps angesammelt habe, gibt’s weitere Beiträge. Außerdem hab ich ja noch für irgendwann mal eine Anleitung zum effektiven Einrichten der Benutzeroberfläche von Foobar2000 auf dem Plan, die ich hoffentlich nicht erst nach erneut neun Monaten mal fertig bekomme! 😉

  1. ich beziehe mich hier jeweils auf das Album List Panel für Columns UI. Da die Standard-Album-List allerdings mit der selben Syntax arbeitet, sollte sich der Tipp auch damit verwenden lassen! []
  2. Das Feld “album artist” ist nicht mit dem gleichnamigen Tag gleichzusetzen. Es holt sich nur aus den einzelnen Artist-Tags den passenden Wert. Erst wird in dem Tag “album artist” geschaut und ist dieses leer (an sich ist es nur bei Compilations gefüllt), wird im normalen Feld “Artist” geschaut. So ist es also immer gefüllt und gruppiert Compilations bei sorgfältig gefüllten Tag “album artist” auch immer korrekt. []
  3. für die Band “Th’ Legendary Shack*Shakers” []
  4. Dieses Feld ist sich ähnlich wie “album artist” kein eigentliches Tag sondern ein Spezialfeld. Es ist nur dann gefüllt, wenn das Tag “album artist” nicht leer ist und von dem Tag “artist” abweicht. Das ist bei Compilations und ordentlich gepflegtem album artist der Fall und sorgt in unserem Beispiel so dafür, dass bei Compilations in der Album List also auch die Namen der einzelnen Künstler auftauchen. []

Kommentare

1

Hallo!

Ich bin über Google über deinen Blog gestolpert.
Und ich muss sagen, dass hier alles sehr schön erklärt wird.
Als langjähriger Foobar-Nutzer hat man doch ab und zu mit der “Einstellung” zu kämpfen. Gerade die Geschichte mit der Musikverwaltung finde ich sehr nützlich.

Grüße

FATlui

geschrieben von FATlui
antworten  •  Link
2

@FATlui: Das freut mich!

geschrieben von beetFreeQ
antworten  •  Link
3

Hallo
Vielen Dank für den Tipp mit dem Sortieren nach Anfangsbuchstaben, hat soweit alles wunderbar funktioniert.
Das einzige kleine Problem, dass ich noch noch habe, ist das die Auflistung nun umgekehrt ist, also mit Z statt mit A beginnt. Wie kann ich das wieder umkehren?

Danke

xray

geschrieben von xray
antworten  •  Link
4

@xray: Hmm, das ist mir auch noch nicht passiert. Klingt aber danach, als sei die Komponente (also das Album List Panel) irgendwie falsch eingestellt ist. Ich wüsste nicht, dass man per Script die Sortierung umgekehrt einstellen kann. Prüf mal alle Einstellungen im Album List Panel und schau auch mal, ob du die neueste Version hast – vielleicht ist das auch ein Bug.

geschrieben von beetFreeQ
antworten  •  Link
5

Mir ist grad aufgefallen, dass ich das statt der Album List das Panel Library Tree verwende, die Scripts aber scheinbar identisch funktionieren. Bin mittlerweile auch auf die Lösung gekommen. Im Fall von Library Tree ist es so, dass sich die Sortierung nach dem Zeichen | bzw. \ richtet, wobei letzteres zu einer alphabetischen Sortierung führt.

geschrieben von xray
antworten  •  Link
6

@xray: Ah, gut zu wissen. Mit dem Library Tree habe ich mich noch nicht so sehr befasst. Es macht aber auch Sinn, dass die Komponente das Script im Grunde auch unterstützt, denn bis auf die Striche (|) ist der gesamte Code normales Title Formatting, das ja überall in Foobar unterstützt wird. Die Trenner der Knoten im Baum sind da von der Komponente abhängig und der Library Tree arbeitet da wohl ein wenig anders.

geschrieben von beetFreeQ
antworten  •  Link
7

Super vielen Dank für die Tipps & die Gute Beschreibung.
“saved maybe more than one hour of try & error” 😉

LG

geschrieben von maxpower
antworten  •  Link
8

Danke für die ausführliche Beschreibung! Klappt alles wunderbar.

Grüße.

geschrieben von savoli
antworten  •  Link
Be excellent to each other. And... Party on, dudes!

Bill & Ted

Blogverzeichnis - Blog Verzeichnis bloggerei.de blogoscoop Bloggeramt.de