如何使用Youtube数据API获取Youtube频道详情如果频道有自定义网址
我想获取具有自定义网址的YouTube频道的详情,如https://www.youtube.com/c/pratiksinhchudasamaisawesome。如何使用Youtube数据API获取Youtube频道详情如果频道有自定义网址
自定义渠道网址采用以下格式:https://www.youtube.com/c/{custom_channel_name}
。
我可以通过频道ID和用户名获取YouTube频道的详细信息,没有任何问题。不幸的是,我需要使用自定义频道网址,这是我遇到此问题的唯一时间。
几个月前我开发了我的应用程序,自定义频道网址直到几天前才开始工作。现在,如果我尝试使用自定义名称获取详细信息,YouTube数据API不会为YouTube自定义频道网址返回任何内容。
要获得此通道的详细信息:https://www.youtube.com/user/thenewboston,例如,请求将是:
GET https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=thenewboston&key={YOUR_API_KEY}
响应
200
- SHOW HEADERS -
{
"kind": "youtube#channelListResponse",
"etag": "\"zekp1FB4kTkkM-rWc1qIAAt-BWc/8Dz6-vPu69KX3yZxVCT3-M9YWQA\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 5
},
"items": [
{
"kind": "youtube#channel",
"etag": "\"zekp1FB4kTkkM-rWc1qIAAt-BWc/KlQLDlUPRAmACwKt9V8V2yrOfEg\"",
"id": "UCJbPGzawDH1njbqV-D5HqKw",
"snippet": {
"title": "thenewboston",
"description": "Tons of sweet computer related tutorials and some other awesome videos too!",
"publishedAt": "2008-02-04T16:09:31.000Z",
"thumbnails": {
"default": {
"url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s88-c-k-no-rj-c0xffffff/photo.jpg"
},
"medium": {
"url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s240-c-k-no-rj-c0xffffff/photo.jpg"
},
"high": {
"url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s240-c-k-no-rj-c0xffffff/photo.jpg"
}
},
"localized": {
"title": "thenewboston",
"description": "Tons of sweet computer related tutorials and some other awesome videos too!"
}
}
}
]
}
它完美。
现在我们必须让这些渠道的细节:
然后我们得到:
GET https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=annacavalli&key={YOUR_API_KEY}
响应
200
- SHOW HEADERS -
{
"kind": "youtube#channelListResponse",
"etag": "\"zekp1FB4kTkkM-rWc1qIAAt-BWc/TAiG4jjJ-NTZu7gPKn7WGmuaZb8\"",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 5
},
"items": [
]
}
这可以使用API explorer轻松复制。
最简单的解决方案,仅使用API,仅使用YouTube Data API的搜索:列表方法。根据我所能说的(请注意,这是来自我自己的研究,官方文档对此主题没有提及!),如果您使用自定义URL组件进行搜索,则使用“频道”结果类型过滤器和“相关性”(默认)排序,首先结果应该是你要找的。
所以下面的查询得到16个结果,第一个是你正在寻找的结果。我测试过的所有其他自定义频道网址也是如此,因此我认为这是实现此目的最可靠的方式。
GET https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&q=annacavalli&type=channel&key={YOUR_API_KEY}
其他想法只是在自定义的网址,在那里你可以在HTML代码中的meta标签中寻找的channelID刮YouTube页面。但这是无效的,不可靠的和AFAIK违反YouTube使用条款。
编辑:好吧,它没有返回小通道的结果,所以它根本不可靠。
它几乎是我们正在寻找的,除了“kind”:“youtube#searchResult”而不是“kind”:“youtube#activity” –
有没有办法获得小通道的id? –
@MahmoudHanafy除了我描述的方法外,我没有看到从自定义url获取channelId的其他方法。 – jkondratowicz
看起来这可能是他们的API的错误。为什么不[报告](https://code.google.com/p/gdata-issues/issues/entry?template=YouTube%20(Defect%20Report)),看看Google是否会为你解决这个问题? – Laurel
这不是一个错误,而是一个缺失的功能。用户名(来自旧时代,在YouTube和Google Plus集成之前)与自定义频道标识符不同,所以预计'forUsername'过滤器不会以这种方式工作。 – jkondratowicz