您能否从 API 的用户名中获取 YouTube 频道 ID?

Posted

技术标签:

【中文标题】您能否从 API 的用户名中获取 YouTube 频道 ID?【英文标题】:Can you get a YouTube Channel ID from a username from the API? 【发布时间】:2021-04-18 19:13:08 【问题描述】:

我目前正在使用YouTube Data Channel API,它允许我检索任何给定用户名的频道 ID。

https://www.googleapis.com/youtube/v3/channels?key=KEY HERE&forUsername=USERNAME&part=id,snippet&order=date

它适用于大多数用户名,但出于某种原因,它选择不适用于其他用户。

例如,如果你访问 URL:https://youtube.com/impaulsive,我们可以看到用户名必须是impaulsive

但是,如果您通过频道 API 通过 forUsername 属性进行搜索,它不会返回任何结果 - 即使这是他们的实际用户名并将您定向到他们的官方频道。

有没有办法从用户名中检索频道 ID?

【问题讨论】:

如果需要进一步的帮助(和/或澄清),请更新您的问题,或者在下面我的答案下添加 cmets。 【参考方案1】:

YouTube 数据 API 经常出现您的问题(这里,最近在 SO 上解决了几次:只需发出以下 SO 搜索查询:[youtube-data-api] forUsername)。

基本上,你必须承认两件事:

    用户名是 API v3 的遗留特性;并非每个频道都附有一个;没有通道需要连接一个。 (请参阅 2013 年 7 月 11 日 Google 员工的this official statement。)

    如果您遇到https://www.youtube.com/c/NAME(甚至https://www.youtube.com/NAME)形式的网址,那么NAME 不一定是(尽管可能是)YouTube 频道的 YouTube 用户名。 NAME 是频道的custom URL,是一个不同的类别。 (请参阅来自 Google 支持的 this official account。)

您的示例 -- impaulsive -- 非常适合上面的第 2 点,因为它是 ID 为 UCGeBogGDZ9W3dsGx-mWQGJA 的频道的自定义 URL,但 不是任何频道的用户名

$ python3 youtube-search.py --custom-url impaulsive
UCGeBogGDZ9W3dsGx-mWQGJA

$ python3 youtube-search.py --user-name impaulsive
youtube-search.py: error: user name "impaulsive": no associated channel found

上面使用的脚本youtube-search.py 是一个公共(MIT 许可)Python 3 程序(我开发的)实现了algorithm that searches for custom URLs,并且还在查询API 以获取用户名。

请注意,youtube-search.py 需要将有效的 API 密钥作为命令行选项 --app-key 的参数传递给它,否则,作为环境变量 YOUTUBE_DATA_APP_KEY 传递给它。 (使用命令行选项--help 获取简要帮助信息。)

【讨论】:

以上是关于您能否从 API 的用户名中获取 YouTube 频道 ID?的主要内容,如果未能解决你的问题,请参考以下文章

从Youtube API获取视频卡片

使用 YouTube API 从用户提供的搜索词中获取 YouTube 视频 ID

当频道开始直播时,从Youtube API获取通知?

您能否在不要求用户允许的情况下使用 Graph API 获取公共 Facebook 页面的提要?

如何从 YouTube Analytics API 获取属于当前用户的每个视频的指标?

YouTube 数据 API - 从电子邮件中获取频道 ID