amr*_*007 55 youtube youtube-api
我正在使用youtube v3 API检索播放列表的视频,并通过此链接获得50项没有任何问题: -
但视频数量为100,我只得到50.如何获得接下来的50项?我尝试了start-index,但它不适用于v3 API.任何帮助表示赞赏.
Ibr*_*aya 50
YouTube Data API v3结果已分页.所以你需要为其他人获得下一页的结果.
基本上在响应中你有nextPageToken.
要获得剩余的结果,请执行相同的确切调用,但将pageToken设置为您收到的令牌.
Tri*_*shi 28
这是三个tokes
您还可以使用设置最大页面大小
maxResults = 50 {允许值1到50}
如果你在第1页,你将无法得到 prevPageToken
但是你得到了 nextPageToken
将此令牌传递给下一个请求
pageToken = {nextPageToken从上次请求获取}
这样你就可以导航到下一页试试你自己
好的,对于其他场景
如果你在任何其他页面不是冷杉或最后,那么将有所有这些价值观
@Manoj:如果你在最后一页,你可以在下面找到你的答案
sta*_*eng 17
这是使用Python Youtube Client Lib在python中创建的一个小例子.这也借用了youtube API示例中的样板设置
""" Pull All Youtube Videos from a Playlist """
from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.tools import argparser
DEVELOPER_KEY = "YOURKEY HERE"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
def fetch_all_youtube_videos(playlistId):
"""
Fetches a playlist of videos from youtube
We splice the results together in no particular order
Parameters:
parm1 - (string) playlistId
Returns:
playListItem Dict
"""
youtube = build(YOUTUBE_API_SERVICE_NAME,
YOUTUBE_API_VERSION,
developerKey=DEVELOPER_KEY)
res = youtube.playlistItems().list(
part="snippet",
playlistId=playlistId,
maxResults="50"
).execute()
nextPageToken = res.get('nextPageToken')
while ('nextPageToken' in res):
nextPage = youtube.playlistItems().list(
part="snippet",
playlistId=playlistId,
maxResults="50",
pageToken=nextPageToken
).execute()
res['items'] = res['items'] + nextPage['items']
if 'nextPageToken' not in nextPage:
res.pop('nextPageToken', None)
else:
nextPageToken = nextPage['nextPageToken']
return res
if __name__ == '__main__':
# comedy central playlist, has 332 video
# https://www.youtube.com/watch?v=tJDLdxYKh3k&list=PLD7nPL1U-R5rDpeH95XsK0qwJHLTS3tNT
videos = fetch_all_youtube_videos("PLD7nPL1U-R5rDpeH95XsK0qwJHLTS3tNT")
Run Code Online (Sandbox Code Playgroud)
视频将是连接到第一个列表的所有视频的列表.由于50的分页,它将继续获取所有视频,其他语言也可采用类似的方法.
在列表中将有所有单独的视频元数据和订单
这个javascript检索115个剪辑(来自PLTI6yRvQqlYq9KoU-NHu43uDmKON7Fsjv)和91个剪辑(来自PL32C69B40337EF920)
测试这个html文件:http://pvhung20.url.ph/api3/retrieve-all-videos-stackoverflow.html
sum = 0;
sumN = 1;
var nextPageToken;
function getVids(PageToken){
pid = $('#searchtext1').val();
$.get(
"https://www.googleapis.com/youtube/v3/playlistItems",{
part : 'snippet',
maxResults : 50,
playlistId : pid,
pageToken : PageToken,
key: 'YOUR API3 KEY'
},
function(data){
myPlan(data);
}
);
}
function myPlan(data){
total = data.pageInfo.totalResults;
nextPageToken=data.nextPageToken;
for(i=0;i<data.items.length;i++){
document.getElementById('area1').value +=
sumN + '-' + data.items[i].snippet.title+'\n'+
data.items[i].snippet.resourceId.videoId +'\n\n';
sum++ ; sumN++;
if(sum == (total-1) ){
sum = 0;
return;
}
}
if(sum <(total-1)){
getVids(nextPageToken);
}
}
function init(){
$('#area1').val('');
}Run Code Online (Sandbox Code Playgroud)
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<body onload="$('#area1').val('')">
<input type="text" value="PLTI6yRvQqlYq9KoU-NHu43uDmKON7Fsjv"
id="searchtext1" size="75">
<button onclick="getVids()">Get Items</button>
<br><br>
IDs for test: <br>PLTI6yRvQqlYq9KoU-NHu43uDmKON7Fsjv<br>
PL32C69B40337EF920
<br><br>
<textarea id="area1" style="width:600px;height:500px">
</textarea>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58730 次 |
| 最近记录: |