Hey leute,
da wir hier zu Hause 5 Rechner + eine PS3 stehen haben (3 Rechner sind meine 😀) hab ich mich nach möglichkeiten umgeschaut Musik möglichst Zentral zu Speichern und abzuspielen. UPnP ist mir nicht flexibel genug ich vermisse besonders Möglichkeiten zum Remote Musik hinzuzufügen, außerdem funktioniert das nicht übers Internet wenn ich mal in der Uni sitz 😉.
Rythmbox benutzt DAAP, was im Prinzip alles Mitbringt was ich mir so wünsche, über Portforwarding ist es auch übers Internet erreichbar. Merkwürdigerweise funktioniert bei mir zu Hause einiges nicht über das Netzwerk, der Ubuntu Laptop (Server, Wlan) lässt sich nach ein paar Stunden nicht mehr anpingen, verbindungen zu DAAP schlagen fehl (was vor ein paar Stunden tadellos ging), SSHFS, SSH sowie VNC gehen nicht mehr. ABER HTTP geht 😀. Die Netzwerkkonfiguration am Router hab ich mehr oder weniger auf Standard zurückgestellt, nur die festen IP Addressen für die MAC Addressen habe ich in der DHCP konfig gelassen. Ob das vllt. an Virtualbox mit Windows XP und Itunes dadrauf liegt?... . Zurück zu DAAP, bei großen Datenbanken (100 GB) ist die Verbindungsphase zu langsam, es dauert Minuten bis die Daten übers Netzwerk geflutscht sind.
Um zum Punkt zu kommen:
Beim nachdenken über diese Probleme kam ich darauf einen Eigenen Musikserver zu schreiben, die grundidee für mich ist es Musik nicht mehr im Dateisystem sondern in der Datenbank zu speichern, was ich persönlich schöner finde und sich leichter verwalten lässt... Jedenfalls soll der Server auch mit anderen Quellen umgehen können für diejenigen die dem nicht so trauen 😉.
Unified Audio Media Server
beherscht:
Upnp
DAAP
Eigene HTTP Website
emulation von ordnern per FTP und per SSHFS
[mounten ins normale Dateisystem?]
Datenbankstruktur:
"Normales" Dateisystem Interpret → Album → Titel
MySQL Datenbankstruktur (Dateien sind ebenfalls gespeichert!)
–––-möglich in zukunft
Direkte Itunes DB unterstützung
weitere DB interfaces
→ abstraktionsschicht zwischen DB und internen programabläufen
Steuerungsmöglichkeiten:
Webinterface (sowohl Admininterface, hinzufügen von Musik/bearbeiten von Tags, als auch abspielen) Um nicht Code doppelt schreiben müssen (zugriff auf DB + interpretation) arbeitet die Serversoftware als Webserver (nix mit php 😉 )
Konsole (soll ja als Server benutzt werden, also pflicht)
GUI, fürs Administrieren, musik hinzufügen als auch abspielen
Da wir aus der Datenbank ein Dateisystem für FTP und SSHFS verbindungen emulieren wollen haben änderungen hier auswirkungen auf die DB, hinzufügen eines Liedes in einem Ordner fügt in der Datenbank die datei mit den informationen die sich aus der Ordnerstruktur Interpret → Album → Titel ergeben hinzu
Konzeption:
Möglichst wenig Code neu schreiben, d.h. z.B. Bibliotheken zum ändern und lesen von ID3 tags suchen.
Abstraktionsschichten um alles möglichst Modular zu halten
Datenbank < - > Datenstrukturen im Programm < - > Ausgabe
Roadmap:
v0.0.1 - MySQL Datenbankstruktur
v0.0.2 - Datenbanklayer mit Abfragefkt. wie getAlbumsByInterpret, implementierung von MySQL verbindung
v0.0.3 - Implementierung von Konsolenfunktionen wie Musik hinzufügen, sowie suchen
v0.1.0 - Implementierung einer Website die das durchsuchen und abspielen einzelner Tracks aus der DB möglich macht.
Über die Sprache bin ich mir leider noch nicht ganz im klaren, C# behersche ich am besten (Windows Zeit ^^), aber auf Mono möchte ich im moment nicht unbedingt setzen, C kommt für mich nicht in Frage, keine Objektorientierung, C++ wäre eine Möglichkeit, muss ich mir aber noch durch den Kopf gehen lassen.
Python und Java würden mir auch gefallen allerdings müsste ich mich in beides erst einarbeiten...
habt ihr vielleicht Anregungen? Hilfe anzubieten? Featurevorschläge(feel free to submit a patch 😀)? ich könnt mich auch gleich verurteilen 😀
Das Projekt muss leider eher nebenher laufen da die Prüfungszeit an der Uni bald losgeht... 😉
mfg Tom