def test_codegen(self): d = echoprint.codegen(simplejson.load(open('test_data.json'))) self.assertEqual( d['code'], 'eJydz7sNAzAIRdGV-GPGiQHvP0KcypVdpDnNFUIPANDhAdWL963AC7T_YbrSnjJMocwJo7Qy5FAELdcqtpBt6Ezu38I0r4MH7e-3iroTDooJAZO7LO2AWeszaBXyXt_anXgQlcBr_QIy12Qh' ) self.assertEqual(d['version'], '4.11')
def identify(): record(TMP_WAV) d = echoprint.codegen(get_samples_from_file(TMP_WAV)) endpoint = "http://developer.echonest.com/api/v4/song/identify" url = "%s?api_key=%s&code=%s" % (endpoint, ECHONEST_API_KEY, d['code']) r = requests.get(url) res = simplejson.loads(r.text) print res['response'] return res['response']
def getter_sound(filename): print( u'Start record') samples = [] with open(filename, 'rb') as f: buf = f.read(512) while len(buf) == 512: samples.extend(struct.unpack('128f',buf)) buf = f.read(512) if len(buf) > 0: fmt = '{}f'.format(len(buf)//4) samples.extend(struct.unpack(fmt,buf)) d = echoprint.codegen(samples, 0) print( u'Complited.') return d['code']
def music_identify(music_filename): api_key = "68NJWFXIG7UDXOTC2" filename = music_filename start = "10" duration = "30" p = subprocess.Popen([ 'ffmpeg', '-i', filename, '-ac', '1', '-ar', '11025', '-f', 's16le', '-t', duration, '-ss', start, '-', ], stdout=subprocess.PIPE) samples = [] while True: sample = p.stdout.read(2) if sample == '': break samples.append(struct.unpack('h', sample)[0] / 32768.0) d = echoprint.codegen(samples, int(start)) if os.environ.has_key('HTTP_PROXY'): proxy = os.environ['HTTP_PROXY'] else: proxy = None r = requests.post( 'http://developer.echonest.com/api/v4/song/identify', data={'query': json.dumps(d), 'api_key': api_key, 'version': d['version']}, headers={'content-type': 'application/x-www-form-urlencoded'}, proxies={'http': proxy} ) print r.content return r.content
def codegen_url(url, start=-1, duration=-1): args = [ 'ffmpeg', '-loglevel', 'quiet', '-i', url, '-ac', '1', '-ar', '11025', '-f', 's16le', ] if start > 0: args.extend(['-ss', str(start)]) if duration > 0: args.extend(['-t', str(duration)]) args.append('-') ffmpeg = subprocess.Popen(args, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) (stdout, stderr) = ffmpeg.communicate() io = BytesIO(stdout) return echoprint.codegen(get_samples(io), 0)
def codegen(self): print print '#####################################################' print 'codegen' print 'path: %s' % self.path try: with open(self.path) as f: pass except IOError as e: print "Unable to open file" print e sys.exit(1) print print '#####################################################' print 'calling ffmpeg' p = subprocess.Popen([ 'ffmpeg', '-i', self.path, '-ac', '1', '-ar', '11025', '-f', 's16le', '-t', '%s' % (REC_DURATION), '-ss', '1', '-', ], stdout=subprocess.PIPE) samples = [] while True: sample = p.stdout.read(2) if sample == '': break samples.append(struct.unpack('h', sample)[0] / 32768.0) print print '#####################################################' print 'Some samples (first 10)' print samples[0:10] data = echoprint.codegen(samples) print print '#####################################################' print 'generated codestring' code = data['code'] print '# code sequence' print fp.decode_code_string(code) print '# code string' print code print data['version'] # calling api... if self.lookup: print print '#####################################################' print 'API SAYS...' r = requests.get("http://local.openbroadcast.ch:8080/en/api/v1/track/?format=json&code=%s" % code) res = r.json() print res print print res['objects'][0]['absolute_url']
sample_duration = int(audiofile.seconds_length()) -10 if audiofile.seconds_length() > 20: p = subprocess.Popen([ 'ffmpeg', '-loglevel', 'quiet', '-i', full_path, '-ac', '1', '-ar', '11025', '-f', 's16le', '-t', '%s' % sample_duration, '-ss', '10', '-', ], stdout=subprocess.PIPE) samples = [] while True: sample = p.stdout.read(2) if sample == '': break samples.append(struct.unpack('h', sample)[0] / 32768.0) d = echoprint.codegen(samples) res = fp.best_match_for_query(d['code']) if res.match(): print 'Track already in database' skip_media = True else: print 'New track, continue with import' if not skip_media: media, media_created = Media.objects.get_or_create(name=track_name, tracknumber=tracknumber, artist=artist, release=release)
def test_codegen(self): d = echoprint.codegen(simplejson.load(open('test_data.json'))) self.assertEqual(d['code'], 'eJyd0juuQyEMRdEp2cbYZjjgz_yHEKrHy1VCkWYVW0I6CAAAFX6G4sb9LMMNtBtMN3q_cV_V2g2U32n0FUusWpTsn0h1NukQooQjImzVPwiSn-0PlsIm1pe33K9S06QOOgjw0Q7YNMEEW7U1vRvGhMzBqmpTi2B23KNkjBg83YEOblrz0Q5WwV5jmWUsXct65YES9_T3dsC-ryO8mnwCPfZ2qsC2_1F6H2QH7jzw0Q4vGHW94A==') self.assertEqual(d['version'], 4.12)
def _get_echoprint(self, data): return echoprint.codegen(data, 0)
def test_codegen(self): d = echoprint.codegen(simplejson.load(open('test_data.json'))) self.assertEqual(d['code'], 'eJydz7sNAzAIRdGV-GPGiQHvP0KcypVdpDnNFUIPANDhAdWL963AC7T_YbrSnjJMocwJo7Qy5FAELdcqtpBt6Ezu38I0r4MH7e-3iroTDooJAZO7LO2AWeszaBXyXt_anXgQlcBr_QIy12Qh') self.assertEqual(d['version'], '4.11')
'-ac', '1', '-ar', '11025', '-f', 's16le', '-t', duration, '-ss', start, '-', ], stdout=subprocess.PIPE) samples = [] while True: sample = p.stdout.read(2) if sample == '': break samples.append(struct.unpack('h', sample)[0] / 32768.0) d = echoprint.codegen(samples, int(start)) if os.environ.has_key('HTTP_PROXY'): proxy = os.environ['HTTP_PROXY'] else: proxy = None r = requests.post( 'http://developer.echonest.com/api/v4/song/identify', data={'query': json.dumps(d), 'api_key': api_key, 'version': d['version']}, headers={'content-type': 'application/x-www-form-urlencoded'}, proxies={'http': proxy} ) print r.content