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

时间:2019-05-15 10:00:58

标签: python google-api youtube-api youtube-data-api

我正在使用Google API客户端调用YouTube数据和YouTube分析API,并获取视频统计信息。我已通过身份验证为所查询频道的所有者。

我只想将公共视频上传到频道中。我首先查询YouTube数据API,以获取uploads播放列表中的视频列表,一旦有了video ids列表,便为每个视频调用youtube Analytics API,并获取所需的统计信息。 / p>

我遇到的问题是,当我在uploads播放列表中列出所有视频时,我得到了成千上万(!!!)个unlisted视频,这些都是我不需要的。

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

是否可以针对特定的播放列表仅列出状态为public的视频?

这是我目前使用的方法:

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

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

3 个答案:

答案 0 :(得分:1)

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

我在这里假设-尽管不能自己检查-如果未通过身份验证,则端点响应将仅包含public的视频。

答案 1 :(得分:0)

根据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。

答案 2 :(得分:0)

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

基本上,我假设当使用API​​密钥而不是通过OAuth进行身份验证时-即build收到参数developerKey而不是credentials时,端点的响应将仅包含公开视频,即使相应的API密钥(作为参数developerKey传递)源自您的初始身份验证帐户也是如此。