Написали функцию которая создает Thumbnail при добавлении видео с Rutube

baltun

Администратор
Сообщения
12.384
Реакции
3.106
Баллы
1.833
PHP:
public static function getRutubeVideoThumbnailUrl($videoId)
{
    $videoId = trim((string)$videoId);

    // Формируем URL для oEmbed API Rutube
    $encodedUrl = urlencode("https://rutube.ru/video/{$videoId}/");
    $apiUrl = "https://rutube.ru/api/oembed/?url={$encodedUrl}&format=json";

    try {
        $ch = curl_init();
        curl_setopt_array($ch, [
            CURLOPT_URL => $apiUrl,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_USERAGENT => 'Mozilla/5.0',
            CURLOPT_TIMEOUT => 10,
        ]);
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($httpCode !== 200 || empty($response)) {
            return self::getDefaultThumbnail(); // fallback
        }

        $data = json_decode($response, true);

        if (isset($data['thumbnail_url'])) {
            // Очистка URL: убираем пробелы, лишние символы, параметры
            $thumbnailUrl = preg_replace('/\s+/', '', $data['thumbnail_url']);
            $thumbnailUrl = explode('?size=l', $thumbnailUrl)[0];

            // Проверяем, что есть расширение .jpg
            if (preg_match('/\.jpe?g$/i', $thumbnailUrl)) {
                return $thumbnailUrl;
            } else {
                return self::getDefaultThumbnail(); // fallback
            }
        } else {
            return self::getDefaultThumbnail(); // fallback
        }

    } catch (\Exception $e) {
        error_log("Ошибка при загрузке превью Rutube: " . $e->getMessage());
        return self::getDefaultThumbnail(); // fallback
    }
}

private static function getDefaultThumbnail()
{
    return '/site/data/default-thumbnail.jpg ';
}
 
Последнее редактирование:
Назад
Верх Низ