我有一个脚本,它使用YouTube接口(v3)从艺术家的名字和音乐的名字中查找音乐的视频。
然而,在某些情况下,首选(按相关性排序)不是官方视频VEVO。
我尝试在我的查询中添加VEVO (在艺术家的名字和音乐的名字之后),但当没有视频VEVO时,API不返回任何结果。
是否可以强制选择VEVO视频,如果它们存在?
谢谢。
文森
发布于 2015-03-31 22:12:56
var request = gapi.client.youtube.search.list
({
q: artiste+' '+track,
part: 'snippet',
order: 'relevance'
});
request.execute(function(response)
{
idVideo=response.result.items[0].id.videoId;
});这是允许根据艺术家的名字和音乐的名称来选择视频的id的部分
发布于 2015-08-12 00:26:58
更新:我不认为我放在下面的辛迪加视频会很好地工作,但我会把它留在那里,以防你想要探索它。可能会更好地工作,同样不能保证,但应该更准确只是希望最好的是简单地按viewCount而不是相关性进行排序……一般来说,VEVO视频的浏览量最多。
GET https://www.googleapis.com/youtube/v3/search?part=snippet&order=viewCount&q=nicki+minaj+anaconda&type=video&key={YOUR_API_KEY}
--
原始答案
我还不能测试它,它不一定只限于vevo视频,但你可以尝试联合选项https://developers.google.com/youtube/v3/docs/search/list#videoSyndicated
string
The videoSyndicated parameter lets you to restrict a search to only videos that can be played outside youtube.com. If you specify a value for this parameter, you must also set the type parameter's value to video.
Acceptable values are:
any – Return all videos, syndicated or not.
true – Only retrieve syndicated videos.如果没有返回任何结果,则在没有辛迪加的情况下执行相同的搜索,并使用其中的第一个选项。
发布于 2015-10-23 06:37:34
这其实很简单。你需要做的是将'VEVO‘添加到你的搜索查询中。这将确保来自VEVO通道的任何内容都将是第一个结果。它应该看起来像这样。
var request = gapi.client.youtube.search.list
({
q: artiste+' '+track + 'VEVO',
part: 'snippet',
order: 'relevance'
});如果你不想确保你得到的是VEVO视频,最简单的事情是解析频道标题,以确保它包含单词"VEVO“。然后,代码看起来像这样
var request = gapi.client.youtube.search.list
({
q: artiste+' '+track + 'VEVO',
part: 'snippet',
order: 'relevance'
});
var obj = JSON.parse(result.content);
var findChannelTitle = obj.items[0].snippet.channelTitle;
var isVevo = findChannelTitle.match(/VEVO/g); //checks to see if this is VEVO content. We only wan't to use Vevo videos.
if (isVevo){ //returns true if VEVO is found in the channel title
var youtubeVideoId = obj.items[0].id.videoId; //finds the video ID
return youtubeVideoId;
}else{
return null;
}https://stackoverflow.com/questions/29369368
复制相似问题