Úterý , 22 Červenec 2025
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ů.

Zanechte komentář

Napsat komentář

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 programuTento nástroj sleduje vybrané okno...

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.https://www.youtube.com/watch?v=9NXUyEL3v-cTrasa...

×
Avatar
PetrPikora.com
AI Chatbot
Ahoj! Jak vám mohu pomoci?
 

Používáním tohoto chatbota souhlasíte se shromažďováním a používáním vašich dat, jak je uvedeno v našich Zásadách ochrany osobních údajů. Vaše údaje budou použity pouze jako pomoc s vaším dotazem.