Exemple #1
0
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 :/'
Exemple #2
0
	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]))
Exemple #3
0
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)