我一直在努力检查提交的链接是否是来自youtube.com或vimeo.com的有效电影剪辑,但我没有成功。
如何检查网址的任何想法:
http://www.youtube.com/watch?v=jc0rnCBCX2c&feature=fvhl (valid)
http://www.youtube.com/watch?v=jc0FFCBCX2c&feature=fvhl (not valid)
http://www.youtube.com/v/jc0rnCBCX2c (valid)
http://www.youtube.com/v/ddjcddddX2c (not valid)
http://www.vimeo.com/463l522 (not valid)
http://www.vimeo.com/1483909 (valid)
http://www.vimeo.com/lumiblue (not valid)
http://www.youtube.com/user/dd181921 (not valid)
我使用php。
答案 0 :(得分:22)
如果您检查请求到http://gdata.youtube.com/feeds/api/videos/videoId的响应标头,其中videoId是Google视频标识符,则视频存在时应获得200,如果视频不存在则应获得400(错误请求)。
// PHP code
// Check if youtube video item exists by the existance of the the 200 response
$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $youtubeId);
if (!strpos($headers[0], '200')) {
echo "The YouTube video you entered does not exist";
return false;
}
答案 1 :(得分:7)
我在这个网站上看到了答案: www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_23765374.html
他说:
我建议您使用youtube的API,因为您正在尝试验证视频是否存在。 或者如果你不想进入API的东西,那么你可以做一个简单的技巧。 检查此链接:
http://code.google.com/apis/youtube/developers_guide_php.html#RetrievingVideoEntry
要检查视频是否存在,您需要提取“v”值并将包含视频ID的请求发送到:
http://gdata.youtube.com/feeds/api/videos/videoID
其中videoID是“v”值 例如视频FLE2htv9oxc 会像这样被查询 http://gdata.youtube.com/feeds/api/videos/FLE2htv9oxc 如果它不存在那么你将得到一个“无效ID”的页面 如果存在,将返回具有关于视频的各种信息的XML提要。 通过这种方式,您可以检查视频是否存在。
希望这会让你朝着正确的方向前进。
与vimeo一样,尝试查看那里的api文档。 http://www.vimeo.com/api答案 2 :(得分:2)
我写了这个函数来检查链接是否是有效的YouTube链接。
/**
* This function will check if 'url' is valid youtube video and return the ID.
* If the return value === false then this is **not** a valid youtube url, otherwise the youtube id is returned.
*
* @param <type> $url
* @return <type>
*/
private static function get_youtube_id($url) {
$link = parse_url($url,PHP_URL_QUERY);
/**split the query string into an array**/
if($link == null) $arr['v'] = $url;
else parse_str($link, $arr);
/** end split the query string into an array**/
if(! isset($arr['v'])) return false; //fast fail for links with no v attrib - youtube only
$checklink = YOUTUBE_CHECK . $arr['v'];
//** curl the check link ***//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$checklink);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$result = curl_exec($ch);
curl_close($ch);
$return = $arr['v'];
if(trim($result)=="Invalid id") $return = false; //you tube response
return $return; //the stream is a valid youtube id.
}
答案 3 :(得分:0)
如果视频不再有效,您可以尝试捕获管道引发的301标头
答案 4 :(得分:0)
/*
* Verify YouTube video status
*/
$videoID = "o8UCI7r1Aqw";
$header = get_headers("http://gdata.youtube.com/feeds/api/videos/". $videoID);
switch($headers[0]) {
case '200':
// video valid
break;
case '403':
// private video
break;
case '404':
// video not found
break;
default:
// nothing above
break;
}