def main(): global songs_added for genre in algorithm['genres']: # Generate Playlist For Genre for training size as well as testing logger.debug('Getting Playlist for Genre: %s' % genre) songs_added = 0 genre_playlist = playlist.basic(type='genre-radio', genres=[genre], \ results=int((algorithm['training_size']+algorithm['testing_size'])*2), buckets=['id:7digital-US', 'tracks']) for song in genre_playlist: if songs_added < algorithm['training_size']: store_song(genre, song, True) elif songs_added - algorithm['training_size'] < algorithm['testing_size']: store_song(genre, song, False) else: break if songs_added < algorithm['training_size'] + algorithm['testing_size']: genre_playlist = playlist.basic(type='genre-radio', genres=[genre], \ results=int((algorithm['training_size']+algorithm['testing_size'])*2), buckets=['id:7digital-US', 'tracks']) for song in genre_playlist: if songs_added < algorithm['training_size']: store_song(genre, song, True) elif songs_added - algorithm['training_size'] < algorithm['testing_size']: store_song(genre, song, False) else: break
def show_playlist(seed_artist): for s in playlist.basic(artist=seed_artist, type='artist-radio', buckets=['id:lyricfind-US'], results=10, limit=True): print('==================================================================') print(s.title, 'by', s.artist_name) print('==================================================================') show_lyrics(s)
def show_playlist(seed_artist): for s in playlist.basic(artist=seed_artist, type='artist-radio', ] buckets=['id:lyricfind-US'], results=10, limit=True): print '==================================================================' print s.title, 'by', s.artist_name print '==================================================================' show_lyrics(s)
def gatherSongs( genre ): songs = [] try: p = playlist.basic (type='genre-radio', artist_id=None, artist=None, song_id=None, song=None, track_id=None, dmca=False, results=1, buckets=None, limit=False, genres=genre) for v in p: data = [] data.append(v.artist_id) data.append(v.artist_name) data.append(genre) data.append(v.audio_summary['danceability']) data.append(v.audio_summary['duration']) data.append(v.audio_summary['energy']) data.append(v.audio_summary['key']) data.append(v.audio_summary['liveness']) data.append(v.audio_summary['loudness']) data.append(v.audio_summary['mode']) data.append(v.audio_summary['speechiness']) data.append(v.audio_summary['tempo']) data.append(v.audio_summary['time_signature']) data.append(v.audio_summary['valence']) songs.append(data) except pyechonest.util.EchoNestAPIError: print "API ERROR" except: print "SOME ERROR" return songs
def echo_nest_update(): """ Updates the json with all EchoNest data available for this song ('Echo Nest API Error 5: bucket - Invalid parameter: bucket "id" is not one of "audio", "biographies", "blogs", "doc_counts", "familiarity", "familiarity_rank", "genre", "hotttnesss", "hotttnesss_rank", "discovery", "discovery_rank", "images", "artist_location", "news", "reviews", "songs", "terms", "urls", "video", "years_active", "id:7digital-US", "id:7digital-AU", "id:7digital-UK", "id:facebook", "id:fma", "id:emi_bluenote", "id:emi_artists", "id:twitter", "id:spotify-WW", "id:seatwave", "id:lyricfind-US", "id:jambase", "id:musixmatch-WW", "id:rdio-US", "id:rdio-AT", "id:rdio-AU", "id:rdio-BR", "id:rdio-CA", "id:rdio-CH", "id:rdio-DE", "id:rdio-DK", "id:rdio-ES", "id:rdio-FI", "id:rdio-FR", "id:rdio-IE", "id:rdio-IT", "id:rdio-NL", "id:rdio-NO", "id:rdio-NZ", "id:rdio-PT", "id:rdio-SE", "id:emi_electrospective", "id:rdio-EE", "id:rdio-LT", "id:rdio-LV", "id:rdio-IS", "id:rdio-BE", "id:rdio-MX", "id:seatgeek", "id:rdio-GB", "id:rdio-CZ", "id:rdio-CO", "id:rdio-PL", "id:rdio-MY", "id:rdio-HK", "id:rdio-CL", "id:twitter_numeric", "id:7digital-ES", "id:openaura", "id:spotify", "id:spotify-WW", "id:tumblr", or "id:<CATALOG ID>" """ from pyechonest import config config.ECHO_NEST_API_KEY = ECHO_NEST_API_KEY config.CALL_TIMEOUT = 60 while True: json_data = yield if json_data == STOP: break if json_data.get('echo_nest', ''): continue json_data['echo_nest'] = {} track_title = '' artist_name = '' if json_data.get('lastfm', ''): track_title = json_data['lastfm'].get('track', '') artist_name = json_data['lastfm'].get('artist', '') if not track_title: track_title = json_data['id3'].get('title', '') if not artist_name: artist_name = json_data['id3'].get('artist', '') a = None try: if artist_name: a = artist.Artist(artist_name, buckets=[ 'biographies', 'blogs', 'doc_counts', 'familiarity', 'hotttnesss', 'genre', 'artist_location', 'news', 'reviews', 'urls', 'years_active' ]) json_data['echo_nest']['artist_id'] = a.id time.sleep(1) json_data['echo_nest']['artist'] = a.name time.sleep(1) json_data['echo_nest']['bios'] = a.biographies time.sleep(1) json_data['echo_nest']['blogs'] = a.blogs time.sleep(1) json_data['echo_nest']['doc_counts'] = a.doc_counts time.sleep(1) json_data['echo_nest']['a_familiarity'] = a.familiarity time.sleep(1) json_data['echo_nest']['a_hotttnesss'] = a.hotttnesss time.sleep(1) json_data['echo_nest']['news'] = a.news time.sleep(1) json_data['echo_nest']['reviews'] = a.reviews time.sleep(1) json_data['echo_nest']['urls'] = a.urls time.sleep(1) json_data['echo_nest']['years_active'] = a.years_active time.sleep(1) json_data['echo_nest']['similar'] = [ str(sim.name) for sim in a.get_similar() ] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if a and track_title: try: results = song.search(artist=a.name, title=track_title, buckets=[ 'audio_summary', 'song_hotttnesss', 'song_discovery' ]) time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if results: json_data['echo_nest']['id'] = results[0].id time.sleep(1) json_data['echo_nest']['summary'] =\ results[0].audio_summary time.sleep(1) json_data['echo_nest']['s_hotttnesss'] =\ results[0].song_hotttnesss time.sleep(1) json_data['echo_nest']['s_discovery'] =\ results[0].song_discovery time.sleep(1) time.sleep(1) tr = None if json_data['echo_nest'].get('id', ''): try: tr = track.track_from_id(json_data['echo_nest']['id']) time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if not tr: continue try: tr.get_analysis() time.sleep(1) json_data['echo_nest']['analysis'] = {} json_data['echo_nest']['analysis']['acousticness'] =\ tr.acousticness json_data['echo_nest']['analysis']['analysis_url'] =\ tr.analysis_url json_data['echo_nest']['analysis']['danceability'] =\ tr.danceability json_data['echo_nest']['analysis']['duration'] =\ tr.duration json_data['echo_nest']['analysis']['energy'] = tr.energy json_data['echo_nest']['analysis']['key'] = tr.key json_data['echo_nest']['analysis']['liveness'] =\ tr.liveness json_data['echo_nest']['analysis']['loudness'] =\ tr.loudness json_data['echo_nest']['analysis']['mode'] = tr.mode json_data['echo_nest']['analysis']['speechiness'] =\ tr.speechiness json_data['echo_nest']['analysis']['tempo'] =\ tr.tempo json_data['echo_nest']['analysis']['time_signature'] =\ tr.time_signature json_data['echo_nest']['analysis']['valence'] = tr.valence json_data['echo_nest']['analysis']['analysis_channels'] =\ tr.analysis_channels json_data['echo_nest']['analysis']['bars'] = tr.bars json_data['echo_nest']['analysis']['beats'] = tr.beats json_data['echo_nest']['analysis']['start_of_fade_out'] =\ tr.start_of_fade_out json_data['echo_nest']['analysis']['end_of_fade_in'] =\ tr.end_of_fade_in json_data['echo_nest']['analysis']['key_confidence'] =\ tr.key_confidence json_data['echo_nest']['analysis']['meta'] = tr.meta json_data['echo_nest']['analysis']['mode_confidence'] =\ tr.mode_confidence json_data['echo_nest']['analysis']['num_samples'] =\ tr.num_samples json_data['echo_nest']['analysis']['sections'] =\ tr.sections json_data['echo_nest']['analysis']['segments'] =\ tr.segments json_data['echo_nest']['analysis']['synchstring'] =\ tr.synchstring json_data['echo_nest']['analysis']['tatums'] =\ tr.tatums json_data['echo_nest']['analysis']['tempo_confidence'] =\ tr.tempo_confidence json_data['echo_nest']['analysis']['sign_confidence'] =\ tr.time_signature_confidence except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass except Exception as e: print(e) time.sleep(1) if a: try: json_data['echo_nest']['basic_song_list'] =\ ['{} - {}'.format(s.artist_name, s.title) for s in playlist.basic(type='song-radio', artist_id=a.id, song_id=tr.id)] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) try: json_data['echo_nest']['basic_artist_list'] =\ ['{} - {}'.format(s.artist_name, s.title) for s in playlist.basic(artist_id=a.id, song_id=tr.id)] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1)
def echo_nest_update(): """ Updates the json with all EchoNest data available for this song ('Echo Nest API Error 5: bucket - Invalid parameter: bucket "id" is not one of "audio", "biographies", "blogs", "doc_counts", "familiarity", "familiarity_rank", "genre", "hotttnesss", "hotttnesss_rank", "discovery", "discovery_rank", "images", "artist_location", "news", "reviews", "songs", "terms", "urls", "video", "years_active", "id:7digital-US", "id:7digital-AU", "id:7digital-UK", "id:facebook", "id:fma", "id:emi_bluenote", "id:emi_artists", "id:twitter", "id:spotify-WW", "id:seatwave", "id:lyricfind-US", "id:jambase", "id:musixmatch-WW", "id:rdio-US", "id:rdio-AT", "id:rdio-AU", "id:rdio-BR", "id:rdio-CA", "id:rdio-CH", "id:rdio-DE", "id:rdio-DK", "id:rdio-ES", "id:rdio-FI", "id:rdio-FR", "id:rdio-IE", "id:rdio-IT", "id:rdio-NL", "id:rdio-NO", "id:rdio-NZ", "id:rdio-PT", "id:rdio-SE", "id:emi_electrospective", "id:rdio-EE", "id:rdio-LT", "id:rdio-LV", "id:rdio-IS", "id:rdio-BE", "id:rdio-MX", "id:seatgeek", "id:rdio-GB", "id:rdio-CZ", "id:rdio-CO", "id:rdio-PL", "id:rdio-MY", "id:rdio-HK", "id:rdio-CL", "id:twitter_numeric", "id:7digital-ES", "id:openaura", "id:spotify", "id:spotify-WW", "id:tumblr", or "id:<CATALOG ID>" """ from pyechonest import config config.ECHO_NEST_API_KEY = ECHO_NEST_API_KEY config.CALL_TIMEOUT = 60 while True: json_data = yield if json_data == STOP: break if json_data.get('echo_nest', ''): continue json_data['echo_nest'] = {} track_title = '' artist_name = '' if json_data.get('lastfm', ''): track_title = json_data['lastfm'].get('track', '') artist_name = json_data['lastfm'].get('artist', '') if not track_title: track_title = json_data['id3'].get('title', '') if not artist_name: artist_name = json_data['id3'].get('artist', '') a = None try: if artist_name: a = artist.Artist(artist_name, buckets=['biographies', 'blogs', 'doc_counts', 'familiarity', 'hotttnesss', 'genre', 'artist_location', 'news', 'reviews', 'urls', 'years_active']) json_data['echo_nest']['artist_id'] = a.id time.sleep(1) json_data['echo_nest']['artist'] = a.name time.sleep(1) json_data['echo_nest']['bios'] = a.biographies time.sleep(1) json_data['echo_nest']['blogs'] = a.blogs time.sleep(1) json_data['echo_nest']['doc_counts'] = a.doc_counts time.sleep(1) json_data['echo_nest']['a_familiarity'] = a.familiarity time.sleep(1) json_data['echo_nest']['a_hotttnesss'] = a.hotttnesss time.sleep(1) json_data['echo_nest']['news'] = a.news time.sleep(1) json_data['echo_nest']['reviews'] = a.reviews time.sleep(1) json_data['echo_nest']['urls'] = a.urls time.sleep(1) json_data['echo_nest']['years_active'] = a.years_active time.sleep(1) json_data['echo_nest']['similar'] = [str(sim.name) for sim in a.get_similar()] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if a and track_title: try: results = song.search(artist=a.name, title=track_title, buckets=['audio_summary', 'song_hotttnesss', 'song_discovery']) time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if results: json_data['echo_nest']['id'] = results[0].id time.sleep(1) json_data['echo_nest']['summary'] =\ results[0].audio_summary time.sleep(1) json_data['echo_nest']['s_hotttnesss'] =\ results[0].song_hotttnesss time.sleep(1) json_data['echo_nest']['s_discovery'] =\ results[0].song_discovery time.sleep(1) time.sleep(1) tr = None if json_data['echo_nest'].get('id', ''): try: tr = track.track_from_id(json_data['echo_nest']['id']) time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if not tr: continue try: tr.get_analysis() time.sleep(1) json_data['echo_nest']['analysis'] = {} json_data['echo_nest']['analysis']['acousticness'] =\ tr.acousticness json_data['echo_nest']['analysis']['analysis_url'] =\ tr.analysis_url json_data['echo_nest']['analysis']['danceability'] =\ tr.danceability json_data['echo_nest']['analysis']['duration'] =\ tr.duration json_data['echo_nest']['analysis']['energy'] = tr.energy json_data['echo_nest']['analysis']['key'] = tr.key json_data['echo_nest']['analysis']['liveness'] =\ tr.liveness json_data['echo_nest']['analysis']['loudness'] =\ tr.loudness json_data['echo_nest']['analysis']['mode'] = tr.mode json_data['echo_nest']['analysis']['speechiness'] =\ tr.speechiness json_data['echo_nest']['analysis']['tempo'] =\ tr.tempo json_data['echo_nest']['analysis']['time_signature'] =\ tr.time_signature json_data['echo_nest']['analysis']['valence'] = tr.valence json_data['echo_nest']['analysis']['analysis_channels'] =\ tr.analysis_channels json_data['echo_nest']['analysis']['bars'] = tr.bars json_data['echo_nest']['analysis']['beats'] = tr.beats json_data['echo_nest']['analysis']['start_of_fade_out'] =\ tr.start_of_fade_out json_data['echo_nest']['analysis']['end_of_fade_in'] =\ tr.end_of_fade_in json_data['echo_nest']['analysis']['key_confidence'] =\ tr.key_confidence json_data['echo_nest']['analysis']['meta'] = tr.meta json_data['echo_nest']['analysis']['mode_confidence'] =\ tr.mode_confidence json_data['echo_nest']['analysis']['num_samples'] =\ tr.num_samples json_data['echo_nest']['analysis']['sections'] =\ tr.sections json_data['echo_nest']['analysis']['segments'] =\ tr.segments json_data['echo_nest']['analysis']['synchstring'] =\ tr.synchstring json_data['echo_nest']['analysis']['tatums'] =\ tr.tatums json_data['echo_nest']['analysis']['tempo_confidence'] =\ tr.tempo_confidence json_data['echo_nest']['analysis']['sign_confidence'] =\ tr.time_signature_confidence except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass except Exception as e: print(e) time.sleep(1) if a: try: json_data['echo_nest']['basic_song_list'] =\ ['{} - {}'.format(s.artist_name, s.title) for s in playlist.basic(type='song-radio', artist_id=a.id, song_id=tr.id)] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) try: json_data['echo_nest']['basic_artist_list'] =\ ['{} - {}'.format(s.artist_name, s.title) for s in playlist.basic(artist_id=a.id, song_id=tr.id)] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1)
def echo_nest_update(): """ Updates the json with all EchoNest data available for this song """ from pyechonest import config config.ECHO_NEST_API_KEY = ECHO_NEST_API_KEY config.CALL_TIMEOUT = 60 while True: json_data = yield if json_data == STOP: break if json_data.get('echo_nest', ''): continue json_data['echo_nest'] = {} track_title = '' artist_name = '' if json_data.get('lastfm', ''): track_title = json_data['lastfm'].get('track', '') artist_name = json_data['lastfm'].get('artist', '') if not track_title: track_title = json_data['id3'].get('title', '') if not artist_name: artist_name = json_data['id3'].get('artist', '') a = None try: if artist_name: a = artist.Artist(artist_name, buckets=['biographies', 'blogs', 'doc_counts', 'familiarity', 'hotttnesss', 'genre', 'artist_location', 'news', 'reviews', 'urls', 'years_active']) json_data['echo_nest']['artist_id'] = a.id time.sleep(1) json_data['echo_nest']['artist'] = a.name time.sleep(1) json_data['echo_nest']['bios'] = a.biographies time.sleep(1) json_data['echo_nest']['blogs'] = a.blogs time.sleep(1) json_data['echo_nest']['doc_counts'] = a.doc_counts time.sleep(1) json_data['echo_nest']['a_familiarity'] = a.familiarity time.sleep(1) json_data['echo_nest']['a_hotttnesss'] = a.hotttnesss time.sleep(1) json_data['echo_nest']['news'] = a.news time.sleep(1) json_data['echo_nest']['reviews'] = a.reviews time.sleep(1) json_data['echo_nest']['urls'] = a.urls time.sleep(1) json_data['echo_nest']['years_active'] = a.years_active time.sleep(1) json_data['echo_nest']['similar'] = [str(sim.name) for sim in a.get_similar()] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if a and track_title: try: results = song.search(artist=a.name, title=track_title, buckets=['audio_summary', 'song_hotttnesss', 'song_discovery']) time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if results: json_data['echo_nest']['id'] = results[0].id time.sleep(1) json_data['echo_nest']['summary'] =\ results[0].audio_summary time.sleep(1) json_data['echo_nest']['s_hotttnesss'] =\ results[0].song_hotttnesss time.sleep(1) json_data['echo_nest']['s_discovery'] =\ results[0].song_discovery time.sleep(1) time.sleep(1) tr = None if json_data['echo_nest'].get('id', ''): try: tr = track.track_from_id(json_data['echo_nest']['id']) time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) if not tr: continue try: tr.get_analysis() time.sleep(1) json_data['echo_nest']['analysis'] = {} json_data['echo_nest']['analysis']['acousticness'] =\ tr.acousticness json_data['echo_nest']['analysis']['analysis_url'] =\ tr.analysis_url json_data['echo_nest']['analysis']['danceability'] =\ tr.danceability json_data['echo_nest']['analysis']['duration'] =\ tr.duration json_data['echo_nest']['analysis']['energy'] = tr.energy json_data['echo_nest']['analysis']['key'] = tr.key json_data['echo_nest']['analysis']['liveness'] =\ tr.liveness json_data['echo_nest']['analysis']['loudness'] =\ tr.loudness json_data['echo_nest']['analysis']['mode'] = tr.mode json_data['echo_nest']['analysis']['speechiness'] =\ tr.speechiness json_data['echo_nest']['analysis']['tempo'] =\ tr.tempo json_data['echo_nest']['analysis']['time_signature'] =\ tr.time_signature json_data['echo_nest']['analysis']['valence'] = tr.valence json_data['echo_nest']['analysis']['analysis_channels'] =\ tr.analysis_channels json_data['echo_nest']['analysis']['bars'] = tr.bars json_data['echo_nest']['analysis']['beats'] = tr.beats json_data['echo_nest']['analysis']['start_of_fade_out'] =\ tr.start_of_fade_out json_data['echo_nest']['analysis']['end_of_fade_in'] =\ tr.end_of_fade_in json_data['echo_nest']['analysis']['key_confidence'] =\ tr.key_confidence json_data['echo_nest']['analysis']['meta'] = tr.meta json_data['echo_nest']['analysis']['mode_confidence'] =\ tr.mode_confidence json_data['echo_nest']['analysis']['num_samples'] =\ tr.num_samples json_data['echo_nest']['analysis']['sections'] =\ tr.sections json_data['echo_nest']['analysis']['segments'] =\ tr.segments json_data['echo_nest']['analysis']['synchstring'] =\ tr.synchstring json_data['echo_nest']['analysis']['tatums'] =\ tr.tatums json_data['echo_nest']['analysis']['tempo_confidence'] =\ tr.tempo_confidence json_data['echo_nest']['analysis']['sign_confidence'] =\ tr.time_signature_confidence except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass except Exception as e: print(e) time.sleep(1) if a: try: json_data['echo_nest']['basic_song_list'] =\ ['{} - {}'.format(s.artist_name, s.title) for s in playlist.basic(type='song-radio', artist_id=a.id, song_id=tr.id)] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1) try: json_data['echo_nest']['basic_artist_list'] =\ ['{} - {}'.format(s.artist_name, s.title) for s in playlist.basic(artist_id=a.id, song_id=tr.id)] time.sleep(1) except EchoNestException as e: print(e) except EchoNestIOError as e: print(e) except socket.timeout: pass time.sleep(1)