目前,我设法在javascript中使用授权和youtube v3 api将视频添加到现有播放列表中。
我很难知道用户何时多次添加相同的视频,我只希望每个视频只有一个实例。我在youtube api中搜索并发现有一个错误videoAlreadyInPlaylist但我没有找到如何启用此标志作为请求视频到播放列表的一部分。 目前,我可以根据用户的需要添加视频。 如何启用此选项?
到目前为止,这是我的代码:
function addVideoToPlayList(pId, videosIdArray, index)
{
var vId = videosIdArray[index];
var details = {
videoId: vId,
kind: 'youtube#video'
}
var request = gapi.client.youtube.playlistItems.insert({
part: 'snippet',
resource: {
snippet: {
playlistId: pId,
resourceId: details
}
}
});
request.execute(function(response) {
console.log(response);
if(videosIdArray.length == index+1)
{
//end!
}
else{
addVideoToPlayList(pId,videosIdArray,++index);
}
$('#status').html($('#status').html()+'<pre>' + JSON.stringify(response.result) + '</pre><br/>');
});
}
答案 0 :(得分:0)
显然,API中存在一个错误,当在播放列表中添加相同的视频时,没有返回错误link
在Google解决此问题之前,我最终手动添加了一个按钮,以便从播放列表中手动删除所有重复值。
代码:
function removeDuplicate()
{
console.log(videoArr);
var deleteVideoItems = [];
$.each(videoArr, function(i, item1)
{
if (!(item1 === undefined || item1 === null))
{
var vId = item1.vId;
$.each(videoArr, function(j, item2)
{
if(item1.vId === item2.vId && i!==j && deleteVideoItems.indexOf(item1)===-1)
{
deleteVideoItems.push(item2);
}
});
}
});
console.log(deleteVideoItems);
deleteRecursianDuplicate(deleteVideoItems,0);
}
function deleteRecursianDuplicate(duplicateArr, index)
{
var playlistVideoId = duplicateArr[index].vPlaylistId;
var request = gapi.client.youtube.playlistItems.delete({
part: 'snippet',
id: playlistVideoId//,
});
request.execute(function(data) {
var code = data.hasOwnProperty("code");
if(data.hasOwnProperty('code')){
var code = data.code;
var message = data.data[0].message;
alert("problem accures "+code+" "+message);
}
else{
if(index+1 < duplicateArr.length)
{
deleteRecursianDuplicate(duplicateArr,++index);
}
else if(index+1 == duplicateArr.length)//we finished to delete all duplicate videos => refresh load list
{
$("button#load").click();
}
}
});
}