Youtube api V3 nextPageToken 重复
Posted
技术标签:
【中文标题】Youtube api V3 nextPageToken 重复【英文标题】:Youtube api V3 nextPageToken repeats 【发布时间】:2019-08-05 12:45:26 【问题描述】:我使用 url 检索 youtube 播放列表项目时得到了一些奇怪的结果。首先,youtube 播放列表最多可以包含 200 个播放列表项。
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status,contentDetails&maxResults=50&playlistId=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI&key=API_KEY
当我运行它时,我得到了正确的结果(返回 50 项,总结果 200,每页结果 50,nextPageToken: "CDIQAA")
然后我总是使用最后一个 nextPageToken 运行新请求:
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status,contentDetails&maxResults=49&playlistId=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI&key=API_KEY&pageToken=CDEQAA
100 个结果,nextPageToken: "CGQQAA",
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status,contentDetails&maxResults=49&playlistId=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI&key=API_KEY&pageToken=CGQQAA
目前有 150 个结果,nextPageToken: "CDIQAA"
现在这个nextPageToken一直在重复它最初的nextPageToken,为什么,我还没有检索到所有200个结果?
【问题讨论】:
【参考方案1】:我猜您的代码中存在一些逻辑问题,我在第三次请求后获得了 CJYBEAA 令牌。 这里的函数适用于您的播放列表 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
【讨论】:
以上是关于Youtube api V3 nextPageToken 重复的主要内容,如果未能解决你的问题,请参考以下文章
Youtube /v3/search API 不再返回直播视频
如何使用 Google.Apis.YouTube.v3 和 C# 将视频上传到 youtube?
Youtube api V3 nextPageToken 重复