p@24: # -*- coding: utf-8 -*- p@24: """ p@24: Created on Wed Jul 15 00:41:44 2015 p@24: p@24: @author: paulochiliguano p@24: """ p@24: p@24: p@24: import csv p@24: import time p@24: from pyechonest import song, config #http://echonest.github.io/pyechonest/ p@24: import oauth2 as oauth #https://github.com/jasonrubenstein/python_oauth2 p@24: import urllib2 p@24: import os p@24: p@24: # 7digital keys p@24: consumer_key = '7ds28qendsk9' p@24: consumer_secret = 'm5nsktn3hu6x45cy' p@24: consumer = oauth.Consumer(consumer_key, consumer_secret) p@24: p@24: # EchoNest key p@24: config.ECHO_NEST_API_KEY="LINDFDUTQZQ781IE8" p@24: p@24: # Retrieve audio clips p@25: mp3_folder = '/Users/paulochiliguano/Documents/msc-project/dataset/7digital/\ p@25: audio' p@25: filename_echonest = '/Users/paulochiliguano/Documents/msc-project/dataset/\ p@24: CF_dataset_songID.txt' p@25: filename_7digital = '/Users/paulochiliguano/Documents/msc-project/dataset/\ p@25: 7digital/CF_dataset_7digital.txt' p@24: with open(filename_echonest, 'rb') as f, open(filename_7digital, 'wb') as out: p@24: writer = csv.writer(out, delimiter='\t') p@25: '''for i in xrange(1218): p@25: f.readline()''' p@24: next = f.readline() p@24: while next != "": p@24: try: p@24: s = song.Song(next) p@24: #s = song.Song('SOPEXHZ12873FD2AC7') p@24: #except: p@24: except IndexError: p@24: time.sleep(3) p@24: print "%s not available" % next[:-1] p@24: next = f.readline() p@24: else: p@24: time.sleep(3) p@24: try: p@24: ss_tracks = s.get_tracks('7digital-UK') p@24: except: p@24: time.sleep(3) p@24: print "%s not in UK catalog" % next[:-1] p@24: next = f.readline() p@24: else: p@24: #print(len(ss_tracks)) p@24: if len(ss_tracks) != 0: p@24: ss_track = ss_tracks[0] p@24: preview_url = ss_track.get('preview_url') p@24: track_id = ss_track.get('id') p@24: p@24: req = oauth.Request( p@24: method="GET", p@24: url=preview_url, p@24: is_form_encoded=True p@24: ) p@24: req['oauth_timestamp'] = oauth.Request.make_timestamp() p@24: req['oauth_nonce'] = oauth.Request.make_nonce() p@24: req['country'] = "GB" p@24: sig_method = oauth.SignatureMethod_HMAC_SHA1() p@24: req.sign_request(sig_method, consumer, token=None) p@24: p@24: try: p@24: response = urllib2.urlopen(req.to_url()) p@24: except: p@24: #time.sleep(16) p@24: print "No available preview for %s" % next[:-1] p@24: #writer.writerow([next[:-2], 'NA', s.artist_name.encode("utf-8"), s.title.encode("utf-8")]) p@24: else: p@24: print([ p@24: next[:-1], p@24: track_id, p@24: s.artist_name, p@24: s.title, p@24: preview_url p@24: ]) p@24: writer.writerow([ p@24: next[:-1], p@24: track_id, p@24: s.artist_name.encode("utf-8"), p@24: s.title.encode("utf-8"), p@24: preview_url p@24: ]) p@24: mp3_file = os.path.join(mp3_folder, next[:-1]+'.mp3') p@24: with open(mp3_file, 'wb') as songfile: p@24: songfile.write(response.read()) p@24: time.sleep(16) p@24: next = f.readline() p@24: