Youtube API - 如何排除未列出的视频?

Posted

技术标签:

【中文标题】Youtube API - 如何排除未列出的视频?【英文标题】:Youtube API - how can I exclude unlisted videos? 【发布时间】:2019-10-02 10:29:25 【问题描述】:

我正在使用 google api 客户端调用 YouTube 数据和 YouTube 分析 API 并获取视频统计信息。我被认证为我正在查询的频道的所有者。

我只对上传到频道的公开视频感兴趣。我首先查询 YouTube 数据 API 以获取 uploads 播放列表中的视频列表,一旦获得 video ids 列表,我就会为每个视频调用 youtube Analytics API 并获取我需要的统计信息。

我遇到的问题是,当我列出 uploads 播放列表中的所有视频时,我会得到数十万(!!!)unlisted 视频,我不需要这些视频。

我无法下载整个列表,然后检查状态以仅保留公共视频,因为数量太大而且我已达到每日配额。这也是一种非常低效的方法。

有没有办法只列出特定播放列表的状态为 public 的视频?

这是我目前使用的方法:

data = service.playlistItems().list(
    part="snippet,status",
    playlistId=playlistID,
    maxResults="50",
).execute() 

我在 youtube API 文档中找不到有关如何实现此目的的任何内容。

【问题讨论】:

【参考方案1】:

您是否尝试过通过不经过身份验证来使用PlaylistItems 端点,而是仅使用您的API key 参数?

我在这里假设——尽管我自己无法检查——当未通过身份验证时,端点响应将仅包含 public 的视频。

【讨论】:

感谢您的回答。你能澄清your API key参数是什么意思吗? 正如你所建议的,我使用了来自不同帐户的凭据,并且只获得了公共视频。我有点惊讶,没有更好的方法来根据状态过滤视频,但它确实有效。谢谢! @Giacomo:doc 说:In addition, some API methods for retrieving resources may support parameters that require authorization or may contain additional metadata when requests are authorized. For example, a request to retrieve a user's uploaded videos may also contain private videos if the request is authorized by that specific user. 我的建议是使用与应用程序相对应的 API 密钥,该应用程序是您首先通过 OAuth 对自己进行身份验证的帐户的一部分. @Giacomo:我无法测试我推荐的东西,因为我没有像你这样的 Youtube 帐户(但我经常使用 API)。【参考方案2】:

根据the doc,用户可以通过两种方式访问​​任何给定的 API 端点:使用 API 密钥,或者通过 OAuth 令牌。

任何用户都可以向 Google 开发人员的 console 和 API key 请求他将作为 key parameter 传递到他感兴趣的端点。如果使用Python API Client Library,您的代码必须类似于this:

from googleapiclient.discovery import build
service = build(serviceName = 'youtube', version = 'v3', developerKey = DEVELOPER_KEY)

其中DEVELOPER_KEY 是从 Google 获得的 API 密钥字符串。请注意,这样的 API 密钥是用户的私人信息。

就是这样:使用 API 密钥代替 OAuth。

【讨论】:

【参考方案3】:

doc 文本清楚地描述了 API 的身份验证授权的概念。

基本上,我假设当使用 API 密钥而不是通过 OAuth 进行身份验证时——即当 build 接收参数 developerKey 而不是 credentials 时——那么端点的响应将仅包含 public 视频,即使相应的 API 密钥(作为参数 developerKey 传递)来自您的初始身份验证帐户。

【讨论】:

以上是关于Youtube API - 如何排除未列出的视频?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 YouTube Data API v3 从我自己的 YouTube 频道获取所有视频

YouTube Data v3 API - 如何从频道请求所有视频?

如何在Android Studio中使用YouTube API在Android应用中列出视频

排除 youtube api 播放列表中显示“视频不可用”的所有视频

使用 YouTube API 列出从新西兰上传的纪录片视频

如何通过 youtube API 获取已删除视频的列表