Example #1
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')
Example #2
0
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']
Example #3
0
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']
Example #4
0
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
Example #5
0
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)
Example #6
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']
Example #7
0
                        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)
Example #8
0
 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)
Example #9
0
 def _get_echoprint(self, data):
     return echoprint.codegen(data, 0)
Example #10
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')
Example #11
0
    '-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