Php 用于任意页面的Youtube数据API v3 pageToken
另一个问题是,如果页码和maxResults设置相同,则PageToken对于不同的搜索是相同的 API的版本2通过设置起始位置允许您转到任意页面,但v3只提供下一个和上一个标记。即使你知道有5页的结果,也不能从第1页跳到第5页Php 用于任意页面的Youtube数据API v3 pageToken,php,youtube-api,youtube-data-api,Php,Youtube Api,Youtube Data Api,另一个问题是,如果页码和maxResults设置相同,则PageToken对于不同的搜索是相同的 API的版本2通过设置起始位置允许您转到任意页面,但v3只提供下一个和上一个标记。即使你知道有5页的结果,也不能从第1页跳到第5页 那么我们如何解决这个问题呢?YouTube页面令牌有六个字符长。以下是我能够确定的格式: 角色1:我看到的总是“C”。 字符2-3:编码的起始位置 char 4-5:我看到的总是“QA”。 字符6:“A”表示列表项的位置大于或等于起始位置Q’表示开始位置前的列表项 由于
那么我们如何解决这个问题呢?YouTube页面令牌有六个字符长。以下是我能够确定的格式: 角色1:我看到的总是“C”。 字符2-3:编码的起始位置 char 4-5:我看到的总是“QA”。 字符6:“A”表示列表项的位置大于或等于起始位置Q’表示开始位置前的列表项 由于字符6的性质,有两种不同的方式来表示同一页。如果maxResults=1,则可以通过将页面标记设置为“CAEQAA”或“CAIQAQ”来访问第2页。第一个表示从结果编号2(由字符2-3“AE”表示)开始,并列出1项。第二种方法是在结果编号3之前返回一项(由字符2-3“AI”表示) 字符2-3是一种奇怪的16进制编码 字符3使用一个从a-Z到a-Z再到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等等。出于我的目的,我没有处理大的结果集,所以我懒得去看第二个字符在几个h之后会发生什么未刷新的结果。也许有人会使用更大的集合来更新角色2之后的行为
由于字符串仅包含起始位置和“>=”或“选项,YouTube的pagetokens可以被视为索引
- 可以找到前1000个项目的PageToken
- 可以找到范围(100000)内每10项的PageToken
- 最高可用的pagetoken是“CJ NBhAA”,它指向位置为99.999的第100.000项
- maxresults的最大可能值为50
- 第一项
https://www.googleapis.com/youtube/v3/playlistItems?part=id%2Csnippet&playlistId=&key=&maxResults=1&pageToken=CAAQAA
- 第555项
https://www.googleapis.com/youtube/v3/playlistItems?part=id%2Csnippet&playlistId=&key=&maxResults=1&pageToken=CKoEEAA
- 第99999项
https://www.googleapis.com/youtube/v3/playlistItems?part=id%2Csnippet&playlistId=&key=&maxResults=1&pageToken=CJ6NBhAA
- 10项从第10项开始
https://www.googleapis.com/youtube/v3/playlistItems?part=id%2Csnippet&playlistId=&key=&maxResults=10&pageToken=CAkQAA
- 30项,从第555项开始
https://www.googleapis.com/youtube/v3/playlistItems?part=id%2Csnippet&playlistId=&key=&maxResults=30&pageToken=CKoEEAA
- 从第9999项开始的50项
https://www.googleapis.com/youtube/v3/playlistItems?part=id%2Csnippet&playlistId=&key=&maxResults=50&pageToken=CI9OEAA
使用^Quihico的文件作为参考点,我在用JS编写前一张海报的pageToken生成器的增强功能时感到有点有趣。如果我关于4000s place编码变量的假设是正确的如果超过N>=98304,它应该能够为以第N项开始的页面构造pageToken,在[04194304]中提供了N。它只在N=99999之前进行测试,所以YMMV
链接此处:这对我来说非常令人印象深刻……一些很好的反向工程。在500个结果之后,API停止提供nextPageTokens,因此您需要证明的模式有一个有限的限制。每页50个项目的页面标记列表。如果您要求每50个项目的页面标记列表,您可以使用包含所有可用pagetokens(100000)如何为youtube api总结果创建分页链接
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;
}