按名称获取频道中最受欢迎的视频

时间:2014-07-24 19:45:58

标签: php youtube youtube-api

我尝试使用YouTube 3.0 API按名称列出频道中最受欢迎(或最新)的视频。

我已经实现了这个,只是不确定这是否是正确的方法,所以需要一个建议。

首先我按名称查找频道ID(例如TEDxTalks代替{channel_name}):

https://www.googleapis.com/youtube/v3/search?part=snippet&type=channel&q={channel_name}&key={API_KEY}

然后我会收到此频道ID的视频,按viewCount(或date)排序,完整地列出视频:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channel_id}&order=viewCount&type=video&key={API_KEY}

第一次请求的可靠性如何?如果name是频道url slug或用户名的完全匹配(例如tedxtalks),它是否会返回相应的频道?或者是否有更可靠的方法来获取其名称的频道ID?

谢谢。

1 个答案:

答案 0 :(得分:1)

搜索API不适用于完全匹配查询。它搜索所有频道标题(在URL中找到的用户名,如果存在),频道名称(xxx添加1个视频)甚至频道ID!

回答你的问题,不幸的是,它不可靠,没有其他更可靠的方式。

一个简单的例子,尝试查询用户名“abc”。

https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=50&q=abc&type=channel&key= {YOUR_API_KEY}

Search API响应将返回ABCNetwork,ABCNews,udruzenjeabc ......等等。前50个项目中没有channelTitle(用户名)“abc”。

即使并非所有频道都有用户名。如果您拥有特定频道的用户名,那么您应该使用频道API进行完全匹配查询,

https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=abc&maxResults=5&key= {YOUR_API_KEY}

您可能想知道为什么YouTube API无法提供“频道名称”的精确搜索(xxx添加了1个视频)?这是因为频道名称不是唯一的,因为人名不是唯一的。

https://developers.google.com/youtube/v3/guides/working_with_channel_ids所示:

  

如果您使用的是v3并想要检索其中的频道ID   对应当前授权的用户,可以拨打电话   channels.list(part =“id”,mine = true)方法。这相当于   在v2中询问默认用户的频道配置文件。

     

如果您确实发现自己拥有任意遗留的YouTube用户名   您需要使用API​​的v3转换为频道ID   可以使channel.list(part =“id”,forUsername =“username”)调用   API。

     

如果您只知道显示名称并希望找到   相应的频道,search.list(part =“snippet”,type =“channel”,   q =“显示名称”)方法会派上用场。你应该准备好了   处理呼叫返回多个项目的可能性   响应,因为显示名称不是唯一的。

最后,我不知道为什么YouTube没有强制生成一个独特的可读用户名(比如Facebook如何在重复用户名的末尾添加一个随机数,例如zuck.5和zuck.21)给所有新用户。

参考文献:

  1. https://developers.google.com/youtube/v3/docs/search/list

  2. https://developers.google.com/youtube/v3/docs/channels/list#try-it

  3. https://support.google.com/youtube/answer/2657968?hl=en

  4. https://developers.google.com/youtube/v3/guides/working_with_channel_ids