我一直在尝试获取 this playlist 中的所有项目,其中有 64 个项目,使用 javascript。
这是我一直在使用的函数获取响应并显示响应中的项目:
function getPlaylistItems( playlistId, maxResults, pageToken ) {
var requestOptions = {
playlistId: playlistId,
part: 'snippet',
maxResults: maxResults,
fields: "items,nextPageToken"
};
if ( pageToken ) {
requestOptions.pageToken = pageToken;
}
var request = gapi.client.youtube.playlistItems.list( requestOptions );
request.execute( function( response ) {
var playlistItems = response.items;
console.log( playlistItems.length, playlistItems );
$.each( playlistItems, function( index, item ) {
displayResult( item.snippet.title );
} );
if ( response.nextPageToken ) {
console.log( response.nextPageToken );
getPlaylistItems( playlistId, maxResults, response.nextPageToken );
}
} );
displayResult( "---" );
}
如果 maxResults = 25,那么第一次迭代将返回视频 01-25,这正是您所期望的。
但是第二次迭代从 31 到 55。第三个里面没有任何元素。所以我缺少 26-30 和 56-64。
With maxResults = 10 I am missing 31-40.
With maxResults = 20 I am missing 41-60.
With maxResults = 30 I am missing 31-40.
(这不是代码 ^^ Stackoverflow 不允许我以其他方式发布 :S )
是我做错了什么,还是我没有得到正确的 nextPageToken?
编辑:现在已修复。
最佳答案
我认为这是一个错误。 当我使用 api 版本 3 检索您的播放列表 (PLSJnFrNoXjX_HlX3JA4NGgxmym1Pj26RB) 时,我只得到第一页的 50 个项目。
另见: Retrieve youtube playlist wrong when playlist items count over 100
关于javascript - Youtube API V3 - 使用 playlistItems.list 请求时播放列表中缺少项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605693/