如何从(特别?)使用spotify API的嵌套字典中提取值?



我使用sp.search(q, limit=1, offset=0, type='album', market=None)函数来搜索特定专辑的信息。现在我需要从输出中提取一些值。下面是我输出的代码:

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import json
credentials = json.load(open('autorizzazione.json'))
client_id = credentials['client_id']
client_secret = credentials['client_secret']
client_credentials_manager = SpotifyClientCredentials(client_id=client_id,client_secret=client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
album_uri_research = sp.search("The Iron Giant", limit=1, offset=0, type='album', market=None)
album_uri_research

输出如下:

{'albums': {'href': 'https://api.spotify.com/v1/search?query=The+Iron+Giant&type=album&offset=0&limit=1',
'items': [{'album_type': 'album',
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/68bqsIINo5RFICYwbkChbb'},
'href': 'https://api.spotify.com/v1/artists/68bqsIINo5RFICYwbkChbb',
'id': '68bqsIINo5RFICYwbkChbb',
'name': 'Michael Kamen',
'type': 'artist',
'uri': 'spotify:artist:68bqsIINo5RFICYwbkChbb'}],
'available_markets': ['AD',
'AE',
'AG',
'AL',
'AM',
'AO',
'AR',
'AT',
'AU',
'AZ',
'BA',
'BB',
'BD',
'BE',
'BF',
'BG',
'BH',
'BI',
'BJ',
'BN',
'BO',
'BR',
'BS',
'BT',
'BW',
'BY',
'BZ',
'CA',
'CD',
'CG',
'CH',
'CI',
'CL',
'CM',
'CO',
'CR',
'CV',
'CW',
'CY',
'CZ',
'DE',
'DJ',
'DK',
'DM',
'DO',
'DZ',
'EC',
'EE',
'EG',
'ES',
'ET',
'FI',
'FJ',
'FM',
'FR',
'GA',
'GB',
'GD',
'GE',
'GH',
'GM',
'GN',
'GQ',
'GR',
'GT',
'GW',
'GY',
'HK',
'HN',
'HR',
'HT',
'HU',
'ID',
'IE',
'IL',
'IN',
'IQ',
'IS',
'IT',
'JM',
'JO',
'JP',
'KE',
'KG',
'KH',
'KI',
'KM',
'KN',
'KR',
'KW',
'KZ',
'LA',
'LB',
'LC',
'LI',
'LK',
'LR',
'LS',
'LT',
'LU',
'LV',
'LY',
'MA',
'MC',
'MD',
'ME',
'MG',
'MH',
'MK',
'ML',
'MN',
'MO',
'MR',
'MT',
'MU',
'MV',
'MW',
'MX',
'MY',
'MZ',
'NA',
'NE',
'NG',
'NI',
'NL',
'NO',
'NP',
'NR',
'NZ',
'OM',
'PA',
'PE',
'PG',
'PH',
'PK',
'PL',
'PS',
'PT',
'PW',
'PY',
'QA',
'RO',
'RS',
'RW',
'SA',
'SB',
'SC',
'SE',
'SG',
'SI',
'SK',
'SL',
'SM',
'SN',
'SR',
'ST',
'SV',
'SZ',
'TD',
'TG',
'TH',
'TJ',
'TL',
'TN',
'TO',
'TR',
'TT',
'TV',
'TW',
'TZ',
'UA',
'UG',
'US',
'UY',
'UZ',
'VC',
'VE',
'VN',
'VU',
'WS',
'XK',
'ZA',
'ZM',
'ZW'],
'external_urls': {'spotify': 'https://open.spotify.com/album/5ZeshDZM1ESVRgD1QLzDGg'},
'href': 'https://api.spotify.com/v1/albums/5ZeshDZM1ESVRgD1QLzDGg',
'id': '5ZeshDZM1ESVRgD1QLzDGg',
'images': [{'height': 640,
'url': 'https://i.scdn.co/image/ab67616d0000b27389c97951e213a7383f7903cc',
'width': 640},
{'height': 300,
'url': 'https://i.scdn.co/image/ab67616d00001e0289c97951e213a7383f7903cc',
'width': 300},
{'height': 64,
'url': 'https://i.scdn.co/image/ab67616d0000485189c97951e213a7383f7903cc',
'width': 64}],
'name': 'The Iron Giant (Original Score)',
'release_date': '1999-01-01',
'release_date_precision': 'day',
'total_tracks': 23,
'type': 'album',
'uri': 'spotify:album:5ZeshDZM1ESVRgD1QLzDGg'}],
'limit': 1,
'next': 'https://api.spotify.com/v1/search?query=The+Iron+Giant&type=album&offset=1&limit=1',
'offset': 0,
'previous': None,
'total': 28}}

我想提取专辑的"uri"和专辑的"name"。最上面的解决方案是一个数据框架,其中有一列叫做"专辑名称"。然后是name的值,另一列名为目录的uri;以及uri的值

注意,'uri'同时存在于艺术家和专辑中。我需要相册的。

我知道的都试过了,但都没有结果。

album_uri = album_uri_research["albums"]["items"][0]["uri"]
album_name = album_uri_research["albums"]["items"][0]["name"]

得到:

'spotify:album:5ZeshDZM1ESVRgD1QLzDGg'
'The Iron Giant (Original Score)'

创建一个数据帧,你可以使用字典:

D = {}
D[album_name] = album_uri
data = {'Name of the album': D.keys(),
'Album URI': D.values()} 
df = pd.DataFrame.from_dict(data)
df

最新更新