Как проверить недоступность ролика?

Добрый день!
В связи с удалением каналов или отдельных роликов на Youtube возникла необходимость понять — существует ли ролик в принципе?
А ведь ещё часть роликов блокируется ещё и для просмотра в отдельных странах…
Неужели придётся проходить по ВСЕМ страницам и проверять это вручную?
Я, конечно, размещаю ролики только через свой сниппет (НЕ ЧЕРЕЗ ПОДЕЛИТЬСЯ/ВСТРОИТЬ) и у меня есть полный список идентификаторов. Я, кроме того, сразу могу указать и необходимое количество похожих роликов (по смыслу, перезалитых и т.д.).
Но как мне понять, что основной ролик недоступен и вместо него нужно показывать на странице другой? Именно в автоматическом режиме?
Заранее спасибо
Игорь
28 марта 2022, 10:17
modx.pro
376
0

Комментарии: 2

vectorserver
31 марта 2022, 13:26
1
0
Накидал сниппет на коленке.

Вызов сниппета:
&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;
    Игорь
    02 апреля 2022, 20:21
    0
    Большущее СПАСИБО за ответ!
    Нет картинки «по умолчанию» к видео — значит нужно подставить публикацию из телеграма
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2