Как проверить недоступность ролика?
Добрый день!
В связи с удалением каналов или отдельных роликов на Youtube возникла необходимость понять — существует ли ролик в принципе?
А ведь ещё часть роликов блокируется ещё и для просмотра в отдельных странах…
Неужели придётся проходить по ВСЕМ страницам и проверять это вручную?
Я, конечно, размещаю ролики только через свой сниппет (НЕ ЧЕРЕЗ ПОДЕЛИТЬСЯ/ВСТРОИТЬ) и у меня есть полный список идентификаторов. Я, кроме того, сразу могу указать и необходимое количество похожих роликов (по смыслу, перезалитых и т.д.).
Но как мне понять, что основной ролик недоступен и вместо него нужно показывать на странице другой? Именно в автоматическом режиме?
Заранее спасибо
В связи с удалением каналов или отдельных роликов на Youtube возникла необходимость понять — существует ли ролик в принципе?
А ведь ещё часть роликов блокируется ещё и для просмотра в отдельных странах…
Неужели придётся проходить по ВСЕМ страницам и проверять это вручную?
Я, конечно, размещаю ролики только через свой сниппет (НЕ ЧЕРЕЗ ПОДЕЛИТЬСЯ/ВСТРОИТЬ) и у меня есть полный список идентификаторов. Я, кроме того, сразу могу указать и необходимое количество похожих роликов (по смыслу, перезалитых и т.д.).
Но как мне понять, что основной ролик недоступен и вместо него нужно показывать на странице другой? Именно в автоматическом режиме?
Заранее спасибо
Комментарии: 2
Накидал сниппет на коленке.
Вызов сниппета:
&input — Исходный ролик
&default — другое зеркало ролика
Вызов сниппета:
&input — Исходный ролик
&default — другое зеркало ролика
[[ytTest? &input=`https://www.youtube.com/watch?v=BCwkRcDlo2k` &default=`https://www.youtube.com/watch?v=tu-hhC_PNEg`]]
Код сниппета:<?php
//Snippet ytTest
/**
* @param $yt_source
* @return false|mixed
*/
function ytTest($yt_source){
//Парсинг YT ID
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $yt_source, $matches);
$yt_id = $matches[0];
if(!$yt_id) return false;
$yt_image = "https://img.youtube.com/vi/{$yt_id}/default.jpg";
file_get_contents($yt_image, false, stream_context_create(['http' => ['ignore_errors' => true]]));
$check = $http_response_header[0];
return ($check === "HTTP/1.0 200 OK")? $yt_source : false;
}
/** @var TYPE_NAME $input */
/** @var TYPE_NAME $default */
return ytTest($input) ? ytTest($input) : $default;
Большущее СПАСИБО за ответ!
Нет картинки «по умолчанию» к видео — значит нужно подставить публикацию из телеграма
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.