p@24
|
1 # -*- coding: utf-8 -*-
|
p@24
|
2 """
|
p@24
|
3 Created on Wed Jul 15 00:41:44 2015
|
p@24
|
4
|
p@24
|
5 @author: paulochiliguano
|
p@24
|
6 """
|
p@24
|
7
|
p@24
|
8
|
p@24
|
9 import csv
|
p@24
|
10 import time
|
p@24
|
11 from pyechonest import song, config #http://echonest.github.io/pyechonest/
|
p@24
|
12 import oauth2 as oauth #https://github.com/jasonrubenstein/python_oauth2
|
p@24
|
13 import urllib2
|
p@24
|
14 import os
|
p@24
|
15
|
p@24
|
16 # 7digital keys
|
p@24
|
17 consumer_key = '7ds28qendsk9'
|
p@24
|
18 consumer_secret = 'm5nsktn3hu6x45cy'
|
p@24
|
19 consumer = oauth.Consumer(consumer_key, consumer_secret)
|
p@24
|
20
|
p@24
|
21 # EchoNest key
|
p@24
|
22 config.ECHO_NEST_API_KEY="LINDFDUTQZQ781IE8"
|
p@24
|
23
|
p@24
|
24 # Retrieve audio clips
|
p@25
|
25 mp3_folder = '/Users/paulochiliguano/Documents/msc-project/dataset/7digital/\
|
p@25
|
26 audio'
|
p@25
|
27 filename_echonest = '/Users/paulochiliguano/Documents/msc-project/dataset/\
|
p@24
|
28 CF_dataset_songID.txt'
|
p@25
|
29 filename_7digital = '/Users/paulochiliguano/Documents/msc-project/dataset/\
|
p@25
|
30 7digital/CF_dataset_7digital.txt'
|
p@24
|
31 with open(filename_echonest, 'rb') as f, open(filename_7digital, 'wb') as out:
|
p@24
|
32 writer = csv.writer(out, delimiter='\t')
|
p@25
|
33 '''for i in xrange(1218):
|
p@25
|
34 f.readline()'''
|
p@24
|
35 next = f.readline()
|
p@24
|
36 while next != "":
|
p@24
|
37 try:
|
p@24
|
38 s = song.Song(next)
|
p@24
|
39 #s = song.Song('SOPEXHZ12873FD2AC7')
|
p@24
|
40 #except:
|
p@24
|
41 except IndexError:
|
p@24
|
42 time.sleep(3)
|
p@24
|
43 print "%s not available" % next[:-1]
|
p@24
|
44 next = f.readline()
|
p@24
|
45 else:
|
p@24
|
46 time.sleep(3)
|
p@24
|
47 try:
|
p@24
|
48 ss_tracks = s.get_tracks('7digital-UK')
|
p@24
|
49 except:
|
p@24
|
50 time.sleep(3)
|
p@24
|
51 print "%s not in UK catalog" % next[:-1]
|
p@24
|
52 next = f.readline()
|
p@24
|
53 else:
|
p@24
|
54 #print(len(ss_tracks))
|
p@24
|
55 if len(ss_tracks) != 0:
|
p@24
|
56 ss_track = ss_tracks[0]
|
p@24
|
57 preview_url = ss_track.get('preview_url')
|
p@24
|
58 track_id = ss_track.get('id')
|
p@24
|
59
|
p@24
|
60 req = oauth.Request(
|
p@24
|
61 method="GET",
|
p@24
|
62 url=preview_url,
|
p@24
|
63 is_form_encoded=True
|
p@24
|
64 )
|
p@24
|
65 req['oauth_timestamp'] = oauth.Request.make_timestamp()
|
p@24
|
66 req['oauth_nonce'] = oauth.Request.make_nonce()
|
p@24
|
67 req['country'] = "GB"
|
p@24
|
68 sig_method = oauth.SignatureMethod_HMAC_SHA1()
|
p@24
|
69 req.sign_request(sig_method, consumer, token=None)
|
p@24
|
70
|
p@24
|
71 try:
|
p@24
|
72 response = urllib2.urlopen(req.to_url())
|
p@24
|
73 except:
|
p@24
|
74 #time.sleep(16)
|
p@24
|
75 print "No available preview for %s" % next[:-1]
|
p@24
|
76 #writer.writerow([next[:-2], 'NA', s.artist_name.encode("utf-8"), s.title.encode("utf-8")])
|
p@24
|
77 else:
|
p@24
|
78 print([
|
p@24
|
79 next[:-1],
|
p@24
|
80 track_id,
|
p@24
|
81 s.artist_name,
|
p@24
|
82 s.title,
|
p@24
|
83 preview_url
|
p@24
|
84 ])
|
p@24
|
85 writer.writerow([
|
p@24
|
86 next[:-1],
|
p@24
|
87 track_id,
|
p@24
|
88 s.artist_name.encode("utf-8"),
|
p@24
|
89 s.title.encode("utf-8"),
|
p@24
|
90 preview_url
|
p@24
|
91 ])
|
p@24
|
92 mp3_file = os.path.join(mp3_folder, next[:-1]+'.mp3')
|
p@24
|
93 with open(mp3_file, 'wb') as songfile:
|
p@24
|
94 songfile.write(response.read())
|
p@24
|
95 time.sleep(16)
|
p@24
|
96 next = f.readline()
|
p@24
|
97 |