web:youtube_thumbnail

Обложки Youtube роликов

Размеры

Тип превью Размер (пиксели) Соотношение сторон
Default 120 x 90 4:3
Medium 320 x 180 16:9
High 480 x 360 4:3
Standard 640 x 480 4:3
Maximum Resolution 1280 x 720 или 1920 x 1080 16:9

Ссылки

Как скачать

yt-dlp

yt-dlp video-ID --skip-download --write-thumbnail

self-hosted

bash

Простой bash скрипт для скачивания обложки по полной ссылке или ID видео в формате jpeg или webp.

#!/bin/bash
 
# Функция для отображения помощи
function show_help {
    echo "Скрипт для скачивания миниатюры YouTube."
    echo ""
    echo "Использование: ./youtube_thumbnail_downloader.sh"
    echo "Следуйте интерактивным подсказкам для ввода данных."
    echo ""
    echo "Опции:"
    echo "  -h, --help     Показать это сообщение помощи и выйти."
    echo ""
    echo "Алгоритм работы:"
    echo "  1. Введите URL или ID видео."
    echo "  2. Скрипт проверит, существует ли видео (по доступности миниатюры)."
    echo "  3. Если видео существует, выберите формат (JPEG/WebP) и качество."
    echo "  4. Миниатюра будет скачана в текущую директорию."
    echo ""
    echo "Пример использования:"
    echo "  ./youtube_thumbnail_downloader.sh"
}
 
# Проверка аргументов для показа помощи
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
    show_help
    exit 0
fi
 
# Функция для выбора формата
function select_format {
    echo "Выберите формат для сохранения миниатюры:"
    echo "1) JPEG"
    echo "2) WebP"
    read -p "Введите номер формата (по умолчанию: 1): " format_choice
    case $format_choice in
        2) FORMAT="webp" ;;
        *) FORMAT="jpeg" ;;
    esac
    echo "Выбран формат: $FORMAT"
}
 
# Функция для выбора качества
function select_quality {
    echo "Выберите качество миниатюры:"
    echo "1) default (низкое качество)"
    echo "2) mqdefault (среднее качество)"
    echo "3) hqdefault (высокое качество)"
    echo "4) sddefault (очень высокое качество)"
    echo "5) maxresdefault (максимальное качество)"
    read -p "Введите номер качества (по умолчанию: 5): " quality_choice
    case $quality_choice in
        1) QUALITY="default" ;;
        2) QUALITY="mqdefault" ;;
        3) QUALITY="hqdefault" ;;
        4) QUALITY="sddefault" ;;
        *) QUALITY="maxresdefault" ;;
    esac
    echo "Выбрано качество: $QUALITY"
}
 
# === Основная логика ===
 
# Запрашиваем URL или ID видео
read -p "Введите URL или ID видео YouTube: " input
 
# Определяем, это URL или ID
if [[ "$input" =~ ^https?:// ]]; then
    VIDEO_ID=$(echo "$input" | grep -oE "v=([a-zA-Z0-9_-]{11})" | cut -d'=' -f2)
    if [[ -z "$VIDEO_ID" ]]; then
        echo "Ошибка: Не удалось извлечь ID видео из URL." >&2
        exit 1
    fi
else
    VIDEO_ID="$input"
fi
 
# Проверка на существование видео (по дефолтной миниатюре JPEG)
CHECK_URL="https://img.youtube.com/vi/$VIDEO_ID/default.jpg"
echo "Проверка доступности видео..."
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$CHECK_URL")
 
if [[ "$HTTP_STATUS" != "200" ]]; then
    echo "Ошибка: Видео с ID '$VIDEO_ID' не найдено или недоступно."
    exit 1
fi
 
echo "Видео найдено! Можно скачивать миниатюры."
 
# Запрашиваем формат и качество
select_format
select_quality
 
# Формируем URL для миниатюры
if [[ "$FORMAT" == "webp" ]]; then
    THUMBNAIL_URL="https://img.youtube.com/vi_webp/$VIDEO_ID/$QUALITY.webp"
else
    THUMBNAIL_URL="https://img.youtube.com/vi/$VIDEO_ID/$QUALITY.jpg"
fi
 
OUTPUT_FILE="${VIDEO_ID}_${QUALITY}.${FORMAT}"
 
# Скачивание миниатюры
echo "Скачивание миниатюры с $THUMBNAIL_URL..."
curl -s "$THUMBNAIL_URL" --output "$OUTPUT_FILE"
 
if [[ $? -eq 0 && -s "$OUTPUT_FILE" ]]; then
    echo "✅ Миниатюра успешно сохранена в файл: $OUTPUT_FILE"
else
    echo "Ошибка: Не удалось скачать миниатюру (возможно, выбранное качество недоступно)."
    rm -f "$OUTPUT_FILE"
fi

Discussion

Enter your comment. Wiki syntax is allowed:
 
web/youtube_thumbnail.txt · Last modified: by dx