如何使用PHP检查YouTube上是否存在视频?

Fer*_*ero 18 php youtube

如何使用PHP检查YouTube上是否存在视频?

Pas*_*TIN 38

怎么样使用YouTube的API
毕竟,这意味着要使用一些官方,这不太可能改变,而不是解析一些HTML页面.

有关更多信息:YouTube API和工具 - 开发人员指南:PHP

检索特定的视频条目似乎很有趣:如果你发送一个请求,像这样的一个网址:

http://gdata.youtube.com/feeds/api/videos/videoID
Run Code Online (Sandbox Code Playgroud)

(用视频ID替换"videoID",当然 - 在你的例子中是"GeppLPQtihA"),如果视频有效,你会得到一些ATOM提要; 和"无效的身份证",如果不是


并且,我坚持认为:这样,您依赖于文档化的API,而不是依赖于当前存在的某种行为,但不能保证.

  • 更简单的方法是从YouTube的OEMBED页面获取响应,这是一个标准:http://apiblog.youtube.com/2009/10/oembed-support.html EX:http://www.youtube.com/透过oEmbed?URL = HTTP%3A // www.youtube.com /观看%3Fv%3DbDOYN-6gdRE&格式= JSON (8认同)
  • 此API版本(v2)已于2014年3月4日弃用,现在无法使用.您应该使用此请求:https://developers.google.com/youtube/v3/docs/videos/list (4认同)
  • 此选项不再可用。我使用 Giacomo 的选项来检查 Youtube 的视频是否可用。 (3认同)
  • 你会碰巧知道一个等效的方法吗?这种方法已被悲哀地贬值 (2认同)
  • 请更新您的答案。API 不再可用。 (2认同)

Gia*_*ani 34

Youtube支持oEmbed格式.
与Pascal MARTIN提供的xml响应相比,我只需要下载600字节对3800字节,使其速度更快,带宽消耗更少(仅为大小的1/6).

function yt_exists($videoID) {
    $theURL = "http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=$videoID&format=json";
    $headers = get_headers($theURL);

    return (substr($headers[0], 9, 3) !== "404");
}

$id = 'yyDUC1LUXSU'; //Video id goes here

if (yt_exists($id)) {
    //  Yep, video is still up and running :)
} else {
    //  These aren't the droids you're looking for :(
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢为我工作.节省我的时间. (5认同)
  • 这是最快的方法。没有 API 注册,只是一个简单的请求。谢谢! (2认同)

Fil*_*sky 5

这是我用来使用视频 ID 检查 YouTube 视频是否存在的解决方案。这是 C# 代码,但基本上你可以检查视频的缩略图是否存在,你会得到 200 或 404,这非常方便。

    private async Task<bool> VideoExists(string id)
    {
        var httpClient = new HttpClient();
        var video = await httpClient.GetAsync($"https://img.youtube.com/vi/{id}/0.jpg");
        return video.IsSuccessStatusCode;
    }
Run Code Online (Sandbox Code Playgroud)

  • 我已将这种方法与 oembed 方法进行了比较。参见https://github.com/lycheeverse/lychee/issues/214#issuecomment-819103393 (3认同)