コード例 #1
0
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
コード例 #2
0
ファイル: lyrics_test.py プロジェクト: mlaponsky/MusicStudy
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)
コード例 #3
0
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)
コード例 #4
0
ファイル: AppGather.py プロジェクト: solversa/Radiology
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
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
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)