def main(): musicdns.initialize() cache = musicdns.cache.MusicDNSCache() for fn in find_files(): print 'Fingerprinting: ' + os.path.relpath(fn) try: cache.getpuid(fn, MUSICDNS_KEY) except IOError: print 'Failed :/'
def get_puid(self, filename): try: puid, duration = cache.getpuid((filename).encode("utf8"), "a7f6063296c0f1c9b75c7f511861b89b") return puid except: error = "" log( "ERROR: Failed to get PUID for song AID:"+ filename + " because "+str(sys.exc_info()[1]))
def guess_release(folder, files): nfiles = [] cache = musicdns.cache.MusicDNSCache() print "Fingerprinting..." for fn in files: try: puid, _ = cache.getpuid(fn, MUSICDNS_KEY) except IOError: puid = None track = filename_track_number(fn) nfiles += [(track, fn, puid)] nfiles.sort() matchrel = defaultdict(int) for i, (no, fn, puid) in enumerate(nfiles): print 'Asking MusicBrainz about ' + basename(fn) if puid is None: continue for tno, track, release in find_releases(puid): included = 0 if no == tno: matchrel[release.id] += 1 included = 1 print u' %d - %s - %s %s' % (tno, track.title, release.title, ' <=' if included else '') q = Query() i = ReleaseIncludes( artist=True, tracks=True, urlRelations=True ) releaseids = sorted(matchrel.iteritems(), key=itemgetter(1), reverse=1) if not releaseids: return None releases = None while not releases: try: releases = [(q.getReleaseById(rid, i), freq) for rid, freq in releaseids] except WebServiceError, e: print '!! WebServiceError: ', e print '!! Retry in 5 seconds...' time.sleep(5)