2016-09-25 10 views
1

現在、私はjavascriptのAuthorization and youtube v3 apiを使用して既存のプレイリストに動画を追加することができました。YouTube api v3を使用してプレイリストに同じ動画を挿入することを無効にする方法

私は、ユーザーが同じビデオを何回も追加しているのを知るのが難しいです。私は各ビデオのインスタンスを1回しか持たないことを望みます。私は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

はどうやらAPIのバグがあり、Googleはこの問題を解決するまでのプレイリストに同じ動画を追加するとき、エラーがないlink

を返さ手動でプレイリストからすべての重複値を削除するボタンを手動で追加することになりました。

コード:

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

    }); 
} 
関連する問題