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 - 无视频网址

Youtube api V3 nextPageToken 重复

如何使用 YouTube Data API v3 更改页面结果

翻译 YouTube 视频标题和说明 | V3 API