def _fingerprint_worker(filename, limit=None, song_name=None): # Pool.imap sends arguments as tuples so we have to unpack # them ourself. try: filename, limit = filename except ValueError: pass songname, extension = os.path.splitext(os.path.basename(filename)) song_name = song_name or songname channels, Fs, file_hash = decoder.read(filename, limit) result = set() channel_amount = len(channels) for channeln, channel in enumerate(channels): # TODO: Remove prints or change them into optional logging. # print("Fingerprinting channel %d/%d for %s" % (channeln + 1, # channel_amount, # filename)) hashes = fingerprint.fingerprint(channel, Fs=Fs) # print("Finished channel %d/%d for %s" % (channeln + 1, channel_amount, # filename)) result |= set(hashes) return song_name, result, file_hash
def _fingerprint_worker(filename, limit=None, song_name=None): # Pool.imap sends arguments as tuples so we have to unpack # them ourself. try: filename, limit = filename except ValueError: pass songname, extension = os.path.splitext(os.path.basename(filename)) song_name = song_name or songname channels, Fs, file_hash, audio_length = decoder.read(filename, limit) result = set() channel_amount = len(channels) for channeln, channel in enumerate(channels): logging.getLogger('dejavu').info( "Fingerprinting channel %d/%d for %s" % (channeln + 1, channel_amount, filename)) hashes = fingerprint.fingerprint(channel, Fs=Fs) logging.getLogger('dejavu').debug( "Finished channel %d/%d for %s" % (channeln + 1, channel_amount, filename)) result |= set(hashes) return song_name, result, file_hash, audio_length
def _fingerprint_worker(filename, limit=None, song_name=None): # Pool.imap sends arguments as tuples so we have to unpack # them ourself. try: filename, limit = filename except ValueError: pass songname, extension = os.path.splitext(os.path.basename(filename)) song_name = song_name or songname channels, Fs, file_hash = decoder.read(filename, limit) result = set() channel_amount = len(channels) for channeln, channel in enumerate(channels): # TODO: Remove prints or change them into optional logging. print("Fingerprinting channel %d/%d for %s" % (channeln + 1, channel_amount, filename)) hashes = fingerprint.fingerprint(channel, Fs=Fs) print("Finished channel %d/%d for %s" % (channeln + 1, channel_amount, filename)) result |= set(hashes) return song_name, result, file_hash
def find_matches(self, samples, Fs=fingerprint.DEFAULT_FS): hashes = fingerprint.fingerprint(samples, Fs=Fs) mapper = {} total_hashes = 0 for hash, offset in hashes: mapper[hash.upper()[:fingerprint.FINGERPRINT_REDUCTION]] = offset total_hashes += 1 return (self.db.return_matches(mapper), total_hashes)
def _recognize(self, *data): matches = [] hashes_count = 0 for d in data: matches.extend(self.dejavu.find_matches(d, Fs=self.Fs)) hashes = fingerprint.fingerprint(d, Fs=self.Fs) hashes_count += len(list(hashes)) return self.dejavu.align_matches(matches, hashes_count)
def fp_printing(filename): songname, extension = os.path.splitext(os.path.basename(filename)) channels, Fs, file_hash = decoder.read(filename, None) result = set() channel_amount = len(channels) for channeln, channel in enumerate(channels): # TODO: Remove prints or change them into optional logging. print("Fingerprinting channel %d/%d for %s" % (channeln + 1, channel_amount, filename)) hashes = fingerprint.fingerprint(channel, Fs=Fs) print("Finished channel %d/%d for %s" % (channeln + 1, channel_amount, filename)) result |= set(hashes) return song_name, result, file_hash
def generate_hashes(mp3file): channels, Fs, file_hash = decoder.read(mp3file, None) chunk_sz = Fs * 2048 all_hashes = deque() begin_chunk = 0 for chunk in chunker(channels[0], chunk_sz): hashes = fingerprint.fingerprint(chunk, Fs=Fs, plot=False) for hash, t_offset in hashes: all_hashes.append(( hash, t_offset + int(begin_chunk / 2048), )) begin_chunk += chunk_sz return all_hashes
def get_fingerprints(file_path, limit=None, song_name=None): #Fingerprints a file and send the number of fingerprints that found try: filename, limit = file_path except ValueError: pass songname, extension = os.path.splitext(os.path.basename(file_path)) song_name = song_name or songname channels, Fs = decoder.read(file_path, limit) result = set() channel_amount = len(channels) for channeln, channel in enumerate(channels): hashes = fingerprint.fingerprint(channel, Fs=Fs) result |= set(hashes) return result
def find_matches(self, samples, Fs=fingerprint.DEFAULT_FS): hashes = fingerprint.fingerprint(samples, self.params, Fs=Fs) return self.db.return_matches(hashes)
def find_matches(self, samples, Fs=fingerprint.DEFAULT_FS): hashes = fingerprint.fingerprint(samples, Fs=Fs) return self.db.return_matches(hashes)