如何从YouTube获取频道ID?

156

我正在尝试使用YouTube数据API V3检索我的频道数据。
为此,我需要我的频道ID。
我已经尝试从我的YouTube账户中查找我的频道ID,但每一次都失败了。
如果有人能给我一个提示,我将不胜感激。

这是我用来检索数据的URL:

https://www.googleapis.com/youtube/v3/channels?id=fjTOrCPnAblTngWAzpnlMA&key={YOUR_API_KEY}&part=snippet,contentDetails,statistics

ID是频道ID,而key,我将{YOUR_API_KEY}替换为在Google API控制台生成的API KEY。

我的频道ID不是:
- klauskkpm
- klausmachado
- klausmachado@gmail.com
- fjTOrCPnAblTngWAzpnlMA

我的频道是:http://www.youtube.com/user/klauskkpm

22个回答

252
为了获取频道ID,您可以查看频道页面的源代码,并找到data-channel-external-id="UCjXfkj5iapKHJrhYfAF9ZGg""externalId":"UCjXfkj5iapKHJrhYfAF9ZGg"中的任意一个。 UCjXfkj5iapKHJrhYfAF9ZGg将是您要查找的频道ID。

6
根据@Naveed Ahmad的回答,应该避免使用视图(在此情况下是HTML),因为这不可靠。他们没有提供其HTML版本或以任何方式提供API访问。为了获取任何YouTube频道ID,最好使用mjlescano的答案,该答案使用了YouTube API。 - klauskpm
2
@klauskpm 是的,因为您正在寻找自己的ID,但是这个答案会让您获得任何频道的ID,而且现在仍然有效3年后 :) - Yevgeniy
20
现在你可能需要搜索“externalId”,因为我未能找到任何关于“channel-external-id”的内容。 - Daniel
1
在手动获得了一堆 YouTube 频道 ID 后,看起来 data-channel-external-id 是用于旧频道(即在某个日期之前创建的频道),而 externalId 则用于新频道(即在某个日期之后创建的频道)。我不确定这个“某个日期”是什么时候,但如果一个不行,请尝试另一个。 - derekantrican
13
这也可行:查看页面源代码并搜索<link rel="canonical"href中将包含频道ID。 - TD540
显示剩余8条评论

78
一个简单的答案是,你的YouTube频道ID是UC+ {YOUR_ACCOUNT_ID}。 为确保你的YouTube频道ID或者你的YouTube账户ID,访问你的设置页面并点击高级设置
如果你想了解任何频道的YouTube频道ID,你可以使用@mjlescano提供的解决方案
https://www.googleapis.com/youtube/v3/channels?key={YOUR_API_KEY}&forUsername={USER_NAME}&part=id

如果这有任何帮助的话,有用户标记在另一个主题中解决了这个问题,在这里

我理解如果没有账户ID是不可能获取频道ID的。这正确吗? - mrub
账户ID和频道ID可能非常相似,都含有UC部分。 正如我之前所说,您可以进入您的YouTube账户或频道的高级设置页面,它会显示您的两个ID。每个频道/账户都会创建新的频道和账户ID。 因此,它们将永远存在。 - klauskpm
抱歉,我的表述可能有点不清楚。我指的是在没有谷歌或YouTube账户的情况下。 - mrub
是的。如果您想获取频道ID或账户ID,但没有账户或频道,两者都不存在。不过,您仍然可以获取其他频道的这些信息。上面有一个示例。 - klauskpm

32

您可以使用过滤器"forUsername",像这样,通过用户名(在您的情况下为"klauskkpm")获取频道ID:

https://www.googleapis.com/youtube/v3/channels?key={YOUR_API_KEY}&forUsername=klauskkpm&part=id

更多信息请点击此处:https://developers.google.com/youtube/v3/docs/channels/list


6
提醒其他读者,这并不总是有效的。请参见此处和此处。 - Simone
这个频道的用户名是什么,例如 https://www.youtube.com/@kali-ka6998?我能否使用YouTube API从中查找频道ID? - Colin D

30
在任何频道页面上,例如http://www.youtube.com/user/klauskkpm,无需API调用,从YouTube界面上,点击频道的视频(在其“VIDEOS”选项卡中),然后点击视频上的频道名称。然后,您可以进入具有其“channel”网址的页面,例如https://www.youtube.com/channel/UCfjTOrCPnAblTngWAzpnlMA
编辑:
以上方法已经不再适用。但是我们可以打开开发者工具(cmd + option + I)并尝试在那里找到URL。对于某些频道,请通过channel_id进行搜索,它将显示给您,但并非适用于所有频道。
顺便说一下,如果这是您自己的频道 - 您可以在此处https://developers.google.com/youtube/v3/docs/channels/list进行请求,并使用部分snippet和我的true
哦,我找到了this answer。谢谢,它有效!

4
应该引起更多关注。如此简单的解决方案。 - johan
8
它不再起作用。 - Sergio Iliev
谢谢您告诉我们。那么我想我们需要打开开发者工具(cmd + option + I),然后尝试在那里找到URL。 - kangkyu

20

我刚刚找到了查找任何YouTube频道的频道ID最简单的方法!!

步骤1:播放该频道的视频。

步骤2:点击视频下方的频道名称。

步骤3:查看浏览器地址栏。


10
现在它不再工作。 - 8oris

18

更新:2023年

  1. 进入YouTube频道的关于选项卡

  2. 统计数据部分,点击分享按钮并选择复制频道ID

enter image description here


16

2021年6月版。

  1. 右键点击并查看页面源代码。
  2. 搜索 "externalId",其值在后面。

来源:comment by Daniel 2017。

替代方法:在控制台中运行此JavaScript:

ytInitialData.metadata.channelMetadataRenderer.externalId

10

一种不需要使用API获取YouTube频道ID的替代方法

function get_youtube_channel_ID($url){
  $html = file_get_contents($url);
  preg_match("'<meta itemprop=\"channelId\" content=\"(.*?)\"'si", $html, $match);
  if($match && $match[1])
    return $match[1];
}

你怎么运行它? - Stevoisiak
1
我在这里使用PHP。 - Arthur Ronconi
1
在if语句后面去掉“;”。 - Дмитрий Паймуллин

9
截至2022年6月23日:
在Chrome开发者工具(F12)中,在“元素”选项卡中,在源代码窗格中,根据URL类型执行以下操作:
A. 对于类型为:www.youtube.com/c/<channel_name>的频道URL:
查找以下内容之一:
- “externalId” - 旁边将有频道ID - “channelUrl” - 旁边将是:https://www.youtube.com/channel/<频道ID>
或在控制台中运行:
ytInitialData.metadata.channelMetadataRenderer.externalId

(来源: https://dev59.com/DWYq5IYBdhLWcg3wkRm_#68063136)

B. 对于类型为:www.youtube.com/watch?v=<video_ID>的视频URL:

查找以下内容之一:

  • "externalId" - 旁边将会有频道 ID
  • "externalChannelId" - 旁边将会有频道 ID
  • "ownerProfileUrl" - 旁边将会有:https://www.youtube.com/channel/<频道 ID>

或在控制台中运行以下命令:

ytInitialPlayerResponse.microformat.playerMicroformatRenderer.externalChannelId

不需要特别指定日期,它会作为答案的一部分记录。 - gargoylebident

6

在当前YouTube版本中,如果您登录到YouTube网站并选择“我的频道”,就可以轻松获取频道ID。

我的频道

您的频道ID将显示在浏览器地址栏中。 频道ID


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接