annotate Code/7digital_fetch_audio.py @ 47:b0186d4a4496 tip

Move 7Digital dataset to Downloads
author Paulo Chiliguano <p.e.chiliguano@se14.qmul.ac.uk>
date Sat, 09 Jul 2022 00:50:43 -0500
parents fafc0b249a73
children
rev   line source
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