网站链接,如果您想知道它是如何工作的-https://nerdtube.000webhostapp.com/home.html
我正在建立一个仅提取和分类教育类视频的网站。就像有人在我的搜索栏中输入“猫”一样,我应该只获得类别为“教育”的猫视频/播放列表。我有videoID,但是我似乎在返回的json中找不到类别ID。
function search(id,tit) {
//console.log(id);
var key = 'MY API KEY';
//playlistId = 'PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp';
var playlistId=id;
var URL = 'https://www.googleapis.com/youtube/v3/playlistItems';
//playlistId=document.getElementById('searchTerm').value;
//console.log(playlistId);
$('#plname').html(
`<h1>Playlist : ${tit}</h1>`
)
var options = {
part: 'snippet',
key: key,
maxResults: 60,
playlistId: playlistId,
}
//console.log(playlistId);
loadVids();
function loadVids() {
$.getJSON(URL, options, function (data) {
var id = data.items[0].snippet.resourceId.videoId;
console.log(data);
resultsLoop(data);
mainVid(id);
});
}
function mainVid(id) {
document.getElementById('plname').style.display="block";
$('#video').html(`
<iframe src="https://www.youtube.com/embed/${id}" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
`);
}
function resultsLoop(data) {
document.getElementById('dec').style.display="block";
$.each(data.items, function (i, item) {
var thumb = item.snippet.thumbnails.medium.url;
var title = item.snippet.title;
var desc = item.snippet.description.substring(0, 100);
var vid = item.snippet.resourceId.videoId;
$('main').append(`
<a>
<article class="item" data-key="${vid}">
<img src="${thumb}" alt="" class="thumb">
<div class="details">
<h4>${title}</h4>
<p>${desc}</p>
</div>
</article>
</a>
`);
});
}
// CLICK EVENT
$('main').on('click', 'article', function () {
var id = $(this).attr('data-key');
mainVid(id);
});
}
所以我在做什么(代码未在此处显示),我首先从搜索栏中获取播放列表类型的对象,显示播放列表,然后当有人单击播放列表时,此search(id,tit)函数开始,逐渐获取所有内容该播放列表中的视频。现在我只想过滤教育类别的视频,但是我猜json没有这个部分。
答案 0 :(得分:0)
编辑:
我可能误解了您的问题和用例。对困惑感到抱歉。但是我认为答案,尤其是评论很有用,所以我决定不删除答案。
感谢@stvar的评论
我的推荐
对我来说,用例听起来更像是使用API端点“ serach / list”或“ videos / list”而不是API端点“ playlistItems”。
通过使用端点“搜索/列表”或“视频/列表”,您可以通过在初始请求中指定“ videoCategoryId”来将结果限制为视频类别。
例如:
https://www.googleapis.com/youtube/v3/search?videoCategoryId=[YOUR_VIDEO_CATEGORY_ID]&...
https://www.googleapis.com/youtube/v3/videos?videoCategoryId=[YOUR_VIDEO_CATEGORY_ID]&...
我建议指定尽可能多的参数,以使您的站点/应用程序获得最佳结果。但是请注意,并非所有组合都是允许的。
使用API文档中的“尝试使用此API”来缩小您的请求:
请记住,端点“搜索/列表”的API配额的成本因素显着增加。它提供了更大的灵活性,因此与“视频/列表”相比,您可以包含或排除实时流,并指定更多选项。
替代方法(未经我自己测试验证)
这是不起作用,如注释中所述,因为“ id”和“ videoCategoryId”是互斥参数。
如果这不是您的选择,则可以通过“ playlistItems” API调用的结果为每个视频进行额外的API调用。 指定“视频ID”和“视频类别ID”。如果没有结果,请跳过该视频,不要在您的网站上显示该视频,例如:
https://www.googleapis.com/youtube/v3/videos?id=[YOUR_VIDEO_ID]&videoCategoryId=[YOUR_VIDEO_CATEGORY_ID]&...