Проверьте, действительно ли Youtube и Vimeo-клипы

Я давно пытаюсь проверить, действительно ли представленные ссылки являются действительными клипами для фильмов с youtube.com или vimeo.com, но мне это не удалось.

Любые идеи, как проверить URL-адрес:

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.

я вижу ответ на этом сайте: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_23765374.html

и сказал он :

Я бы предложил использовать API youtube, поскольку вы пытаетесь проверить, существует ли видео. или если вы не хотите входить в состав API, тогда вы можете сделать простой трюк. проверьте эту ссылку:

http://code.google.com/apis/youtube/developers_guide_php.html#RetrievingVideoEntry

для проверки наличия видео вам нужно извлечь значение «v» и отправить запрос, содержащий идентификатор видео, чтобы:

http://gdata.youtube.com/feeds/api/videos/videoID

где videoID – это значение «v», например, видео FLE2htv9oxc будет запрашиваться следующим образом: http://gdata.youtube.com/feeds/api/videos/FLE2htv9oxc, если он не существует, тогда вы получите страницу с «Недопустимый идентификатор «если он существует, вернет фид XML, имеющий различную информацию о видео. таким образом вы можете проверить, что видео существует.

надеюсь, это поможет вам в правильном направлении.

то же самое с vimeo, попробуйте посмотреть в документации api на сайте. http://www.vimeo.com/api

Если вы проверите заголовки ответов из запроса на 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; } 

Я написал эту функцию, чтобы проверить, является ли ссылка действительной ссылкой на 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. } 

Вы можете попытаться поймать заголовок 301, который вы выбрасываете, если видео больше не действует

 /* * 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; }