pagination - Youtube api V3 nextPageToken 重复
问题描述
我使用 url 检索 youtube 播放列表项得到了一些奇怪的结果。首先,youtube 播放列表最多可以包含 200 个播放列表项。
当我运行它时,我得到了正确的结果(返回 50 项,总结果 200,每页结果 50,nextPageToken:“CDIQAA”)
然后我总是使用最后一个 nextPageToken 运行新请求:
100 个结果,nextPageToken: "CGQQAA",
到目前为止 150 个结果,nextPageToken: "CDIQAA"
现在这个 nextPageToken 一直在重复它最初的 nextPageToken,为什么,我还没有检索到所有 200 个结果?
解决方案
我猜您的代码中存在一些逻辑问题,我在第三次请求后获得了 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
推荐阅读
- postgresql - 带有gorm dial错误的Postgresql连接无法分配请求的地址
- unity3d - 在运行时问题中在 Unity 中设置材料
- arrays - Perl:如何从没有空格的数组中删除元素
- python - 我不能在数组旋转的末尾插入临时元素
- python - 我可以将文件更改为文件夹吗
- reactjs - 使用后更新道具
- python - 将 Imagehash 存储在 mysql 数据库中
- python - 索引中的 NumPy 布尔数组
- reactjs - 对象 ID 的猫鼬数组仅包含最后插入的值
- google-apps-script - 谷歌表格正在寻找像 VLOOKUP 这样的谷歌脚本,但会结合找到的值并将它们加入特定的单元格