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应用中列出视频