我有一个使用YouTube API(v3)的脚本,可以根据艺术家的名字和音乐的名称查找音乐视频。
然而,在某些情况下,第一选择(按相关性排序)不是官方视频VEVO。
我尝试在我的查询中添加VEVO(在艺术家姓名和音乐名称之后),但是当没有视频VEVO时,API不会返回任何结果。
是否可以强制选择VEVO视频(如果存在)?
谢谢。
文森特
答案 0 :(得分:2)
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的部分
答案 1 :(得分:0)
更新:我不认为我在下面提到的联合视频会运行良好,但我会留在那里以防你想要探索它。什么可能更好,同样没有保证,但应该更准确只是希望最好只是按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.
如果没有返回任何内容,那么在没有联合的情况下进行相同的搜索并使用第一个选项。
答案 2 :(得分:0)
实际上很容易。你需要做的是添加' 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;
}