您能否从 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 视频 ID
您能否在不要求用户允许的情况下使用 Graph API 获取公共 Facebook 页面的提要?