Politik Video Download - YouTube Automation

Python MySQL YouTube API OpenAI Pillow Google API
Politik Video Download Thumbnail Beispiel

Beschreibung

Automatisiertes System zum Download, Verarbeiten und Hochladen von politischen Videos auf YouTube. Das Projekt scraped politische Videos von einer externen Quelle, verarbeitet sie mit KI-generierten Titeln und Thumbnails, und lädt sie automatisiert auf YouTube hoch.

Hauptfunktionen

Technische Details

Technologien:

  • Python 3.12 mit Virtual Environment
  • MySQL mit PyMySQL Connector
  • Google YouTube Data API v3
  • OpenAI GPT-4o API für Content-Generierung
  • Pillow (PIL) für Bildverarbeitung
  • Requests für HTTP-Operationen
  • Schedule für zeitgesteuerte Aufgaben

Projektstruktur

Politik_Video_Download/
├── main.py                 # Hauptskript - Download & Verarbeitung
├── yt_script_new.py        # YouTube Upload & Scheduling
├── upload_ytvid.py         # Upload-Logik mit Google API
├── db_utils.py             # Datenbank-Verbindungen & Queries
├── download_utils.py       # Video/Thumbnail Download Funktionen
├── openai_utils.py         # OpenAI API Integration für Titel/Fragen
├── thumbnail_utils.py      # Thumbnail-Bearbeitung mit Pillow
├── config.py               # API-Keys & Konfiguration (extern)
├── overlay_thumb.png       # Overlay-Vorlage für Thumbnails
├── arialbd.ttf             # Schriftart für Thumbnail-Text
└── venv/                   # Python Virtual Environment

Workflow

  1. Datenbank-Abfrage: Zufälliges unbearbeitetes Video aus MySQL auswählen
  2. Web Scraping: HTML der Quellseite laden und JSON-Daten extrahieren
  3. Download: Video (1080p) und Thumbnail herunterladen
  4. KI-Generierung: YouTube-Titel (max. 70 Zeichen) und 3-Wort-Frage erstellen
  5. Thumbnail-Design: Overlay mit Frage auf Thumbnail anwenden
  6. Datenbank-Update: Metadaten speichern, Status auf "created" setzen
  7. Scheduling: Upload zu geplanten Zeiten (z.B. täglich um 10:00)
  8. YouTube Upload: Video mit Thumbnail hochladen, Veröffentlichung planen

Besonderheiten

Code-Beispiel: Thumbnail-Generierung

def create_thumbnail(input_image_path, overlay_image_path, text, font_path, output_image_path):
    # Bilder laden und kombinieren
    input_image = Image.open(input_image_path).convert('RGBA')
    overlay_image = Image.open(overlay_image_path).convert('RGBA')
    result = Image.alpha_composite(input_image, overlay_image)
    
    # Text auf weiße Box zeichnen
    draw = ImageDraw.Draw(result)
    font = ImageFont.truetype(font_path, 100)
    draw.rectangle((x, y, x + box_width, y + box_height), fill=(255, 255, 255))
    draw.text((x + 20, y + 20), text, font=font, fill=(0, 0, 0))
    
    result.convert('RGB').save(output_image_path)