CDDB-Expect

Was ist CDDB-Expect?
Warum das Ganze?
Was macht CDDB-Expect?
Auf welchen Systemen läuft CDDB-Expect?
Compilieren
Export von CDDB-Daten aus Feurio!
Import von CDDB-Daten in CDmax
Sammelsurium v1.0
Was noch zu tun ist:
Links zum Thema

TOP Was ist CDDB-Expect?
CDDB-Expect ist mein kleines Software-Sammelsurium für den Zugriff auf CDDB.

TOP Warum das Ganze?
Ein Problem bei großen Teilen der CD-Player- und CD-Archiv-Software die CDDB unterstützt ist, daß sie entweder für Windows entwickelt wurde oder daß sie für jede neue CD eine Einzelabfrage an CDDB startet.
Letzteres ist in einem Land (= Deutschland) in dem Ortsgespräche (= Modemzugang ins Internet) immer noch Geld kosten keine gute Idee.
Ersteres ist dann ein Problem, wenn man seine Tonträger (das sind ja bekanntlich nicht nur CDs) bereits unter einem anderen System verwaltet. Außerdem habe ich schon genug CD-Spieler außerhalb des Rechners und werde als ordnungsliebender und Datenbank-versierter Musikfreund eine anständige Musik-Datenbank immer der Minimal-CD-Verwaltung diverser CD-Player vorziehen.

TOP Was macht CDDB-Expect?
CDDB-Expect erweitert eine CDDB-Datei ohne Titelinformationen durch Abfrage von CDDB in eine mit Titelinformationen. In der Anfangsdatei evtl. enthaltene Titelinformationen werden nicht beachtet.

TOP Auf welchen Systemen läuft CDDB-Expect?
Um alle Komponenten zu nutzen braucht es folgendes:

Es gibt auch eine expect-Variante die sich mit #include <expect.h> direkt in C-Programm einbinden läßt, diese steht mir aber leider nicht zur Verfügung. Die Lösung mit dem "stand-alone"-expect hat außerdem den Vorteil, daß die Aufgabenverteilung einfacher ist:

Da mir expect bisher nur unter Unix untergekommen ist (ich lasse mich da gerne eines besseren belehren) kann dieser Rechner unter jedem Betriebsystem laufen, für das ein C-Compiler vorhanden ist (ziemlich viele!). Da die C-Programme nichts anderes tun, als mit Textdateien hin- und herzujonglieren ist die Implementierung auf anderen Wegen natürlich auch möglich evtl. sogar einfacher.

TOP Compilieren
Die C-Quellen wurden getestet mit EMX-GCC unter OS/2 Warp 3 und GCC unter HP-UNIX irgendwas.

OS/2:[G:\src\c\cddb]gcc cddb2query.c
HP-UNIX:[coxo] cddb > gcc cddb2query.c -o cddb2query

Falls unter UNIX das aktuelle Verzeichnis (mit den CDDB-Expect Programmen) nicht in der PATH= Variable enthalten ist, kann der Aufruf mit [coxo] cddb > ./cddb2query erfolgen.

Für die anderen Programme query2expect, log2read, read2expect, log2cddb, cdb2query und log2cdmax gilt natürlich selbiges.

Was mir bereits Probleme bereitet hat, ist die unterschiedliche Darstellung des Zeilenendes bei verschiedenen Systemen und Compilern. Ein und die selbe Eingangsdatei wird dadurch unterschiedlich interpretiert, weil der eine Compiler "\n" anders umsetzt als ein anderer. Zuverlässig ist deshalb nur die direkte Abfrage in der Form ((c==0x0a) || (c==0x0d)). Hat zumindestens bis jetzt die Probleme, die der Mischbetrieb unter OS/2 und UNIX mit sich bringt, behoben.

TOP Export von CDDB-Daten aus Feurio!
Da Feurio! keinen Export im CDDB-Format unterstützt, habe ich eine zweite Version des query-Konverters geschrieben, der die Feurio! .cdb-Dateien nach .query konvertiert (cdb2query).
Der Konverter kann alle .cdb-Dateien konvertieren, und das obwohl die Parameter P:... und B:... ihren Wert nicht über alle Dateien beibehalten. Das Programm erkennt jedoch welche "Mutation" von P:... und B:... vorliegt und verarbeitet die Zahlenwerte entsprechend.

TOP Import von CDDB-Daten in CDmax
Für CDmax mußte ich den (Rück-)Konverter ins CDDB-Format etwas angepassen. Außerdem scheint es notwendig zu sein, die Einträge nach disc ID sortiert abzuspeichern. Das läßt sich (provisorisch) am einfachsten erledigen, indem man test.query vor der Weiterverarbeitung zeilenweise sortiert.

TOP Sammelsurium v1.0
Alle kursiven Parameter im der angegebenen Aufrufreihenfolge sind derzeit noch direkt im Programmtext festgelegt.

Aufrufreihenfolge

cddb2query test.cddb test.query cddb-Datei -> query-Informationen
Alternative Version zum verarbeiten von Feurio! .cdb-Dateien:
cdb2query feurio.cdb feurio.query .cdb-Datei -> query-Informationen
query2expect test.query query.expect query-Informationen -> expect cmdfile
expect query.expect >query.log telnet-Dialog: cddb query
log2read query.log test.read log-Datei -> read-Informationen
read2expect test.read read.expect read-Informationen -> expect cmdfile
expect read.expect >read.log telnet-Dialog: cddb read
log2cddb read.log data.cddb log-Datei -> cddb-Datei
Alternative Version zum erzeugen CDMax-tauglicher CDDB-Dateien:
log2cdmax read.log data.cdmax log-Datei -> cddb-Datei mit CDMax-Zusatzeinträgen