Zugriff auf "große" MP3-Datenbestände via Filesystem

  • Bevor ich unnötig programmiere (und das kann ich nämlich nicht besonders gut), frage ich doch besser mal hier nach - vielleicht gibt 's da ja schon was und ich kenne es nur nicht.


    Problem: Wenn man via Streaming-Lösung (aktuell ist das bei mir istreamdev) auf größere Datenbestände via Filesystem zugreifen will (bei mir sind das z.B. ein paar tausend CD's), dann stößt man recht schnell an die Grenzen der Navigationsmöglichkeiten. Öffne ich z.B. den Ordner in dem die ganzen CD's zu Hause sind, so ist erstmal für einige Minuten Schicht im Schacht in Safari auf meinem iPod - und auch ansonsten fehlen natürlich die ganzen Annehmlichkeiten der Selektion, die einem moderne jukeboxen wie gmusicbrowser und Konsorten bieten.


    Nun hab' ich mir gedacht, schreib ich doch einfach mal ein Progrämmchen was die ganzen mp3-Tags der Songs auswertet und die so gewonnenen Information in einem Verzeichnisbaum abbildet welcher nur aus symbolischen Links besteht und somit alle erdenklichen Zugriffsvarianten via Verzeichnisstruktur ermöglicht.


    Das klappt erstaunlich gut und so kann ich mittlerweile mit wenigen Klicks z.B. auf alle Popsongs aus dem Jahr 1990 zugreifen - aber jetzt, wo ich auf den Geschmack gekommen bin will ich natürlich mehr ... z.B. automatisch erstellte Playlisten nach Genre etc. ...


    Kennt jemand ein bereits verfügbares Programm das so etwas erledigt, oder wie greift Ihr auf Eure Datenbestände zu?


    Tao

  • Vielleicht interessiert es ja doch, wie ich nun das Problem für mich gelöst habe.


    Ich habe ein Perl-Script geschrieben. Es heißt "mkmp3tree" und kann geladen werden unter :


    http://www.e-sol.utions.de/dl/mkmp3tree/


    Es findet alle MP3-Dateien unterhalb eines Verzeichnisses (anzugeben im Script, als Parameter $MP3_ROOT_POD), liest deren MP3-Tags aus und baut aufgrund dieser Information verschiedene Index-Bäume unterhalb eines Verzeichnisses (anzugeben im Script, als Parameter $MP3_ROOT_LINK_TREE) auf.


    Man kann sich das so vorstellen, als würden Datenbankabfragen, die man normalerweise in einer Jukebox tätigt (also z.B.: "Zeige mir alle Pop-Songs aus dem Jahr 1990"), als Verzeichnisbaum in einem Filesystem abgebildet werden. Es gibt also nach dem Index-Lauf von mkmp3tree tatsächlich ein Verzeichnis /.../!byGENRE/POP/!byYEAR/1990 auf der Festplatte. In diesem Verzeichnis sind dann alle Pop-Songs aus dem Jahr 1990 einzeln gelistet.


    Diese Index-Bäume enthalten ausschließlich symbolische-Links auf die eigentlichen MP3-Daten, verbrauchen also wenig Ressourcen.


    Folgende Index-Bäume werden unterhalb von $MP3_ROOT_LINK_TREE angelegt:


    !byALBUM
    !byARTIST
    !byGENRE
    !byTERM
    !byTITLE
    !byYEAR


    Wobei die Namen eigentlich selbsterklärend sind, bis vielleicht auf !byTERM. Er ist insofern ein besonderer Index, als das er eine Verschlagwortung beinhaltet. In ihm kann also nach einem beliebigen Wort aus Interpret, Album oder Titel gesucht werden. So kann man z.B. alle Lieder finden, die das Wort Berlin im Titel, Album oder Namen des Interpreten enthalten, ohne den exakten Namen zu kennen.


    Als weiteres "Schmankerl" ist vielleicht zu erwähnen, dass das Script, bei der Erstellung der Indizes, den Tagging-Empfehlungen von freedb.org folgt und so auch Interpreten findet und korrekt einsortiert, die in einer Compilation-CD (Various Artists) enthalten sind.


    Und noch einige Anmerkungen :


    • Wichtig: Die Verzeichnis-Angaben für "Quelle der MP-Daten" und "Ziel der Index-Bäume" dürfen sich nicht gegenseitig referenzieren. Man sollte also für das Ziel der Indexbäume ein Verzeichnis wählen, was nicht unterhalb der Quelldaten liegt. Sonst indiziert sich mkmp3tree nämlich selbst und hört nicht auf, bevor die Platte vollgeschrieben ist, bzw. die inodes ausgehen ...
    • Die vorhandenen MP3-Daten werden nicht verändert. Es wird ausschließlich lesend auf sie zugegriffen.
    • Fehlende TAG-Informationen werden vom Script automatisch belegt mit z.B "Unknown Artist" bei fehlendem Interpreten, oder "XX" bei fehlender Tracknummer ... u.s.w.
    • Nicht erlaubte Zeichen für Dateinamen, werden ersetzt durch Underliner (_).
    • Das Script ist so programmiert, dass es keine Daten überschreibt. Sollte es also zu dem Fall kommen, dass die Kombination der vorhandenen Tags, einen bereits vorhandenen Dateinamen ergeben (das kann passieren wenn Tag-Information fehlen und automatisch ersetzt wurden durch z.B. "Unknown Artist"), so wird der Name um eine Zähler erweitert, also z.B. .... (1).mp3.
    • Da das Script, wie eben erwähnt, keine vorhandenen Daten überschreibt, empfiehlt es sich, vor einem erneuten Lauf, die vorhandenen Index-Bäume zu löschen. Anderenfalls, hat man nach dem Lauf, alle Links doppelt.
    • Man kann im Script die Erstellung einzelner Index-Bäume ein- bzw ausschalten.
    • So ein Indexlauf kann recht lange dauern, dass hängt natürlich von der Menge der Daten ab. Für einen einfachen Test ist es deshalb empfehlenswert, den Zeiger auf das Root-Verzeichnis der MP3-Daten ($MP3_ROOT_POD), nicht auf alle MP3-Daten zu richten, sondern zunächst mal nur auf ein einzelnes Album.
  • Quote

    Original von Mr.N!ce
    und was ist mit dem VDR Plugin muggle?


    Kannte ich bis eben nicht. Liest sich auf den ersten Blick auf alle Fälle interessant an und kann mit Sicherheit auch viel mehr bieten - auch wenn man dafür eine Datenbank aufsetzen muss.


    In meinem konkreten Fall (Zugriff auf die Daten über einen Verzeichnisdienst, also mit iPod über das Frontend istreamdev), nützt es mir allerdings nichts.


    Dennoch vielen Dank für den Tipp - wieder was neues kennen gelernt ...


    Tao

  • Quote

    Original von Mr.N!ce
    muggle läuft mit mit ner quasi TextDB oder mit z.B. mysql


    Nun denne - und wenn muggle denn dann auch noch seine gewonnenen Erkenntnisse via Filesystem zur Verfügung stellen kann, wäre es ja vielleicht wirklich mein neuer Freund ...


    Tao

  • Du könntest Dir einen beliebigen UPnP Server aufsetzen und dann per djmount einbinden. djmount stellt die Strukturen der Servers als Dateisystem dar.

    Hardware: Gigabyte GA-970A-D3, AMD Athlon II X2 235e, 4GB RAM, Zotac GeForce 210 Synergy Edition 1GB, Corsair Force3 60GB SSD, Mystique SaTiX-S2 Dual, 6.4" TFT, Atric IR Einschalter Rev.5, Logitech Harmony 900, Samsung LE46A789 full HD LCD, Denon AVR-1910, USB Atmo-Light von Slime
    Software: yaVDR 0.5
    Streaming Client 1: Hauppauge MediaMVP
    Streaming Client 2: Telegant TG100 (wenn ich mal irgendwann die Zeit finde das UPnP-Plugin zu testen)

  • Quote

    Original von Saxman2k
    Du könntest Dir einen beliebigen UPnP Server aufsetzen und dann per djmount einbinden. djmount stellt die Strukturen der Servers als Dateisystem dar.


    Danke für den Tipp. Habe gerade mal bei djmount rein gelesen - da kann man sicherlich viele lustige Dinge mit veranstalten. Letztendlich macht djmount ja auch nichts anderes als mein Script - Nur wahrscheinlich mit deutlich mehr Funktionsumfang und vor allem: dynamisch.


    Zur Zeit liegen die MP3-Daten bei mir allerdings nur so in einem Filesystem rum - ich müsste mich dann also erstmal um eine MediaServer-Lösung kümmern ... und letztendlich würde das für mich ja bedeuten :


    "filesystem -> MediaServer -> djmount -> filesystem"


    Mhh, für meinen konkreten Fall, klingt das irgendwie nach rechter Hand am linken Ohr - wobei das Script schreiben auch nicht gerade in 5 Minuten erledigt war ....


    In jedem Fall aber herzlichen Dank für den Tipp - das kann ich garantiert mal gebrauchen!


    Tao

  • Das ist wohl ein klassischer Fall für MPD (Music Player Daemon - http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki).
    Schau Dir mal den iPod/iPhone Clienten MPoD an: http://www.katoemba.net/makesnosenseatall/mpod/


    Und hier noch ein paar Links:
    Suche Vorschläger: WLAN MP3-Clients / System



    Grüße
    Fux

    Hardware: Asus M3N78-EM µATX GF 8300 | AMD Sempron 140 | Display VFD USB MDM166A | DVB-S2 TT-3600 USB | RAM 1 GB | WD20EARS 2 TB
    Software: yaVDR 0.5

    Edited once, last by Fux ().

  • Quote

    Original von Fux
    Das ist wohl ein klassischer Fall für MPD (Music Player Daemon - http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki).
    Schau Dir mal den iPod/iPhone Clienten MPoD an: http://www.katoemba.net/makesnosenseatall/mpod/


    Danke, Fux, für den Tipp!


    Habe den MPD gleich mal ausprobiert und läuft eigentlich auch alles ganz prima - bis auf den iPod. Mit dem kann ich zwar auf den MPD zugreifen die Musik-Daten sehen, Lieder abspielen ... halt komplett steuern, aber er spielt lokal auf dem iPod nichts ab - kein Ton ... nix ... und schon hänge ich wieder mal am Fliegenfänger ...


    Tao

  • Das iPod-Problem mit dem Abspielen von Liedern hat sich erledigt - man muss MPoD löschen und erneut installieren, dann geht es (habe ich in den Kommentaren zur Software gelesen).


    Aber jetzt noch was anderes. Nun habe ich also einen "fetten" Musikserver aufgesetzt, auf dem iPod eine zusätzlich Client-Software installiert und kann nicht mal meine Musik nach dem Genre oder Jahr auswählen (oder finde ich die Suchfunktion in MPoD nur nicht?) - und das ist ja genau das, was mein mini-Script oben als Beispiel anführt : "Spiele alle Pop-Songs aus dem Jahr 1990" ... "Nur falsche Erwartungen, können enttäuscht werden" ...


    Dennoch Danke für den Tipp.


    Tao


    Nachtrag : Auch ansonsten scheint MPoD nicht besonders stabil zu laufen - bleibt immer mal wieder hängen (auch mit großem Buffer) und lässt sich dann nicht mehr richtig bedienen - muss neu gestartet werden ...

  • Quote

    Original von TaoTePuh
    ... kann nicht mal meine Musik nach dem Genre oder Jahr auswählen (oder finde ich die Suchfunktion in MPoD nur nicht?)

    Gegenwärtig kann man mit MPoD noch nicht nach Genre oder Jahr suchen. Es gab aber einige Anfragen hierzu auf der MPoD Seite. Eventuell kommt das ja noch.
    Dennoch kannst Du ja Deine Symlinks nutzen. Gehe dazu auf den Tab "... More" und dann auf Browse. Du mußt hierzu lediglich noch Deine Symlinks in das MPD Musikverzeichnis verschieben. Außerdem muß das Symlink-Verhalten (weiß jetzt nicht die genaue Konfig-Bezeichnung, such hierzu mal im MPD-Forum) in der mpd.conf richtig eingestellt sein, ansonsten könnten die Dateien doppelt auftauchen.


    Quote

    Original von TaoTePuh
    Auch ansonsten scheint MPoD nicht besonders stabil zu laufen - bleibt immer mal wieder hängen (auch mit großem Buffer) und lässt sich dann nicht mehr richtig bedienen - muss neu gestartet werden ...

    Hmm, das ist seltsam. Klappt die WLAN-Verbindung einwandfrei? Probier doch ansonsten mal, MPoD nur als Remote zu verwenden (ohne Stream). Oder brauchst Du den Stream unbedingt?
    Eines fällt mir gerade noch ein: Wenn Du die lokale Cover-Anzeige verwendest, da hängt sich MPoD bei mir auch manchmal auf.


    Hast Du Dir auch mal GMPC für den Desktop angeschaut? Gerade die unterschiedlichen Bedienmöglichkeiten finde ich bei MPD genial.


    Grüße
    Fux

    Hardware: Asus M3N78-EM µATX GF 8300 | AMD Sempron 140 | Display VFD USB MDM166A | DVB-S2 TT-3600 USB | RAM 1 GB | WD20EARS 2 TB
    Software: yaVDR 0.5

    Edited 4 times, last by Fux ().

  • Quote

    Original von Fux
    [...] Gegenwärtig kann man mit MPoD noch nicht nach Genre oder Jahr suchen. [...] Dennoch kannst Du ja Deine Symlinks nutzen. Gehe dazu auf den Tab "... More" und dann auf Browse. Du mußt hierzu lediglich noch Deine Symlinks in das MPD Musikverzeichnis verschieben. [...]


    Wenn ich Musik auf Basis meiner SymLink-Struktur auf dem iPod hören will, nehme ich einfach das Frontend von istreamdev. Der kann "zwar nur" einen Zugriff via Verzeichnisstruktur anbieten, aber genau dafür habe ich ja das Script geschrieben. Die erwähnten "Pop-Songs aus 1990", erreiche ich darüber mit 4 Klicks (hab' gerade mal mitgezählt ;-)) ... das ist absolut akzeptabel und sogar auch deutlich weniger, als bei den GUI-Frontends von MPD. Na das ist ja eine Klicke- und Tipperei bis ich da eine Suchanfrage für o.g. Szenario abgesetzt habe ...


    Diese Lösung (istreamdev) hat auch den Vorteil, dass es die Songs vor dem streaming nicht erst noch durch lame scheucht, somit also unnötig Ressourcen verbraucht und mir die mit viel sportlichem Ehrgeiz aufbereiteten Daten mal eben mit einem "schlampig weil schnell" ausgeführten re-coding verwässert.


    Quote

    Original von Fux
    Hmm, das ist seltsam. Klappt die WLAN-Verbindung einwandfrei? Probier doch ansonsten mal, MPoD nur als Remote zu verwenden (ohne Stream). Oder brauchst Du den Stream unbedingt?


    WLAN steht und ist stabil. Mit istreamdev kann ich stundenlang stream hören ohne jedes Problem. Ja ich brauche den Stream, weil ich auch mal da Musik hören will, wo es keinen HTPC in der Nähe gibt, dafür aber umso mehr Straßen- und Kinderlärm ....


    Quote

    Original von Fux
    [Hast Du Dir auch mal GMPC für den Desktop angeschaut? Gerade die unterschiedlichen Bedienmöglichkeiten finde ich bei MPD genial.


    Aktuell hab' ich erstmal den Ario "angecheckt". Den gab es für meine Distro im Repo und wohl auch für Windows. Da ich aber sowieso nicht so viele verschiedene Frontends hier im Umlauf haben und supporten will, wird es letztendlich wahrscheinlich eines der Java-Frontends werden ... wobei die Leute hier eigentlich schon jetzt, also mit der SymLink-Lösung, recht zufrieden sind. Einen Datei-Browser, können die hier nämlich mittlerweile fast alle bedienen :-).


    Tao

  • Quote

    Aktuell hab' ich erstmal den Ario "angecheckt". Den gab es für meine Distro im Repo und wohl auch für Windows. Da ich aber sowieso nicht so viele verschiedene Frontends hier im Umlauf haben und supporten will, wird es letztendlich wahrscheinlich eines der Java-Frontends werden ... wobei die Leute hier eigentlich schon jetzt, also mit der SymLink-Lösung, recht zufrieden sind. Einen Datei-Browser, können die hier nämlich mittlerweile fast alle bedienen :-).


    GMPC gibt es auch als Windows Version.
    Für was verwendest Du denn das System, zu Hause oder einen größeren Rahmen?


    Gruß
    Fux

    Hardware: Asus M3N78-EM µATX GF 8300 | AMD Sempron 140 | Display VFD USB MDM166A | DVB-S2 TT-3600 USB | RAM 1 GB | WD20EARS 2 TB
    Software: yaVDR 0.5

  • Quote

    Original von Fux
    Für was verwendest Du denn das System, zu Hause oder einen größeren Rahmen?


    Sorry, bin heute mal 'ne Runde fremd gegangen (MythTV), deshalb die späte Antwort.
    Also das hier Vor-Ort ist schon durchaus eine private Veranstaltung, aber vielleicht auch gerade deshalb eine echte Herausforderung - jedes Tierchen, hat sein Pläsierchen . Homogen ist hier praktisch gar nichts - außer die Serverwelt, da hab' ich die Hand drauf und deshalb ist das auch eine reine Linux-Geschichte.


    Tao

  • Ich hab das hier ausgegraben. Nennt sich firefly.


    http://www.linux-community.de/…6/Musik-liegt-in-der-Luft


    und noch Infos über das DAAP Protokoll


    http://tapjam.net/daap

    Server: Debian/lenny (vserver), vdr 1.6 (3 x Budget DVB-S), streamdev, epgseaach, noad, vdradmin, mysql, Bootserver
    Client 1: Ubuntu/lucid (diskless), XBMC-pvr, Asus AT3IONT (VDPAU)
    Client 2: Debian/squeeze (diskless), XBMC-pvr, Asus AT3IONT (VDPAU)
    Client 3: Debian/etch (diskelss), vdr 1.6, FF-DVB nur Ausgabe, VIA V8000
    Client 4: Debian/etch (diskless), vdr 1-6, DXR3, P1 200 Mhz

  • Quote

    Original von devnix
    [...] firefly [...] DAAP [...]


    Danke, 'devnix', für den Tipp! Das ist sehr nett von Dir, dass Du Dir die Mühe gemacht hast mir auch gleich noch die passenden Links raus zu suchen.


    Und jetzt wo Du es schreibst, kann ich mich auch daran erinnern, dass ich, als mein iPod noch neu war, und ich nach Lösungen suchte möglichst einfach an die Musik auf meinem Server zu gelangen, sogar schon mit DAAP rum experimentiert habe.


    Unter Windows hatte ich iTunes, unter Linux Banschee und Amarok am Start sowie noch irgendeine Java-Applikation, von der mir gerade der Name nicht einfällt - und halt den iPod. Bis auf iTunes sind das alles nur DAAP-Klienten so das ich dann, früher oder später, auch über den "Leuchtkäfer" als Serverkomponente für Linux gestolpert bin. Den habe ich aber nicht getestet, sondern erstmal "tangerine", ebenfalls ein "DAAP music server".


    Das hat soweit auch erstmal alles funktioniert, mir erschien das aber zunächst mal alles ein wenig viel Aufwand für "nur" Musik hören (schließlich habe ich ja auch Bilder, Videos, LiveTV ...) und mich hat auch gestört, dass man für Windows und DAAP, eigentlich nicht an diesem Monster iTunes vorbei kommt. Das ist schon 'ne Menge Overload, für ein bisschen Musikhören ... wenn ich im Vergleich dazu an VLC denke ...


    Auch mit tangerine war ich nicht besonders glücklich. Der hat immer wieder angefangen über das Netzwerk meine Musikdateien nach Neuzu- bzw. Abgängen zu scannen. Dabei ist der CPU-Lüfter immer hochgefahren und das nervt mich wo ich doch weiß, dass sich an den Daten nichts geändert hat ... Das ist übrigens auch eine Sache die mich an den Leuten hier Vor-Ort nervt die iTunes benutzen. Die scannen permanent die Musikdaten durch und das läuft hier mittlerweile echt auf einen Festplattendauertest hinaus. Mir sind schon einige Platten in Dutt gegangen - ist aber zum Glück alles RAID.


    Also beschloss ich, mich erstmal weiter umzugucken, wobei die Eierlegende ... bisher immer noch nicht dabei war.


    Und so gucke ich also immer noch, wobei ich aktuell, eigentlich gar nicht mehr so unglückliche bin, zumindest das mit dem iPod im Zusammenspiel mit istreamdev und meinem Script, klappt schon sehr gut - und mal eben im Garten auf dem iPod ein bisschen LiveTV oder Aufzeichnung gucken, ist schon eine feine Sache.


    Tao

  • Nachtrag zum Thema : "DAAP und iPod touch".


    Jetzt ist mir auch wieder eingefallen, warum ich meine damaligen Bemühungen bezüglich DAAP einstellte. Es war nämlich gar nicht möglich mit dem iPod Musik vom DAAP-Server abzuspielen geschweigen denn zu synchronisieren - und genau um diese beiden Punkte ging es mir.


    Genau genommen, bin ich damals auf DAAP gekommen, weil ich eben eine andere Lösung suchte, Musik auf den iPod zu übertragen als mit iTunes, für welches ich hier bei mir extra eine VM starten muss ...


    Soweit ich mich erinnern kann, ging nur der umgekehrte Weg, also vom IPod aus in Richtung DAAP-Client und das auch nur ohne Passwortschutz - es hätte also auch der Nachbar mal eben meinen iPod als Musikserver benutzten können!


    Da war ich erst einmal Buff, wurde DAAP doch ursprünglich mal für die apple-Welt und speziell für iTunes-Umgebungen (und Konsorten?) entwickelt. Als Begründung habe ich im Internet immer wieder gelesen, dass der Hersteller möchte, dass man den iPod ausschließlich über iTunes synchronisiert.


    Und ja, Buff war ich auch mal wieder auch ob meiner Naivität, mit der ich diese Angelegenheit verfolgte - an dieser Stelle darf gelacht werden!


    Tao

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!