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,而不是依赖于当前存在的某种行为,但不能保证.
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)
这是我用来使用视频 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)