Проверить наличие видео YouTube. PHP-скрипт проверки битых ссылок YouTube
Существует ли видео YouTube, или ссылка уже стала нерабочей?
Следующий скрипт проверяет наличие видео и разрешение публичного доступа по ссылкам двух типов: youtube.com/watch?v=... и youtu.be/...
Так можно проверить все вставленные на сайт видео, в специальном поле или внутри статей.
Закрыто ли видео от просмотра в стране, скрипт не проверяет.
Наследовано: http://stackoverflow.com/questions/1383073/how-do-i-check-if-a-video-exi...
function video_exists ($id) { $headers = get_headers('https://www.youtube.com/oembed?format=json&url=http://www.youtube.com/watch?v='.$id); return true; } else { return false; } } //array of video links 'https://www.youtube.com/watch?v=rN8nA2JPhdw', 'https://www.youtube.com/watch?videwatch', 'https://youtu.be/3ovCy4pceNY', 'https://www.youtube.com/watch?v=9EHXNZ-FH1wnononono' //this video does not exist exactly ); { $url = $y[$i]; $id = ''; //check the link type: youtube.com or youtu.be //get video id from youtube.com if ($matches[1]) { $id = $matches[1]; } else { echo '<font color=red>Id видео не найден в url</font>: '.$url.'<br>'; continue; //do not check for this $i } } else { //get video id from youtu.be if ($matches[1]) { $id = $matches[1]; } else { echo '<font color=red>Id видео не найден в url</font>: '.$url.'<br>'; continue; //do not check for this $i } } if ( video_exists($id) ) { echo 'Есть такое: '.$url.'<br>'; } else { echo '<font color=red>нет такого видео: '.$url.'</font><br>'; } }
Если ваш массив видео будет очень большим, тогда нужно проверять по 400-500 видео за один запуск скрипта.
Если видео существует, тогда в функции video_exists() в переменной headers будет обнаружен код 200.
Если видео нет в переменной headers будет код 404.
Если видео приватное (запрещено от просмотра на других сайтах), тогда - код 403.
Для владельцев сайтов на Drupal: получить все ссылки на Ютуб из поля Yutube или Video Embed Field можно с помощью Views по материалам.