yading@7: import os yading@7: import sys yading@7: yading@7: import musixmatch yading@7: import musixmatch.ws yading@7: import json yading@7: sys.path.append("7digital-python/lib/") yading@7: import py7digital yading@7: yading@7: import urllib2 #call url function yading@7: from xml.dom import minidom yading@7: yading@7: yading@7: #apikey = '8496dd1c715c69a74ef9fcde1716cf4a' yading@7: newapikey = '82be3ea3f79ea404d45f47607c103eff' yading@7: yading@7: #chart = musixmatch.ws.track.chart.get(country='it', apikey=apikey) yading@7: yading@7: #lyrics = musixmatch.ws.matcher.lyrics.get(q_track='Someone like you', q_artist='Adele',format ='json',apikey=newapikey) yading@7: yading@7: song_wakeMeUp = musixmatch.ws.track.search(q_lyrics = 'wake me up',f_lyrics_language='en',s_track_rating='desc',format ='json',apikey=newapikey) yading@7: yading@10: yading@7: #print lyrics yading@7: yading@7: #print lyrics['body'] yading@7: yading@7: #print pprint(song_wakeMeUp) yading@7: yading@7: yading@7: #for each_line in lyrics['body']: yading@7: # print each_line yading@7: yading@7: #print 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' yading@7: yading@7: #for each_item in chart['body']['track_list']: yading@7: # print each_item yading@7: yading@7: # 7 digital API key yading@7: DIGITAL7_API_KEY = '7dbpa63h3y3d' yading@7: yading@7: def url_call(url): yading@7: """ yading@7: ***This method is from get_preview_url.py by Thierry Bertin-Mahieux*** yading@7: Do a simple request to the 7digital API yading@7: We assume we don't do intense querying, this function is not robust yading@7: Return the answer as na xml document yading@7: """ yading@7: stream = urllib2.urlopen(url) yading@7: xmldoc = minidom.parse(stream).documentElement yading@7: stream.close() yading@7: return xmldoc yading@7: yading@7: yading@7: def download_file(file_url, file_name): yading@7: # open the url yading@7: mp3file = urllib2.urlopen(file_url) yading@7: yading@7: # open the local file for writing yading@7: local_file = open(file_name, "wb") yading@7: # write to file yading@7: local_file.write(mp3file.read()) yading@7: local_file.close() yading@7: yading@7: """"*********************************************************************************""" yading@7: yading@7: def get_trackid_from_text_search(title,artistname=''): yading@7: """ yading@7: ***This method is from get_preview_url.py by Thierry Bertin-Mahieux*** yading@7: Search for an artist + title using 7digital search API yading@7: Return None if there is a problem, or tuple (title,trackid) yading@7: """ yading@7: url = 'http://api.7digital.com/1.2/track/search?' yading@7: url += 'oauth_consumer_key='+DIGITAL7_API_KEY yading@7: query = title yading@7: if artistname != '': yading@7: query = artistname + ' ' + query yading@7: query = urllib2.quote(query) yading@7: url += '&q='+query yading@7: xmldoc = url_call(url) yading@7: status = xmldoc.getAttribute('status') yading@7: if status != 'ok': yading@7: return None yading@7: resultelem = xmldoc.getElementsByTagName('searchResult') yading@7: if len(resultelem) == 0: yading@7: return None yading@7: track = resultelem[0].getElementsByTagName('track')[0] yading@7: tracktitle = track.getElementsByTagName('title')[0].firstChild.data yading@7: trackid = int(track.getAttribute('id')) yading@7: return (tracktitle,trackid) yading@7: yading@7: yading@7: def get_preview_from_trackid(trackid): yading@7: """ yading@7: ***This method is from get_preview_url.py by Thierry Bertin-Mahieux*** yading@7: Ask for the preview to a particular track, get the XML answer yading@7: After calling the API with a given track id, yading@7: we get an XML response that looks like: yading@7: yading@7: yading@7: yading@7: http://previews.7digital.com/clips/34/6804688.clip.mp3 yading@7: yading@7: yading@7: yading@7: We parse it for the URL that we return, or '' if a problem yading@7: """ yading@7: url = 'http://api.7digital.com/1.2/track/preview?redirect=false' yading@7: url += '&trackid='+str(trackid) yading@7: url += '&oauth_consumer_key='+DIGITAL7_API_KEY yading@7: xmldoc = url_call(url) yading@7: status = xmldoc.getAttribute('status') yading@7: if status != 'ok': yading@7: return '' yading@7: urlelem = xmldoc.getElementsByTagName('url')[0] yading@7: preview = urlelem.firstChild.nodeValue yading@7: return preview yading@7: yading@7: yading@7: for each_song in song_wakeMeUp['body']['track_list']: yading@7: print each_song['track']['track_name'] + '\t' + each_song['track']['artist_name'] yading@7: yading@7: (tracktitle, trackid) = get_trackid_from_text_search(each_song['track']['track_name'],each_song['track']['artist_name']) yading@7: yading@7: audio_url = get_preview_from_trackid(trackid) yading@7: yading@7: file_name = tracktitle + u'.mp3' yading@7: file_name = file_name.replace(u'/', u' ') yading@7: yading@7: #file_name = t.title + u'.mp3' yading@7: print file_name yading@7: print("downloading") yading@7: # download_path = os.path.join(file_path, file_name) yading@7: path_name = './' + file_name yading@7: mp3 = download_file(audio_url, path_name) yading@7: