当前位置: 首页 > 知识库问答 >
问题:

如何从包含西里尔字母字符的频道用户名中获取YouTube频道ID

南宫建白
2023-03-14

这是一个YouTube频道URL,用户名中包含西里尔字符:
https://www.youtube.com/c/ Лучшиедокументальныефильмы/视频

我试图通过调用YouTube数据API v3从URL获取频道的id:

https://www.googleapis.com/youtube/v3/channels?key=[YouTubeAPIkey]&forUsername=%D0%9B%D1%83%D1%87%D1%88%D0%B8%D0%B5%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B&part=id

但是调用不返回数据。

作为参考,“https://www . YouTube . com/c/besogontv/videos”返回一个有效结果:

https://www.googleapis.com/youtube/v3/channels?key=[YouTubeAPIkey]&forUsername=besogontv

只是为了看看它是否可行,我尝试解码URL编码,然后重新编码为UTF8,但它没有区别。

我是否遗漏了一些字符编码问题?

共有1个答案

裴学
2023-03-14

如果您将发出以下命令(在任何 GNU/Linux bash 提示符下):

$ wget \
--quiet \
--output-document=- \
--content-on-error \
"https://www.googleapis.com/youtube/v3/channels?key=$APP_KEY&id=UCk8LWzqGcHz21FWysiXuCHw&part=brandingSettings,contentDetails,id,snippet,statistics,status,topicDetails&maxResults=1"

你会发现лучшиедокументальныефильмы不是频道的用户名,而是它的< code>customUrl!

forUsername属性不适用于给定频道的自定义URL,因为这些URL不能保证唯一表示任何给定频道。

通过在Google的问题跟踪器上查询用户名或虚荣URL的这两个短语通道中的任何一个,请说服自己,以查看用户从Google员工那里获得的简洁/原始的官方回复。

事实上,有时官方文档和工作人员的回复确实缺乏有用/有意义的明确规范和/或表述。(我自己也已经体验过所有这些!

最后,您可以从<code>中获取的HTML页面中删除https://www.youtube.com/c/您感兴趣的频道ID,但请记住,根据其DTOS文档,谷歌禁止此活动:

您和您的 API 客户端不得,也不得鼓励、启用或要求他人直接或间接抓取 YouTube 应用或 Google 应用,或获取抓取的 YouTube 数据或内容。公共搜索引擎只能根据YouTube的机器人.txt文件或YouTube的事先书面许可来抓取数据。

我建议使用<code>搜索,而不是刮取。列出APIendpoint,调用q参数为

回答相关销售订单问题时更新

下面是一个简单的Python3脚本,它实现了您正在寻找的功能。将您的自定义URL应用到该脚本会产生预期的结果:

$ python3 youtube-search.py \
--custom-url Лучшиедокументальныефильмы \
--app-key ...
UCk8LWzqGcHz21FWysiXuCHw

$ python3 youtube-search.py \
--user-name Лучшиедокументальныефильмы \
--app-key ...
youtube-search.py: error: user name "Лучшиедокументальныефильмы": no associated channel found

请注意,必须将应用程序密钥作为参数传递给此脚本,以命令行选项 --app-key(使用 --help 获取简短的帮助信息)。

 类似资料:
  • 我的问题与此问题非常相似,我想使用频道自定义名称获取频道ID。 上述问题的答案是: 不适用于小通道,例如。当我用这个通道运行它时:https://www.youtube.com/AnnaShearerfashionfettish它什么也不返回。

  • 我如何从youtube频道获取持续时间和浏览量都很重要的视频? 我试过这个请求: https://www.googleapis.com/youtube/v3/search?part=snippet, id 但响应不包含持续时间/视图计数。有什么想法吗?谢谢。

  • 我正在使用https://developers.google.com/youtube/的这些API,但是我想不出,给定一个youtube频道地址,如何获得带有相关信息的视频列表(至少是单个视频url和标题)

  • 我正在尝试使用频道的视频,https://www.googleapis.com/youtube/v3/search?order=date

  • 我在youtube频道上传了100多个视频。我得到频道的xml为:https://gdata.youtube.com/feeds/api/users/UserId/uploads,它只返回带有id的xml,只有25个视频。如何获取特定频道上所有上传视频的xml

  • YouTube频道可以包含多个“相关”频道的列表。例如,音乐频道 音乐频道:http://www.youtube.com/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ 我想以上链接渠道(类别)明智的数据 音乐频道相关频道:http://www . YouTube . com/Channel/UC-9-kytw 8 zkzndhqj 6 fg pwq/Channels