Domů Programování Python Python generátor náhledového obrázku YouTube videa
PythonYouTube videa

Python generátor náhledového obrázku YouTube videa

import re
import os
import requests
import argparse
from urllib.parse import urlparse, parse_qs

def extract_video_id(url):
    """
    Extract the YouTube video ID from a URL.

    Args:
        url (str): The YouTube video URL

    Returns:
        str: The video ID or None if not found
    """
    # Try to parse the URL
    parsed_url = urlparse(url)

    # Check if it's a youtube.com URL
    if 'youtube.com' in parsed_url.netloc:
        if parsed_url.path == '/watch':
            # Regular youtube.com/watch?v=VIDEO_ID format
            query_params = parse_qs(parsed_url.query)
            if 'v' in query_params:
                return query_params['v'][0]
        elif '/embed/' in parsed_url.path:
            # Embedded video format
            return parsed_url.path.split('/embed/')[1]
        elif '/v/' in parsed_url.path:
            # Old format
            return parsed_url.path.split('/v/')[1]

    # Check if it's a youtu.be URL (shortened)
    elif 'youtu.be' in parsed_url.netloc:
        return parsed_url.path.lstrip('/')

    # Try to match a video ID pattern as a fallback
    youtube_id_pattern = r'(?:(?:youtube\.com\/(?:(?:watch\?v=)|(?:embed\/))([a-zA-Z0-9_-]{11}))|(?:youtu\.be\/([a-zA-Z0-9_-]{11})))'
    match = re.search(youtube_id_pattern, url)
    if match:
        return match.group(1) or match.group(2)

    return None

def download_thumbnail(video_id, quality='maxresdefault', output_dir='.'):
    """
    Download a YouTube video thumbnail.

    Args:
        video_id (str): The YouTube video ID
        quality (str): Thumbnail quality (maxresdefault, hqdefault, mqdefault, default)
        output_dir (str): Directory to save the thumbnail

    Returns:
        str: Path to the saved thumbnail or None if download failed
    """
    thumbnail_url = f"https://img.youtube.com/vi/{video_id}/{quality}.jpg"
    output_path = os.path.join(output_dir, f"{video_id}_{quality}.jpg")

    try:
        response = requests.get(thumbnail_url, stream=True)
        response.raise_for_status()  # Raise an exception for HTTP errors

        # If maxresdefault is not available, try hqdefault
        if quality == 'maxresdefault' and response.status_code == 404:
            return download_thumbnail(video_id, 'hqdefault', output_dir)

        with open(output_path, 'wb') as file:
            for chunk in response.iter_content(chunk_size=8192):
                file.write(chunk)

        print(f"Thumbnail saved to: {output_path}")
        return output_path

    except requests.exceptions.RequestException as e:
        print(f"Error downloading thumbnail: {e}")
        return None

def main():
    parser = argparse.ArgumentParser(description='Download YouTube video thumbnails')
    parser.add_argument('url', nargs='?', help='YouTube video URL')
    parser.add_argument('--quality', choices=['maxresdefault', 'hqdefault', 'mqdefault', 'default'],
                        default='maxresdefault', help='Thumbnail quality')
    parser.add_argument('--output', default='.', help='Output directory')

    args = parser.parse_args()

    # If no URL is provided, prompt the user
    url = args.url
    if not url:
        print("No YouTube URL provided. Please enter a YouTube video URL:")
        url = input("> ")

    # Extract video ID
    video_id = extract_video_id(url)
    if not video_id:
        print("Error: Could not extract video ID from the provided URL.")
        return

    # Download thumbnail
    download_thumbnail(video_id, args.quality, args.output)

if __name__ == "__main__":
    main()

🎞️ YouTube Thumbnail Downloader – Python nástroj

🧩 Co tento program dělá?

Tento nástroj umožňuje automaticky stáhnout náhledový obrázek (thumbnail) z libovolného YouTube videa pomocí jeho URL. Umožňuje zvolit si kvalitu obrázku, který se uloží na disk.


⚙️ Jak to funguje?

1. 🔍 Extrahování ID videa

Funkce extract_video_id(url):

  • Z URL videa vybere jedinečné ID videa (např. dQw4w9WgXcQ).

  • Podporuje různé formáty adres:

    • https://www.youtube.com/watch?v=...

    • https://youtu.be/...

    • https://youtube.com/embed/...

2. 🖼️ Stažení obrázku

Funkce download_thumbnail(video_id, quality):

  • Sestaví správnou URL pro obrázek:
    https://img.youtube.com/vi/VIDEO_ID/QUALITY.jpg

  • Stáhne obrázek a uloží ho jako .jpg.

  • Pokud nejvyšší kvalita (maxresdefault) není dostupná, automaticky použije alternativu (hqdefault).

3. 💻 Ovládání z příkazové řádky

Spuštěním skriptu např.:

python downloader.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --quality hqdefault --output ./thumbnails

🔧 Parametry (CLI)

ArgumentPopis
urlURL YouTube videa
--qualityKvalita obrázku: maxresdefault, hqdefault, mqdefault, default
--outputCesta k výstupní složce (např. ./vystup)

💡 Příklad použití

python downloader.py "https://youtu.be/dQw4w9WgXcQ"

➡️ Vytvoří soubor dQw4w9WgXcQ_maxresdefault.jpg ve výchozím adresáři.


📦 K čemu je to užitečné?

  • Automatizace sběru náhledových obrázků (např. pro katalogy videí)

  • Archivace obalových obrázků

  • Tvorba náhledů do prezentací nebo reportů


📋 Poznámky

  • Program si sám ověří, zda existuje obrázek v požadované kvalitě.

  • Kód je navržen tak, aby byl robustní vůči různým formátům URL.

  • Nevyžaduje YouTube API – pracuje jen s veřejnými URL obrázků.

Související články

ProgramováníPython

PyCharm JetBrains IDE vývojové prostředí

🚀 Úvod PyCharm je špičkové integrované vývojové prostředí (IDE) od společnosti JetBrains,...

PythonTensorFlow.js

🐍 Úvod do TensorFlow Lite & Python

TensorFlow Lite (TFLite) ve spojení s Pythonem otevírá dveře on-device strojovému učení...

Python

Detekční systém v Pythonu s GPU akcelerací

Desktop Motion Detection s GPU akcelerací 🎯 Účel programu Tento nástroj sleduje...

Jizerské horyKrkonošePochody a turistikaYouTube videa

Kam nedošel velbloud 2024

Memoriál Viléma Gernerta, pochod je věnován památce dlouholetého předsedy a zakladateli pochodu....