Unsere Beispielkonfiguration ist ein Verzeichnis _irgendwo_, welches folgende Unterstruktur hat (teilweise optional):
Die Verzeichnisnamen bzw. sogar deren Position anderswo sind größtenteils in etc/thorma.conf konfigurierbar (die Datei ist einfacher Text und kommentiert.
Verzeichnis/Datei | Funktion |
---|---|
cgi-bin/ | Die CGI-Scripte (und Daten derer) für das Web-Frontend |
var | veränderliche Daten (Musik, Listen, Datenbank, ...) |
var/lists | Verzeichnisstruktur für verschiedene generierte oder von Nutzern angelegte Playlisten |
var/music | Die (MP3)-Dateien in einer anschließend erläuterten und auch einleuchtenden Struktur |
bin/ | Alle Programme des Basispaketes und noch einige mehr (Perl/Bash-Scripts) |
lib | Verschiedene Programmbibliotheken, der Schwerpunkt des Quellcodes ist in lib/perl |
lib/webdata | Daten für das Webfrontend (HTML/CSS-Dateien und Bilder) |
index.html | Startdatei für Web-Frontend |
index_frame.html | auch, mit zwei Frames (Browser & Steuerzentrale) |
Die Programme sollten ihre Umgebung anhand des Aufrufpfade erkennen - sie orientieren sich von bin aus. Bequem, aber nicht nötigist ist das Hinzufügen des bin-Verzeichnisses zu $PATH.
So manches hier ist lediglich Konvention und nicht unbedingt für das Funktionieren des ThOrMA notwendig. Jedoch sollte man bedenken, dass das nunmal die Umgebung ist, in der die Programe getestet werden... Grundannahme ist ein Wurzelverzeichnis (hier "mp3s"), unter dem ein Schema analog zu dem bei uns genutztem eingehalten wird:
mp3s/ |-sampler/ | |-<Sampler1>/ | | |-<Dateien> | |-<Sampler2>/ | | |-<Dateien> | |-<...>/ | |-<Dateien> |-<Künstler1>/ | |-<Album1>/ | | |-<Dateien> | |-<Album2>/ | | |-<Dateien> | |-<...>/ | |-<Dateien> |-<Künstler2>/ | |-<...>/
Also einfach: Wurzel/Band/Album/Datei. Wichtig ist, dass eine Musikdatei immer in einem Verzeichnis der Album-Ebene liegt. MP3s, die nicht von Wurzel/*/*/*.mp3 erfasst werden, existieren für das ThOrMA nicht (es ist aber nicht garantiert, dass sie nicht stören werden)!
Ich empfinde es als sinnvoll, dem Albumnamen das Erscheinungsjahr vorzusetzen, was auch thorma_dbmgr tut, wenn er diese Information hat. Wichtig ist auch, dass die Titel in der richtigen Reihenfolge im Dateisystem erscheinen, gewährleistet durch Voranstellen der Nummer derer.
Datei/Verzeichnisnamen werden - wenn schon nicht geschehen - kleingeschrieben, auf eine gewissen Satz von Zeichen reduziert, Leerzeichen durch _ ersetzt; was die Arbeit in der Shell erleichtert und auch dafür sorgt, dass unterschiedliche Schreibweisen für einen Künstlernamen in der FreeDB doch zu einem Verzeichnis führen. Es wirkt dann irgendwie klarer.
>ls mp3s/beroshima/2001_pop_(pornography_of_performance)/ 01-t-word_(a_tribute_to_juan).mp3 02-mokambo.mp3 03-cold_love_(short_version).mp3 04-world-wide-whore_(robot_mix).mp3 05-dance_after.mp3 06-domo_arrigato_mr._roboto_(im_the_masturbator_with_my_pocket-vibrator....).mp3 07-understand.mp3 08-mokka_polka.mp3 09-shot_me.mp3 10-cold_love_(club_version).mp3 11-world-wide-whore_(voice_mix).mp3 12-(the)_pornography_of_performance_(film_ab).mp3
Spezielle Bewandnis hat das Künstler-Verzeichnis "sampler": Dies ist das Verzeichnis für alle Various Artist & Co. CDs, also Sampler. Der Name ist konfigurierbar...
In den Samplern tritt dann noch ein vor allem dort sinnvolles Schema für die Namen der MP3s zu Tage, welches aber auch anderswo durchaus nützlich sein kann:
xx-kuenstler_@_titel.mp3
>ls mp3s/sampler/mittermeier_&_friends/ 01-buzz_buzz_featuring_mittermeier_@_back_to_life.mp3 02-mittermeier_vs_guano_babes_@_kumba_yo.mp3 03-michael_mittermeier_@_la_rhythmo_del_burro.mp3 04-sasha_meets_mittermeier_@_el_burro.mp3 05-somersault_&_xavier_naidoo_@_way_to_mars.mp3 06-michael_mittermeier_@_zeugen_jehova_exorzismus.mp3 07-tito_&_tarantula_meets_mittermeier_@_exorcize_your_funky_little_demon.mp3 08-die_lyrika_&_mittermeier_@_das_akchromosom__arschlochkind_strikes_back.mp3 09-mittermeier_meets_the_king_@_smoke_on_the_water_elvis_lives_mix.mp3 10-somersault_@_make_me_laugh.mp3 11-powwow_@_a_man_is_a_man.mp3 12-mittermeier_vs_badesalz_@_walking_on_the_moon.mp3 13-reamonn_&_mittermeier_@_the_lie_and_the_truth_i_love_you.mp3 14-powwow_@_believe_me.mp3 15-somersault_@_say_goodbye_&_hidden_akattack.mp3
(Gegen die hidden tracks sollte auch noch was getan werden... zerschneiden, 2 separate Dateien erzeugen - eine Aufgabe für ThOripper vorm Encoden? ... oder im Nachhinein mit cutmp3?)
In den Albumverzeichnissen schwirren dann noch ein paar Dateien rum, die hauptsächlich für thorma_dbmgr wichtig sind (üblicherweise per vorangestelltem Punkt versteckt un bei Bedarf natürlich erzeugt).
Der Nutzer wird sich hauptsächlich für die Beschreibungsdatei interessieren (bei uns heißt sie Beschreibung.txt); hier stehen die Tags im ThOrMa-Sinne zur Beschreibung der Musiken, auf welche sich auch die Suchfunktion bezieht. Ihr Format wird auch noch näher erläutert werden, da wenn auf das Web-Frontend verzichtet wird, hier selbst Hand angelegt werden muss.
Generell und im Besonderen wenn das Web-Frontend eingestetzt wird, sollte man sich Gedanken um die Dateirechte machen; der Webserver benötigt Schreibrechte auf so ziemlich alles unter var.
Nachdem alles Programmatische an seinem Platz ist, wir des Zeit für die ersten Probleme. Es gibt bestimmt welche. Deshalb wär es nett, wenn mal einige Laute das Testen. Bitte tut es.
Falls bereits MP3s vorhanden sind, diese mit beliebigen Mitteln (Dateimanager, cp, mv,...) wie oben beschrieben ins dafür vorgesehenen Verzeichnis schaffen. Wenn nicht, dann kann man sich zwecks einfacher Einbindung von Audio-CDs mit ThOripper beschäftigen; dieser sorgt mit Hilfe von cdparanoia, lame und dann durch thorma_dbmgr in Verbindung mit id3v2 für das Rippen, Komprimieren, Benennen & ID3-Taggen durch FreeDB.
Im Idealfall (passende Optionen im Script voreingestellt und auch sonst alles grün) braucht es nur ein 'thoripper all' und die eingelegte cd wandert bis auf eine eventuell notwendige Entscheidung über mehrere mögliche FreeDB-Einträge weitgehend selbstständig ins Archiv (zuerst in den Import-Ordner, ein `thorma_dbmgr -i` erledigt den Rest).
Wenn man sich eine entsprechende Verknüpfung auf dem Desktop anlegt, geht das sogar mit einem Mausklick;-)
Nachdem nun etwas neues ins Archiv gewandert ist oder gewisse andere Dinge geändert wurden, ist mitunter eine Inventur fällig einfach `thorma_dbmgr` bzw. DBUpdate über die Web-Oberfläche erledigen dies. Das passiert dann:
Wird sich zeigen... bei mir läufts;-)
Wozu gibt's denn sonst Standards?