我有一系列YouTube视频,我想知道它们是否包含在特定的播放列表中.我有这样的代码:

  var targetPlaylistId = "some_playlist_id";
  var targetPlaylist = YouTube.Playlists.list("snippet", {id: targetPlaylistId});
  var targetPlaylistTitle = targetPlaylist.items[0].snippet.title

  var targetVideos = YouTube.PlaylistItems.list("snippet", {playlistId: targetPlaylistId, maxResults: 50});

  for (var i = 0; i < sourceVideos.length; i++) {
    var sourceVideoId = sourceVideos[i].snippet.resourceId.videoId;
    var sourceVideoTitle = sourceVideos[i].snippet.title
    var isAlreadyAdded = false;

    for (var j = 0; j < targetVideos.items.length; j++) {
      var targetVideoId = targetVideos.items[j].snippet.resourceId.videoId;

      if (sourceVideoId == targetVideoId) {
        isAlreadyAdded = true;
        break;
      }
    }

    if (!isAlreadyAdded) {
      var resource = {
        snippet: {
          playlistId: targetPlaylistId,
          resourceId: {
            kind: "youtube#video",
            videoId: sourceVideoId
          }
       }
      };
      YouTube.PlaylistItems.insert(resource, "snippet");
      Logger.log("Added video " + sourceVideoTitle + " with ID " + sourceVideoId + " to playlist " + targetPlaylistTitle);
    }
  }

这是可行的,但是我必须 for each 源视频循环目标播放列表中的每个视频,如果目标播放列表很长,我不想这样做.

有没有办法问YouTube"视频X已经在播放列表Y中了吗?"

推荐答案

是啊!有一种方法可以在不循环整个播放列表的情况下判断视频是否在播放列表中.您可以使用Playlist Items.list方法检索播放列表中的视频列表,然后使用VideoId参数筛选结果,使其仅包含您要查找的视频.如果视频在播放列表中,则结果列表将包含一个带有视频元数据的项目.如果视频不在播放列表中,则结果列表将为空.

以下是一个示例代码片段:

var targetPlaylistId = "some_playlist_id";
var videoId = "some_video_id";

// You can get this video id by looping through your array of video ids

var existingItems = YouTube.PlaylistItems.list("id", {playlistId: targetPlaylistId, videoId: videoId});

if (existingItems.items.length > 0) {
  // The video is already in the playlist
} else {
  // The video is not in the playlist
}

Javascript相关问答推荐

字节数组通过echo框架传输到JS blob

传递一个大对象以在Express布局中呈现

我应该绑定不影响状态的函数吗?'

如何使覆盖div与可水平滚动的父div相关?

在网页上添加谷歌亵渎词

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

Regex结果包含额外的match/group,只带一个返回

如何在 cypress 中使用静态嵌套循环

优化Google Sheet脚本以将下拉菜单和公式添加到多行

ChartJs未呈现

如何修复我的数据表,以使stateSave正常工作?

rxjs插入延迟数据

在浏览器中触发插入事件时检索编码值的能力

WP Bootstrap NavWaker:下拉菜单一次打开所有下拉菜单

Webpack在导入前混淆文件名

将多个文本框中的输出合并到一个文本框中

Pevent触发material 用户界面数据网格中的自动保存

使用可配置项目创建网格

如何阻止外部脚本进入顶层导航

如果查询为空,则MongoDB将所有文档与$in匹配