检查是否已使用PHP删除了YouTube视频?

时间:2012-04-15 11:36:42

标签: php youtube

  

可能重复:
  Check if Youtube and Vimeo-clips are valid

我有一个链接到很多YouTube视频的网站,但很多时候用户或YouTube都删除了这些视频。这意味着我的网站上有很多死视频,而且手动检查所有这些都是一场噩梦。

所以我正在寻找一种方法来检查YouTube视频是否仍然有效使用PHP。我看到很多人都在问同样的问题,但我无法让任何已发布的解决方案起作用。

4 个答案:

答案 0 :(得分:8)

使用youtube V3 API检查视频是否可访问。有关详细信息,请参阅以下文档

  

https://developers.google.com/youtube/v3/docs/videos/list

基本上,使用您的API密钥发出GET请求

GET https://www.googleapis.com/youtube/v3/videos?part=id&id={VIDEO_ID}&key={YOUR_API_KEY}

您将收到如下样本回复:

{
 "kind": "youtube#videoListResponse",
 "etag": "\"sZ5p5Mo8dPpfIzLYQBF8QIQJym0/N6KWrfNRyfPOarHfhvNS7j4jfxM\"",
 "pageInfo": {
  "totalResults": 0,
  "resultsPerPage": 0
 },
 "items": []
}*

如果在items的响应中获得空数组,则无法访问该视频。


以下说明API的V2,现已弃用。 (https://developers.google.com/youtube/2.0/developers_guide_protocol_video_entries)。

  

注意:截至2014年3月4日,YouTube Data API(v2)已正式弃用。有关详细信息,请参阅我们的弃用政策。请使用YouTube Data API(v3)进行新的集成,并将仍在使用v2 API的应用程序迁移到v3 API。

向此网址发送请求,以验证是否存在视频

http://gdata.youtube.com/feeds/api/videos/<videoid>

以下是它的用法。

$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $videoId);
if (!strpos($headers[0], '200')) {
    echo "The YouTube video you entered does not exist";
    return false;
}

答案 1 :(得分:5)

您只需检查http://gdata.youtube.com/feeds/api/videos/$id

的返回值即可

你回来了例如

  • 私人视频
  • ID无效
  • 未找到视频

所以最简单的检查是:

if (file_get_contents('http://gdata.youtube.com/feeds/api/videos/'.$videoId) == 'Video not found') {
  echo 'Video deleted';
}

答案 2 :(得分:2)

答案 3 :(得分:0)

Youtube返回HTTP状态代码404,视频不存在。 例如See this made up url

特定错误消息有所不同,但重要的是返回非200代码。

因此在PHP中使用Curl来获取url,然后检查返回的状态代码。 您可以使用以下内容从Curl获取状态代码:

$http_status = curl_getinfo( $handle, CURLINFO_HTTP_CODE );

您可以将每个网址的last_checked时间戳存储在数据库中,然后每隔N分钟运行一次cronjob以检查少量网址,并在完成后更新时间戳。确保将状态代码也存储在数据库中。

然后,您可以在显示网址时在代码中处理非200状态代码。