Youtube api 查找频道的YouTube用户名

Youtube api 查找频道的YouTube用户名,youtube-api,youtube-data-api,Youtube Api,Youtube Data Api,我正在尝试使用YouTube数据API获取特定频道的频道数据。根据文档,我可以使用频道ID列表或YouTube用户名列表 Search by channel ID https://youtube.googleapis.com/youtube/v3/channels?part=snippet&id={ChannelID}&key={APIKey} // Get channel by YouTube username https://youtube.googleapis.com/y

我正在尝试使用YouTube数据API获取特定频道的频道数据。根据文档,我可以使用频道ID列表或YouTube用户名列表

Search by channel ID
https://youtube.googleapis.com/youtube/v3/channels?part=snippet&id={ChannelID}&key={APIKey}

// Get channel by YouTube username
https://youtube.googleapis.com/youtube/v3/channels?part=snippet&forUsername={Username}&key={APIKey}
通过在浏览器中转到YouTube并按名称搜索频道,然后选择频道时,可以检索频道ID;频道ID是URL的一部分,如下所示:

https://www.youtube.com/channel/UCbTw29mcP12YlTt1EpUaVJw.

此特定频道为Sean Allen提供,其YouTube URL为:

https://www.youtube.com/SeanAllen.

我本以为YouTube用户名应该是SeanAllen,但这不是因为,当我在API请求中使用该术语时,我得到的结果为0

但是,在我自己的例子中,我的频道ID是UCOWdR4sFkmolWkU2fg669Gg,按频道ID进行搜索可以获取我的频道数据。我的YouTube URL是:

https://wwww.youtube.com/StewartLynch

而且,如果我使用StewartSync作为用户名,我可以使用第二个API请求获取相同的数据


所以,我的问题是,如何为频道找到正确的YouTube用户名?显然,它不是通道URL中使用的内容。

您提出的问题是堆栈溢出问题反复出现。我自己已经解决了它的所有方面,只要发布以下任意一个搜索词即可:user:8327971自定义URL或user:8327971 forUsername

简短的故事如下:不要太依赖YouTube的用户名

用户名是API v3的一个遗留功能:并非每个通道都连接了一个,也不需要任何通道连接一个。请参见2013年7月11日谷歌员工提供的信息

以下是YouTube数据API为您的帖子的两个名字——SeanAllen和StewartLynch——返回的结果:

$python3 youtube-search.py-自定义url SeanAllen UCBTW29MCP12YLT1EPUAVJW $python3 youtube-search.py-用户名SeanAllen UCRGhxM6u14Uv309cC0ywEqA $python3 youtube-search.py-自定义url StewartSync UCOWdR4sFkmolWkU2fg669Gg $python3 youtube-search.py-用户名StewartLynch UCOWdR4sFkmolWkU2fg669Gg 如您所见,StewartSync既是自定义URL,也是ID为UCOWDR4SFKMOLWKMU2FG669GG的频道的用户名

但是,在SeanAllen的例子中,事情并没有那么简单,因为有一个频道——UCbTw29mcP12YlTt1EpUaVJw——它的自定义URL设置为这个名称;同时,还有一个不同的频道-UCRGhxM6u14Uv309cC0ywEqA-它的附加用户名设置为这个非常相同的名称

这种情况在YouTube上非常常见:很多频道都有这种特性

最后一个提示,结束您的问题:

如何找到频道的正确YouTube用户名

如果相应通道附加了用户名,则使用请求参数查询的API端点将返回给定通道的正确用户名

这种歧义源于以下事实,即形式的URL:

https://www.youtube.com/NAME

可以很好地表示用户名为name的频道或自定义URL为name的频道。这两种情况仅由脚本youtube-search.py实现,并不完全可靠

上面我使用了我的公共MIT许可的Python 3脚本;此脚本能够在API中搜索自定义URL,并分别在API中查询用户名


请注意,youtube-search.py需要一个有效的API键作为命令行选项-app key的参数传递给它,或者作为环境变量youtube\u DATA\u app\u key传递给它。使用命令行选项-help获取简要的帮助信息。

@Stewart Lynch:如果您需要进一步的帮助和/或澄清,请随时在此答案下方发表评论。感谢您的详细解释。我真的很感激你花了这么多时间来解释这个难题。@Stewart Lynch:还要注意的是,你可以通过简单地从表单URL下页面的HTML文本中删除频道ID来很好地处理这个众所周知的戈尔迪安结https://www.youtube.com/NAME; 但是,如果您要遵守规范,那么您就不能采用这种更简单的程序,因为该文件第III.E.6节禁止进行刮削活动。