YouTube API nextPageToken 返回不可用的结果
YouTube API nextPageToken returning unusable results
我正在使用 Python googleapiclient 加载返回列表的下一页。我的第一个查询 returns nextPageToken:
videos = api_service.search().list(
part='snippet',
maxResults=20,
forMine=True,
type='video').execute()
返回的页面令牌如下所示:
'nextPageToken': 'Cib39GFvs_____81QzNjeU5TRXRMTQD_Af_-NUMzY3lOU0V0TE0AARAUIdZeR03mYiWvOQAAAABMkJ4LSAFQAloLCc8daUP6sg3iEAJgjv3Z_gQ='
在我找到的所有文档中,页面标记几乎都是 6 个字符的字符串,如下所示:CA8QAA
.
- Example 1 – Google Documentation
- Example 2 – Stack Overflow
当我再次查询并发送返回给我的 pageToken 时,我得到了返回的相同初始视频结果:
videos = api_service.search().list(
part='snippet',
maxResults=20,
pageToken=request.GET.get('next_page_token'),
forMine=True,
type='video').execute()
可能是什么原因造成的?
我明白了。注意令牌末尾的 =
符号 ...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
我正在使用 Python googleapiclient 加载返回列表的下一页。我的第一个查询 returns nextPageToken:
videos = api_service.search().list(
part='snippet',
maxResults=20,
forMine=True,
type='video').execute()
返回的页面令牌如下所示:
'nextPageToken': 'Cib39GFvs_____81QzNjeU5TRXRMTQD_Af_-NUMzY3lOU0V0TE0AARAUIdZeR03mYiWvOQAAAABMkJ4LSAFQAloLCc8daUP6sg3iEAJgjv3Z_gQ='
在我找到的所有文档中,页面标记几乎都是 6 个字符的字符串,如下所示:CA8QAA
.
- Example 1 – Google Documentation
- Example 2 – Stack Overflow
当我再次查询并发送返回给我的 pageToken 时,我得到了返回的相同初始视频结果:
videos = api_service.search().list(
part='snippet',
maxResults=20,
pageToken=request.GET.get('next_page_token'),
forMine=True,
type='video').execute()
可能是什么原因造成的?
我明白了。注意令牌末尾的 =
符号 ...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