我尝试使用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?
谢谢。
答案 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)给所有新用户。
参考文献: