Wie ist die FreeDB Suche implementiert


#1

Hi,

Erst mal Gratullation zu diesem guten Programm, ich nutze es seit langem unter Windows. Bin aber vor kurzem auf Linux umgestiegen, und habe es versucht mit Wine zum laufen zu bekommen. Dies ging aber nur bedingt.

Nun habe ich angefangen ein ähnliches Programm in JAVA zu schreiben, und wollte nun die Suche in der FreeDB Datenbank anhand von ausgewählten Dateien implementieren.

So wie ich das Sehe unterstützt das Protokoll nur eine Suche anhand der DiskID, ich habe nun versucht diese anhand des Algorithmuses zu generieren. Aber so richtig funktioniert das nicht, MP3Tag findet die CD aber richtig heraus.

Nun wollte ich fragen wie die suche in der Datenbank implementiert ist.

M.f.G.

Daschmi


#2

Hallo Daschmi,

ich berechne aus der Länge der Dateien die Anzahl der Frames (Sekunden * 75) und baue daraus dann die DiscID wie es im DiscID-Howto beschrieben ist. Beim Query wird dann ja auch noch die Anzahl der Tracks und die Frame-Positionen übermittelt.

Viele Grüße,
~ Florian


#3

Hi,

Aber mußt du dazu nicht die Reihenfolge der tracks wissen ? Man kann doch die Infos auch direct (nicht mit Query) anhand der Disk ID abfragen. (Da is nur das problem das man alle Kategorien durchsuchen muß)

Cu

Daschmi


#4

Doch natürlich - die Reihenfolge der Tracks ist zwingend notwendig! Wenn man direkt per DiscID abfrägt, wird die "fuzzy-matching" Tabelle des Servers umgangen, die bei DiscIDs die nicht ganz stimmen noch einiges rausholt (was bei der Berechnung aus Audio-Dateien auch öfters vorkommt).

Viele Grüße,
~ Florian


#5

Hi,

Ok Danke, hast mir geholfen.

Aber zur DiskID Berechnung is die Reihenfolge ja eigentlich egal, nur schade das er einen exact Match bei cddb read zurückgibt.

Na mal sehen... Die Websuche gibt es ja zum Glück auch

Daschmi


#6

Hi

Hab noch ein problem, wenn ich für b10b430e die Trackinfos per Protokoll hole erhalte ich :

xmcd

Track frame offsets:

182

12980

32457

47867

62420

80190

92332

109687

122232

143320

157142

169357

187797

201757

Disc length: 2885 seconds

Revision: 1

Processed by: cddbd v1.5.1PL0 Copyright © Steve Scherf et al.

Submitted via: ExactAudioCopy v0.95a5

DISCID=b10b430e
DTITLE=Boppin' B / Bop Around The Pop
TTITLE0=Drive My Car
TTITLE1=If You Believe
TTITLE2=We Can Leave The World
TTITLE3=I Feel Lonely
TTITLE4=Turn It Into Something Special
TTITLE5=Here She Comes Again
TTITLE6=Rooftop
TTITLE7=This Is My Time
TTITLE8=Everybody Loves You
TTITLE9=Owner Of My Heart
TTITLE10=Do It To Me
TTITLE11=Chemical Reaction
TTITLE12=I'm Still Waitin'
TTITLE13=Raindrops
EXTD=
EXTT0=
EXTT1=
EXTT2=
EXTT3=
EXTT4=
EXTT5=
EXTT6=
EXTT7=
EXTT8=
EXTT9=
EXTT10=
EXTT11=
EXTT12=
EXTT13=
PLAYORDER=
.

wenn ich mir aber

http://www.freedb.org/freedb/rock/b10b430e

anschaue da hab ich da mehr informationen wie Jahr und Genre ? Dein Programm findet das jahr un genre auch richtig heraus. Wie machst du das ?

Cu

Daschmi.


#7

Kann sein, dass es an der Protokoll-Version liegt. Mp3tag unterstützt die Version 5 und bekommt die Felder DYEAR und DGENRE auch von der Datenbank geliefert.

Viele Grüße,
~ Florian


#8

Hi

Das klingt gut, ich hab das einfach mal mit Telnet gemacht. Wie setzt du die Version mit dem hello command ? Ich dachte damit ist die Version von dem aufrufenden programm gemeint.

Muß ich gleich mal probieren

Danke


#9

Ah

hab gerade nochmal die protokolbeschreibung angeschaut, und es gefunden

Danke (Ich hätt wohl doch bis zum Ende lesen sollen)