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

时间:2016-09-25 13:40:05

标签: javascript jquery youtube-api

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

1 个答案:

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

  });
}