“使用订单=相关性”时,YouTube API“ nextPageToken”中断

时间:2018-11-27 12:24:10

标签: python-3.x python-requests youtube-data-api

我正在使用python 3在视频中的所有评论中进行分页。 假设视频是随机选择的,其ID为GFphNr0FK-0。截至目前,共有5450条评论。

我正在翻阅检索到的结果,并检查是否存在nextPageToken键。如果有的话,我从中获取值并继续循环直到该键不再存在。

每次迭代或page时,我会将注释附加到列表中。我得到1600条评论(16页,每页100条评论),然后开始出现错误400。

当我检查nextPageToken时,我发现随着每个请求,它变得越来越长...我没有附加任何内容,实际上是使用page_info['nextPageToken']对其进行检索。

为清楚起见,这是我的分页:

self.COMMENT_URL_PAGED = 'https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&maxResults=100&order=relevance&videoId={videoId}&key={key}'

if 'nextPageToken' not in page_info:
    run = False
else:
    next_page_token = page_info['nextPageToken']

while run:

    page_info = requests.get(self.COMMENT_URL_PAGED.format(videoId = video_id, key = self.KEY, pageToken = next_page_token))

    while page_info.status_code != 200:
        time.sleep(10)
        page_info = requests.get(self.COMMENT_URL_PAGED.format(videoId = video_id, key = self.KEY, pageToken = next_page_token))
        print('Something went wrong. Token is: {}'.format(next_page_token))

    page_info = page_info.json()

    for i in range(len(page_info['items'])):
        comments.append(page_info['items'][i]['snippet']['topLevelComment']['snippet']['textOriginal'])

    if 'nextPageToken' not in page_info:
        run = False
        next_page_token = None
    else:
        next_page_token = page_info['nextPageToken']

明显不正确吗?

更新

因此,我发现如果删除order querystring参数,它将按预期工作。...

&order=relevance为什么会在16页后中断?

0 个答案:

没有答案