ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 任意页面的Youtube Data API v3 pageToken

2019-10-01 19:28:57  阅读:203  来源: 互联网

标签:youtube-data-api php youtube-api


关于SO的另一个问题显示,如果页码和maxResults设置相同,则pageTokens对于不同的搜索是相同的.

API的第2版允许您通过设置起始位置转到任意页面,但v3仅提供下一个和上一个令牌.即使你知道有5页的结果,也没有从第1页跳到第5页.

那么我们如何解决这个问题呢?

解决方法:

YouTube pageToken长度为六个字符.这是我能够确定的格式:

char 1:我见过的总是’C’.
char 2-3:编码的起始位置
char 4-5:我见过的’QA’.
char 6:’A’表示位置大于或等于起始位置的列表项. ‘Q’表示开始位置之前的列表项.

由于字符6的性质,有两种不同的方式来表示同一页面.给定maxResults = 1,可以通过将页面标记设置为“CAEQAA”或“CAIQAQ”来访问第2页.第一个意味着从结果编号2开始(由字符2-3“AE”表示)和列表1项目.第二种方法是在结果编号3之前返回一个项目(由字符2-3“AI”表示.

字符2-3是奇怪的基数16编码.

字符3使用AZ中的列表,然后是az,然后是0-9,并且在列表中每增加1,增量为4.系列是A,E,I,M,Q,U,Y,c,g,k ,O,S,W,0,4,8.字符2从A到B到C到D,依此类推.为了我的目的,我不使用大型结果集,所以我没有费心去看看第二个字符超过几百个结果会发生什么.也许使用较大集合的人将提供关于角色2在此之后的行为的更新.

由于字符串仅包含起始位置和“> =”或“<”的选项,因此在多种情况下使用相同的字符串.例如,每页有2个结果,第二个页面的起始位置是结果3.对此的pageToken是“CAIQAA”.这与第三页的标记相同,每页有一个结果. 由于我主要是一个php人,这里是我用来获取给定页面的pageToken的函数:

function token($limit, $page) {
    $start = 1 + ($page - 1) * $limit;
    $third_chars = array_merge(
            range("A","Z",4),
            range("c","z",4),
            range(0,9,4));
    return 'C'.
           chr(ord('A') + floor($start / 16)).
           $third_chars[($start % 16) - 1].
           'QAA';
}
$limit = 1;
echo "With $limit result(s) per page...".PHP_EOL;
for ($i = 1; $i < 6; ++$i) {
    echo "The token for page $i is ".token($limit, $i).PHP_EOL;
}

如果您发现缺陷或增强功能,请在您的项目中测试此功能并更新我们其他人,因为YouTube没有为我们提供简单的方法.

标签:youtube-data-api,php,youtube-api
来源: https://codeday.me/bug/20191001/1839694.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有