Im getting the top artists from a sepcific country, albums of that artists and tracks of that albums from lastfm. Im getting the artists and albums without errors but in the tracks it appears:
Do you know where is the issue?
The track part where is the issue:
Quote:for album in album_response['album']['tracks']['track']: KeyError: 'album'
Do you know where is the issue?
The track part where is the issue:
tracks = {} for i,v in albums.items(): artist = albums[i]['artist'].replace(" ","+") name = albums[i]['name'].replace(" ", "+") album_response_data = requests.get('http://ws.audioscrobbler.com/2.0/?method=album.getinfo&format=json&api_key='+api_key+'&artist='+artist+'&album='+name) album_response = album_response_data.json() print(album_response) for album in album_response['album']['tracks']['track']: #print(album) title = album['name'] number = album['@attr']['rank'] duration = album['duration'] tracks[ID] = {} tracks[ID]['title'] = title tracks[ID]['number'] = number tracks[ID]['artist'] = albums[i]['artist'] tracks[ID]['album'] = albums[i]['name'] tracks[ID]['albumID'] = albums[i]['ID'] tracks[ID]['duration'] = duration ID += 1Full working example:
import requests api_key = "b088cbedecd40b35dd89e90f55227ac2" #generated for the example ID = 0 artists = {} for i in range(2, 3): artists_response = requests.get( 'http://ws.audioscrobbler.com/2.0/?method=geo.gettopartists&country=portugal&format=json&page=' + str(i) + '&api_key=' + api_key) artists_data = artists_response.json() for artist in artists_data["topartists"]["artist"]: name = artist["name"] url = artist["url"] if ID > 3: continue artists[ID] = {} artists[ID]['ID'] = ID artists[ID]['name'] = name artists[ID]['url'] = url ID += 1 for i, v in artists.items(): chosen = artists[i]['name'].replace(" ", "+") artist_response = requests.get( 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&format=json&artist=' + chosen + '&api_key=' + api_key) artist_data = artist_response.json() for artist in artist_data['artist']['image']: if (artist["size"] == "large"): if (artist["size"] is not None): image = artist["#text"] artists[i]['image'] = image artists[i]['tags'] = [] for artist in artist_data['artist']['tags']["tag"]: tags = artist["name"] artists[i]['tags'].append(tags) bio = artist_data['artist']['bio']['summary'] albums = {} for i, v in artists.items(): chosen = artists[i]['name'].replace(" ", "+") topalbums_response = requests.get( 'http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&format=json&artist=' + chosen + '&api_key=' + api_key + '&limit=5') albums_data = topalbums_response.json() #print(albums_data) for album in albums_data['topalbums']['album']: name = album["name"] url = album["url"] albums[ID] = {} albums[ID]['ID'] = ID albums[ID]['artist'] = artists[i]['name'] albums[ID]['artistID'] = artists[i]['ID'] albums[ID]['name'] = name albums[ID]['url'] = url for image in album['image']: if (image["size"] == "large"): if (image["size"] is not None): image = image["#text"] albums[ID]['image'] = image ID += 1 tracks = {} for i,v in albums.items(): artist = albums[i]['artist'].replace(" ","+") name = albums[i]['name'].replace(" ", "+") album_response_data = requests.get('http://ws.audioscrobbler.com/2.0/?method=album.getinfo&format=json&api_key='+api_key+'&artist='+artist+'&album='+name) album_response = album_response_data.json() print(album_response) for album in album_response['album']['tracks']['track']: #print(album) title = album['name'] number = album['@attr']['rank'] duration = album['duration'] tracks[ID] = {} tracks[ID]['title'] = title tracks[ID]['number'] = number tracks[ID]['artist'] = albums[i]['artist'] tracks[ID]['album'] = albums[i]['name'] tracks[ID]['albumID'] = albums[i]['ID'] tracks[ID]['duration'] = duration ID += 1