[Python-de] freedb abfrage...
genrich
Genrich at gmx.net
Mit Nov 10 10:40:40 CET 2004
Habe nun entlich eine funktionierende Variante um von einer Audio-CD die freedb-ID zu
berechnen:
==================================================
#!/usr/bin/python
# -*- coding: cp1252 -*-
from pygame import cdrom
cdrom.init()
print "CDROM initialized: ", cdrom.get_init()
print "Number of CDROMs: ", cdrom.get_count()
def DiscID(cd_object):
def getHMS_f(Frames):
# Umwandung von Frames in h:m:s.frames
s,Frames = divmod(Frames,75)
h,s = divmod(s,3600)
m,s=divmod(s,60)
return "%02.f:%02.f:%02.f.%02.f" % (h, m, s, Frames)
def sumDigits( n ):
# Berechnet die Quersumme
# n=123456789 => 1+2+3+4+5+6+7+8+9 = 45
ret = 0
for i in str(n):
ret += int(i)
return ret
TrackAnzahl = cd_object.get_numtracks()
checksum=0
total_length = 0
for i in range(TrackAnzahl):
track_length = cd_object.get_track_length(i)*75
print "%2d - %s" % (i, getHMS_f(track_length))
total_length += track_length
checksum += sumDigits( int(cd_object.get_track_start( i )) )
print "\nTotalZeit: %s -> %dsek." % (getHMS_f(total_length), round(total_length/75))
RAWdiscID = (long(checksum % 0xff) << 24) + (long(total_length/75) << 8) + TrackAnzahl
return "%08lx" % RAWdiscID
def getIDs():
IDlist=[]
for i in range(cdrom.get_count()):
cd_object = cdrom.CD(i)
print "\nNr.:",i," Laufwerk:",cd_object.get_name()
print "Initialisierte..."
cd_object.init()
if cd_object.get_numtracks()!=0:
# Es sind Tracks vorhanden
freedbID = DiscID(cd_object)
print "\nfreedb ID...:", freedbID
IDlist.append(freedbID)
return IDlist
==================================================
getIDs() liefert eine Liste der IDs aus allen CD-ROM Laufwerke zurück, mit der man eine
freedb Abfrage starten kann...
Es wird das Paket pygame benötigt, damit man systemunabhängig auf das CD-ROM zugreifen
kann: http://www.pygame.org/
Danke an alle die mir geholfen haben
--
Genrich