Подтвердить что ты не робот

Проверьте, действительно ли 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.

4b9b3361

Ответ 1

Я вижу ответ на этом сайте: 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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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