def testArtistSearch(self): ''' test that the client works using an arbitrary API. In this case, use artist search. ''' response = py7D.request('artist', 'search', q='Pink') assert response['response']['@status'] == 'ok', ( "API Status error. Response: %s" % response)
def artist_search(*args, **kwargs): kwargs['page'] = str(kwargs.get('page', 1)) kwargs['pageSize'] = str(kwargs.get('pageSize', 10)) results = py7D.request('artist', 'search', **kwargs) return results['response']['searchResults']
def print_api(method, function, access_token, **kwargs): if access_token: rc = py7D.oauth_request(method, function, access_token, **kwargs) else: rc = py7D.request(method, function, **kwargs) pprint(rc['http_headers']) print json.dumps(rc['response'], indent=4)
def bandura_search(): global g_7digital_cur global g_7digital_nexts global g_song_features global g_nexts_features print "bandura_search" if request.method == "POST": print "'bandura search' called by POST" #updateParamsFromSite( request.form ) context = packContext( 0 ); search_term = request.form["search_term"] if search_term != '': # seach the exact term in the DB best_match = [MX_traverse.get_song_id_by_token(search_term)] if best_match[0]=='': # if the exact term wasn't found in the DB, perform a more flexible search using the EchoNest API g_7digital_cur = '' n_search_results = 2 while best_match[0]=='' and n_search_results<=1000: n_search_results *= 5 z = py7D.request('track', 'search', q=search_term, pagesize=n_search_results) if int(z['response']['searchResults']['totalItems'])>0: search_results = z['response']['searchResults']['searchResult'] search_results2 = list() print "possible matches: " + str(len(search_results)) for result in search_results: record=dict() record['track_7digitalid'] = result['track']['@id'] record['title'] = result['track']['title'] record['artist'] = result['track']['artist']['name'] print record['track_7digitalid'], record['title'], record['artist'] search_results2.append(record) # intersect the EchoNest results with our DB best_match = MX_traverse.findInSongsDB( [x['track_7digitalid'] for x in search_results2] ) if best_match[0]!='': g_next_choice = 0 g_7digital_nexts = [[best_match[0]]] g_nexts_features = list() g_nexts_features.append( tuple(MX_traverse.get_song_by_7digital( g_7digital_nexts[0][g_next_choice] )) ) print "best match: " + g_nexts_features[g_next_choice][0] else: print "no match..." else: print "No search term..." else: context = dict() "'bandura_search' called by GET" render_template("bandura.html", **context); return redirect("/bandura")
def find_release(search_string): ''' return JSON of a search for a release ''' response = py7D.request('release', 'search', q=search_string, pageSize=5) headers = response['http_headers'] results = response['response']['searchResults']['searchResult'] return results
def GET(self): user_data = web.input() songId = user_data.id try: trackDetails = py7D.request('track', 'details', trackId=songId, imageSize=200, country='US') except: artwork = "static/artworknotfound.png" else: artwork = trackDetails.items()[0][1].items()[5][1].items()[9][1].items()[7][1] return artwork
def track_previews(): response = py7D.request('track', 'search', q='Aja', pageSize=3) tracks = response['response']['searchResults']['searchResult'] for track in tracks: print track track['preview'] = py7D.preview_url(track['track']['@id']) return tracks
def GET(self): user_data = web.input() songId = user_data.id try: trackDetails = py7D.request('track', 'details', trackId=songId, imageSize=200, country='US') except: artist_and_track = "Artist and Track name not found @ 7Digital" else: songTitle = trackDetails.items()[0][1].items()[5][1].items()[1][1] artist = trackDetails.items()[0][1].items()[5][1].items()[3][1].items()[1][1] release_date = trackDetails.items()[0][1].items()[5][1].items()[9][1].items()[8][1].split('T')[0] artist_and_track = "Artist: " + artist + "<br/>" + "Track: " + songTitle + "<BR/>" + "Release date: " + release_date return artist_and_track
def TrackPreviews(artistName): print "Finding available song previews..." response = py7D.request('track', 'search', q=artistName, pageSize=100) tracks = response['response']['searchResults']['searchResult'] trackData = [] for track in tracks: trackDataEntry = TrackDataEntry() trackDataEntry._trackTitle = track['track']['title'] trackDataEntry._trackTitle = trackDataEntry._trackTitle.replace('/', '') trackDataEntry._trackTitle = filter(lambda x: x in string.printable, trackDataEntry._trackTitle) trackDataEntry._trackReleaseDate = track['track']['release']['releaseDate'][0:4] trackDataEntry._track7DId = track['track']['@id'] trackData.append(trackDataEntry) return trackData
def testApi(self): response = py7D.request('status', None) assert response['response']['@status'] == 'ok', ( "API Status error. Response: %s" % response)
def guess_song(): count = 0 while count < 3: try: songs = pysong.search( title=request.form["song"], buckets=["id:7digital-US", "tracks", "song_discovery"], limit=True, results=50, sort="song_hotttnesss-desc", ) song = songs[0] break except: count += 1 if count == 3: return render_template("index.html", cant_find=True) print "Timed out, try again" artist_x = song.artist_name # pp.pprint([(song.title, song.artist_name) for song in songs[:5]]) # pp.pprint(song.get_tracks('7digital-US')) for_song = song.get_tracks("7digital-US")[0] cover_url = for_song["release_image"] # print cover_url foreign_id = for_song["foreign_id"].split(":")[-1] # print foreign_id try: response = py7D.request("track", "details", trackID=str(foreign_id), pageSize=3) rel_year = response["response"]["track"]["release"]["releaseDate"].split("-")[0] except: return render_template("index.html", cant_find=True) listen = py7D.preview_url(foreign_id) print print listen print # pp.pprint(response['response']['track']) a_sum = song.audio_summary duration = a_sum["duration"] features, viz_dict = get_features(song) if not features: return render_template("index.html", cant_find=True) year = model.predict(features) year = str(int(year[0])) print year, rel_year return render_template( "index.html", song_name=songs[0].title, predicted_year=year, artist=artist_x, actual_year=rel_year, img_url=cover_url, dancy=viz_dict["dancy"], energy=viz_dict["energy"], loudness=viz_dict["loudness"], tempo=viz_dict["tempo"], tempo_rate=viz_dict["tempo_rate"], key=viz_dict["key"], a_hot=viz_dict["artist_hottness"], s_hot=viz_dict["song_hotttnesss"], a_fam=viz_dict["artist_familiarity"], song_currency=viz_dict["song_currency"], valence=viz_dict["valence"], speech=viz_dict["speech"], acousticness=viz_dict["acousticness"], liveness=viz_dict["liveness"], song_disc=viz_dict["song_discovery"], mp3=listen, )
def guess_song(): count = 0 while count < 3: try: songs = pysong.search( title=request.form['song'], buckets=['id:7digital-US', 'tracks', 'song_discovery'], limit=True, results=50, sort="song_hotttnesss-desc") song = songs[0] break except: count += 1 if count == 3: return render_template('index.html', cant_find=True) print "Timed out, try again" artist_x = song.artist_name # pp.pprint([(song.title, song.artist_name) for song in songs[:5]]) # pp.pprint(song.get_tracks('7digital-US')) for_song = song.get_tracks('7digital-US')[0] cover_url = for_song['release_image'] # print cover_url foreign_id = for_song['foreign_id'].split(":")[-1] # print foreign_id try: response = py7D.request('track', 'details', trackID=str(foreign_id), pageSize=3) rel_year = response['response']['track']['release'][ 'releaseDate'].split("-")[0] except: return render_template('index.html', cant_find=True) listen = py7D.preview_url(foreign_id) print print listen print # pp.pprint(response['response']['track']) a_sum = song.audio_summary duration = a_sum['duration'] features, viz_dict = get_features(song) if not features: return render_template('index.html', cant_find=True) year = model.predict(features) year = str(int(year[0])) print year, rel_year return render_template('index.html', song_name=songs[0].title, predicted_year=year, artist=artist_x, actual_year=rel_year, img_url=cover_url, dancy=viz_dict['dancy'], energy=viz_dict['energy'], loudness=viz_dict['loudness'], tempo=viz_dict['tempo'], tempo_rate=viz_dict['tempo_rate'], key=viz_dict['key'], a_hot=viz_dict["artist_hottness"], s_hot=viz_dict["song_hotttnesss"], a_fam=viz_dict["artist_familiarity"], song_currency=viz_dict["song_currency"], valence=viz_dict["valence"], speech=viz_dict["speech"], acousticness=viz_dict["acousticness"], liveness=viz_dict["liveness"], song_disc=viz_dict["song_discovery"], mp3=listen)