YouTube API nextPageToken返回不可用的结果

时间:2018-12-12 07:02:29

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

我正在使用Python googleapiclient加载返回列表的下一页。我的第一个查询返回nextPageToken:

videos = api_service.search().list(
            part='snippet',
            maxResults=20,
            forMine=True,
            type='video').execute()

返回的页面令牌看起来像这样:

'nextPageToken': 'Cib39GFvs_____81QzNjeU5TRXRMTQD_Af_-NUMzY3lOU0V0TE0AARAUIdZeR03mYiWvOQAAAABMkJ4LSAFQAloLCc8daUP6sg3iEAJgjv3Z_gQ='

在我发现的所有文档中,页面令牌几乎总是6个字符串,例如:CA8QAA

当我再次查询发送返回给我的pageToken时,我得到了相同的初始视频结果:

videos = api_service.search().list(
            part='snippet',
            maxResults=20,
            pageToken=request.GET.get('next_page_token'),
            forMine=True,
            type='video').execute()

可能是什么原因造成的?

1 个答案:

答案 0 :(得分:0)

我知道了。请注意,令牌=末尾的符号...Jgjv3Z_gQ=

令牌已正确地传递给客户端。但是,一旦我尝试执行GET,=就会转换为Unicode %3D

我的解决方案是不从客户端获取令牌。相反,我将它作为字符串加载到服务器会话中,并直接通过googleapiclient库传递。

我的代码现在显示为:

if request.GET.get('next_page_token'):
        page_token = request.session['next_page_token']
else:
    page_token = ''

videos = api_service.search().list(
    part='snippet',
    maxResults=50,
    pageToken=page_token,
    forMine=True,
    type='video').execute()

try:
    request.session['next_page_token'] = videos['nextPageToken']

except KeyError:
    pass