使用网址检索YouTube播放列表项时,我得到了一些奇怪的结果。首先,YouTube播放列表最多可以包含200个播放列表项。
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status,contentDetails&maxResults=50&playlistId=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI&key=API_KEY
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status,contentDetails&maxResults=49&playlistId=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI&key=API_KEY&pageToken=CDEQAA
100个结果,nextPageToken:“CGQQAA”,
到目前为止,有150个结果,nextPageToken:“CDIQAA”
现在,此nextPageToken始终在第一个nextPageToken处重复其相同的原因,为什么我仍然没有检索全部200个结果?
最佳答案
我猜您的代码中存在一些逻辑问题,在第三次请求后,我得到了CJYBEAA token 。
这里的功能可以很好地与您的播放列表ID配合使用,并返回整个200个视频ID:
def getPlaylistVideosIDs(playlist_id):
videos_IDs = []
search = YOUR_YOUTUBE_KEY.playlistItems().list(part='snippet', playlistId=playlist_id,
maxResults=50).execute()
try:
nextPageToken = search['nextPageToken']
except KeyError:
nextPageToken = None
for item in search['items']:
videos_IDs.append(item['snippet']['resourceId']['videoId'])
while (nextPageToken):
search = YOUR_YOUTUBE_KEY.playlistItems().list(pageToken=nextPageToken, part='snippet',
playlistId=playlist_id,
maxResults=50).execute()
for item in search['items']:
videos_IDs.append(item['snippet']['resourceId']['videoId'])
try:
nextPageToken = search['nextPageToken']
except KeyError:
break
return videos_IDs