如何禁用使用YouTube api v3在播放列表中插入相同的视频



目前我设法在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/>');
      });
} 

显然在API中有一个bug,当在播放列表中添加相同的视频时,没有返回错误链接

直到谷歌将解决这个问题,我结束了手动添加一个按钮,手动删除所有重复的值从播放列表。

代码:

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();
        }
    }
  });
}

相关内容

  • 没有找到相关文章

最新更新