2015-03-31 87 views
2

我有一個腳本,使用YouTube API(v3)從藝術家姓名和音樂名稱中找到音樂視頻。YouTube API搜索 - 優先考慮的VEVO視頻

然而,這在某些情況下,第一個選擇(按相關性排序)不是官方視頻VEVO。

我試着在我的查詢中添加VEVO(以藝術家的姓名和音樂名稱命名),但是當沒有視頻VEVO時,API不返回任何結果。

是否可以強制選擇VEVO視頻,如果它們存在?

謝謝。

文森特

+0

張貼您的腳本。 – JAL 2015-03-31 13:23:56

回答

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和音樂的名稱

0

更新零件:我不認爲聯合視頻這表明我放在下面會工作得很好,但我會留在那裏以防萬一你想探索它。什麼可以更好地工作,再次不能保證,但應該更準確,只是希望最好的是簡單地將它排序viewCount,而不是相關性...一般來說,VEVO視頻的意見最多。

例子:https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list?part=snippet&order=viewCount&q=nicki+minaj+anaconda&type=video&_h=3&

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. 

如果這不返回任何內容,那麼執行沒有聯合的相同搜索並使用第一個選項。

0

這其實很簡單。您需要做的是將'VEVO'添加到您的搜索查詢中。這將確保來自VEVO頻道的任何內容都將成爲第一個結果。它應該看起來像這樣。

var request = gapi.client.youtube.search.list 
({ 
    q: artiste+' '+track + 'VEVO', 
    part: 'snippet', 
    order: 'relevance' 
}); 

如果你wan't確保你得到一個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; 
    }