我目前正在使用 YouTube 数据频道 API,它允许我检索任何给定用户名的频道 ID。
https://www.googleapis.com/youtube/v3/channels?key={KEY HERE}&forUsername={USERNAME}&part=id,snippet&order=date
它适用于大多数用户名,但由于某种原因,它选择不适用于其他用户名。
例如,如果您访问网址:
https://youtube.com/impaulsive
,我们可以看到用户名必须是impaulsive
。
但是,如果您通过 Channel API 通过
forUsername
属性进行搜索,它不会返回任何结果 - 即使这是他们的实际用户名并将您定向到他们的官方频道。
有没有办法从用户名中检索频道 ID?
您的问题在 YouTube Data API 中经常出现(此处,最近已多次解决 SO 问题:只需发出以下 SO 搜索查询:
[youtube-data-api] forUsername
)。
基本上,你必须承认两件事:
用户名是 API v3 的legacy功能;并非每个频道都附有一个频道;无需附加任何频道。 (请参阅 2013 年 7 月 11 日 Google 员工的官方声明。)
如果您遇到
https://www.youtube.com/c/NAME
(甚至是 https://www.youtube.com/NAME
)形式的 URL,则 NAME
不一定(尽管可能是)YouTube 频道的 YouTube 用户名。 NAME
是频道的 custom URL
,不同的类别。 (请参阅来自 Google 支持的此官方帐户。)
您的示例 --
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 程序(我开发的),实现了一个 搜索自定义 URL 的算法,并且还在 API 中查询用户名。
请注意,
youtube-search.py
需要将有效的API密钥作为命令行选项--app-key
的参数传递给它,否则,作为环境变量YOUTUBE_DATA_APP_KEY
传递。 (使用命令行选项 --help
获取简短的帮助信息。)
无需使用任何类型的api,直接使用axios即可获取频道id。
我通过检查 YouTube 频道发现了这种方法。
这里是使用频道用户名获取频道ID的代码:
在node.js上安装axios
npm 安装 axios
const axios = require('axios');
let Url = "https://www.youtube.com/@triggeredinsaan"
let channelUrl = Url.replace("/user", ""); //this will replace /user to the supported format
//supported format: https://www.youtube.com/@username
var url = new URL(channelUrl)
const { data } = await axios.get(url.href)
let Id = data.split(`<link rel="canonical" href="`)[1];
let Result = Id.split(`">`)[0];
return console.log(ResultId); //Your channel id returns in provided format: https://www.youtube.com/channel/Id