Youtube API 播放列表 - 列表播放列表停止工作

Youtube API Playlist - List playlist stopped working

我在创建 youtube 播放列表然后用数据库中的视频填充播放列表的系统上遇到了一个奇怪的问题 table。

该代码由 GIT 控制版本,代码中有 3-4 个月没有提交,几天前它已经工作了。

突然找不到项目,因此找不到它应该找到的项目的 id。系统创建一个列表,然后找到最新创建的播放列表(就是你刚刚创建的那个),然后正常填充播放列表。

老实说,我不如 javascript 好,有没有优秀的 javascript 开发人员可以解决这个问题?谷歌搜索时错误似乎很常见,但除了 youtube api 使用之外,我发现很难找出问题所在。为什么它突然没有结果项目。 (如果我 运行 在 Postman 中进行 GET,我会得到正确的播放列表,所以它应该是代码中的某些内容不能 100% 工作)

function createPlaylist() {
var client = document.getElementsByName("client")[0].value;
var description = document.getElementsByName("information")[0].value;
return gapi.client.youtube.playlists.insert({
  "part": [
    "snippet,status"
  ],
  "resource": {
    "snippet": {
      "title": client,
      "description": description,
      "position": 1,
      "resourceId": {
        "kind": "youtube#video",
        "videoId": "mhmGwTDpPf0"
      },
      "tags": [
        "postural workout"
      ],
      "defaultLanguage": "en"
    },
    "status": {
      "privacyStatus": "public"
    }
  }
})
    .then(function(response) {
       

            return gapi.client.youtube.playlists.list({
            "part": [
              "id,snippet,contentDetails"
            ],
            "maxResults": 1,
            "mine": true
          })
          .then(function(response) {
                  console.log("Response", response);
                  MyVars.latestPlaylistID = response.result.items[0].id; 
                  
                  pID = MyVars.latestPlaylistID
                  console.log(pID + " is the latest playlist");
                  
                  var doms = document.getElementsByTagName("tr");

                  // Get every TR into an array
                  var array = $('tbody > tr').map(function() {
                    return $.map($(this).data(), function(v) {
                        return v;
                    });
                  }).get();
                  //array.reverse();
                  var array = array.filter(function(element){ return element.length>=11});
                  videosIdArray = array.reverse();
                  
                  console.log(pID, videosIdArray, 0);
                  
                  addVideoToPlayList(pID, videosIdArray, 0);
                  
                  // setTimeout(addVideoToPlayList(pID, videosIdArray, 0), 5000);
                  
                  
                  document.getElementById("playlistID").innerHTML = 'https://www.youtube.com/playlist?list=' + pID;
                  document.getElementById("playlistID").href = 'https://www.youtube.com/playlist?list=' + pID;
                  
                  
                },
                function(err) { console.error("ListPlaylist error", err); });  


      
          },
          function(err) { console.error("InsertPlaylist error", err); });
                        
        

}

这是现在发生的事情: Error

如您所见,items 数组是空的。

我现在已经解决了!

通过将函数分解成更小的函数,它似乎给了我正确的结果。为什么突然出现这个问题仍然是未知的,但我很高兴它现在可以工作了。

如果其他人正在尝试解决类似问题,这就是最终解决方案。

function createPlaylist() {
    var client = document.getElementsByName("client")[0].value;
    var description = document.getElementsByName("information")[0].value;
    return gapi.client.youtube.playlists.insert({
      "part": [
        "snippet,status"
      ],
      "resource": {
        "snippet": {
          "title": client,
          "description": description,
          "position": 1
        },
        "status": {
          "privacyStatus": "public"
        }
      }
    }).then(function(response) {
        console.log("Response", response);
    });
}


  function addToPlaylist() {
    return gapi.client.youtube.playlists.list({
        "part": [
        "id,snippet,contentDetails"
        ],
        "maxResults": 1,
        "mine": true
        })
        .then(function(response) {
            console.log("Response", response);
            MyVars.latestPlaylistID = response.result.items[0].id; 
            
            pID = MyVars.latestPlaylistID
            console.log(pID + " is the latest playlist");
            
            var doms = document.getElementsByTagName("tr");

            var array = $('tbody > tr').map(function() {
                return $.map($(this).data(), function(v) {
                    return v;
                });
            }).get();
            
            var array = array.filter(function(element){ return element.length>=11});
            videosIdArray = array.reverse();
            console.log(pID, videosIdArray, 0);
            addVideoToPlayList(pID, videosIdArray, 0);

            },
            function(err) { console.error("ListPlaylist error", err); });  

}