英文:
How to retrieve more than 50 records using Spotipy API
问题
以下是您要翻译的代码部分:
我正在使用`Spotipy` API 从Spotify检索歌曲数据。以下是我的代码:
import pandas as pd
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id='<my_client_id>',
client_secret='<my_client_secret>'))
results = sp.search(q="artist:guns n' roses", limit=50)
d = []
for idx, track in enumerate(results['tracks']['items']):
d.append(
{
'Track': track['name'],
'Album': track['album']['name'],
'Artist': track['artists'][0]['name'],
'Release Date': track['album']['release_date'],
'Track Number': track['track_number'],
'Popularity': track['popularity'],
'Track Number': track['track_number'],
'Explicit': track['explicit'],
'Duration': track['duration_ms'],
'Audio Preview URL': track['preview_url'],
'Album URL': track['album']['external_urls']['spotify']
}
)
pd.DataFrame(d)
根据文档,似乎Spotify对每个搜索的限制是50条记录。
是否有可能检索给定字符串搜索的***所有记录***(例如,通过分块请求等方式)?
谢谢!
英文:
I'm using the Spotipy API to retrieve song data from Spotify. Here's my code:
import pandas as pd
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id='<my_client_id>',
client_secret='<my_client_secret'))
results = sp.search(q="artist:guns n' roses", limit=50)
d = []
for idx, track in enumerate(results['tracks']['items']):
d.append (
{
'Track' : track['name'],
'Album' : track['album']['name'],
'Artist' : track['artists'][0]['name'],
'Release Date' : track['album']['release_date'],
'Track Number' : track['track_number'],
'Popularity' : track['popularity'],
'Track Number' : track['track_number'],
'Explicit' : track['explicit'],
'Duration' : track['duration_ms'],
'Audio Preview URL' : track['preview_url'],
'Album URL' : track['album']['external_urls']['spotify']
}
)
pd.DataFrame(d)
Per the docs, it appears that Spotify has a limit of 50 records.
Is it possible to retrieve all records for a given string search? (e.g. by chunking requests, etc.)
Thanks!
答案1
得分: 1
以下是代码的翻译部分:
# 导入必要的库
import pandas as pd
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
# 创建 Spotify 客户端
sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id='<你的客户端ID>', client_secret='<你的客户端密钥>'))
# 初始化一个空列表
d = []
# 临时变量
total = 1
offset = 0
# 循环获取数据,每次最多获取 50 条
while offset < total:
results = sp.search(q="artist:guns n' roses", type='track', offset=offset, limit=50)
total = results['tracks']['total']
offset += 50 # 增加偏移量
for idx, track in enumerate(results['tracks']['items']):
d.append(
{
'Track': track['name'],
'Album': track['album']['name'],
'Artist': track['artists'][0]['name'],
'Release Date': track['album']['release_date'],
'Track Number': track['track_number'],
'Popularity': track['popularity'],
'Track Number': track['track_number'],
'Explicit': track['explicit'],
'Duration': track['duration_ms'],
'Audio Preview URL': track['preview_url'],
'Album URL': track['album']['external_urls']['spotify']
}
)
# 创建数据框
df = pd.DataFrame(d)
请注意,你需要将 <你的客户端ID> 和 <你的客户端密钥> 替换为你自己的 Spotify 开发者凭据。
英文:
The Spotify Web API can return a maximum of 1000 items. (In this example, it found 390 tracks, so it got all of them.)
Here is the code to get them:
import pandas as pd
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id='<my_client_id>',
client_secret='<my_client_secret>'))
d = []
total = 1 # temporary variable
offset = 0
while offset < total:
results = sp.search(q="artist:guns n' roses", type='track', offset=offset, limit=50)
total = results['tracks']['total']
offset += 50 # increase the offset
for idx, track in enumerate(results['tracks']['items']):
d.append (
{
'Track' : track['name'],
'Album' : track['album']['name'],
'Artist' : track['artists'][0]['name'],
'Release Date' : track['album']['release_date'],
'Track Number' : track['track_number'],
'Popularity' : track['popularity'],
'Track Number' : track['track_number'],
'Explicit' : track['explicit'],
'Duration' : track['duration_ms'],
'Audio Preview URL' : track['preview_url'],
'Album URL' : track['album']['external_urls']['spotify']
}
)
pd.DataFrame(d)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论