如何使用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轻松复制。

+0

看起来这可能是他们的API的错误。为什么不[报告](https://code.google.com/p/gdata-issues/issues/entry?template=YouTube%20(Defect%20Report)),看看Google是否会为你解决这个问题? – Laurel

+0

这不是一个错误,而是一个缺失的功能。用户名(来自旧时代,在YouTube和Google Plus集成之前)与自定义频道标识符不同,所以预计'forUsername'过滤器不会以这种方式工作。 – jkondratowicz

最简单的解决方案,仅使用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使用条款。

编辑:好吧,它没有返回小通道的结果,所以它根本不可靠。

+0

它几乎是我们正在寻找的,除了“kind”:“youtube#searchResult”而不是“kind”:“youtube#activity” –

+0

有没有办法获得小通道的id? –

+0

@MahmoudHanafy除了我描述的方法外,我没有看到从自定义url获取channelId的其他方法。 – jkondratowicz