Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按频道名称获取最受欢迎的频道视频_Php_Youtube_Youtube Api - Fatal编程技术网

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

Php 按频道名称获取最受欢迎的频道视频,php,youtube,youtube-api,Php,Youtube,Youtube Api,我正在尝试使用YouTube 3.0 API按频道名称列出最流行(或最新)的视频 我已经实现了这个,只是不确定它是否是正确的方法,所以需要一个建议 首先,我按名称查找通道ID(例如,TEDxTalks代替{channel_name}): 然后我得到这个频道ID的视频,按viewCount(或date)排序,它完美地列出了视频: https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channel_id}&

我正在尝试使用YouTube 3.0 API按频道名称列出最流行(或最新)的视频

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

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

然后我得到这个频道ID的视频,按
viewCount
(或
date
)排序,它完美地列出了视频:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channel_id}&order=viewCount&type=video&key={API_KEY}
第一个请求的可靠性如何?如果名称与频道url slug或用户名(例如tedxtalks)完全匹配,它是否总是返回相应的频道?或者有没有更可靠的方法通过名称获取通道ID


谢谢。

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

要回答你的问题,不幸的是它不可靠,也没有其他更可靠的方法

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

{你的API密钥}

搜索API响应将返回ABCNetwork、ABCNews、udruzenjeabc。。。等等前50项中没有频道标题(用户名)“abc”

即使不是所有频道都有用户名。如果您获得了特定通道的用户名,那么您应该使用通道API进行精确匹配查询

{你的API密钥}

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

如图所示:

如果您正在使用v3并希望检索 对应于当前授权的用户,您可以调用 channels.list(part=“id”,mine=true)方法。这相当于 询问v2中默认用户的频道配置文件

如果你发现自己有一个任意遗留的YouTube用户名 您需要使用API的v3将其转换为通道ID 可以拨打频道列表(part=“id”,forUsername=“username”)呼叫 API

如果您只知道一个显示名称并正在查找 对应的频道,搜索列表(part=“snippet”,type=“channel”, q=“display name”)方法将派上用场。你应该做好准备 处理呼叫返回多个项目的可能性 响应,因为显示名称不唯一

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

参考资料:


  • 明白了,我只能依靠频道ID。非常感谢您如此完整的回复。因为要求用户输入频道ID对用户来说不是很友好。我可能会使用
    search?type=channel?q={name}
    列出所有频道,并要求用户选择他想要的频道。
    https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channel_id}&order=viewCount&type=video&key={API_KEY}