Files
medien-dl/README.md
2025-09-24 11:00:25 +02:00

4.7 KiB

medien-dl

Docker Image CI

medien-dl ist eine benutzerfreundliche Webanwendung, die es ermöglicht, Medieninhalte von verschiedenen sozialen Plattformen herunterzuladen und direkt in einen S3-kompatiblen Speicher (wie AWS S3, Cloudflare R2 oder MinIO) hochzuladen.

Die App bietet eine einfache Weboberfläche zur Steuerung der Downloads, zeigt den Fortschritt in Echtzeit an und führt einen Verlauf über alle abgeschlossenen Aufträge.

Screenshot der Anwendung

Features

  • Breite Plattformunterstützung:
    • SoundCloud (MP3)
    • YouTube (MP3 & MP4)
    • TikTok (MP4)
    • Instagram (Reels & Posts als MP4)
    • Twitter / X (Videos als MP4)
  • Flexible Qualitätsauswahl: Wähle die gewünschte Bitrate für MP3s und die Videoqualität für MP4s.
  • Video-Kompatibilität: Optionale Konvertierung von Videos in das weit verbreitete H.264-Format für maximale Kompatibilität.
  • S3-kompatibler Upload: Funktioniert mit AWS S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, MinIO und mehr.
  • Echtzeit-Statusupdates: Verfolge den Fortschritt von Download, Konvertierung und Upload direkt im Browser.
  • Download-Verlauf: Eine Übersicht über alle bisher heruntergeladenen Medien (optional).
  • Statistiken: Einfache Statistiken über die Gesamtzahl der Aufträge, die durchschnittliche Dauer und die hochgeladene Datenmenge.
  • Einfaches Setup: Dank Docker und Docker Compose in wenigen Minuten einsatzbereit.

🚀 Schnellstart mit Docker

Die einfachste Methode, die Anwendung zu starten, ist die Verwendung von Docker und Docker Compose.

Voraussetzungen

Installationsschritte

  1. Repository klonen:

    git clone https://github.com/MrUnknownDE/medien-dl.git
    cd medien-dl
    
  2. Konfigurationsdatei erstellen: Kopiere die Beispiel-Konfigurationsdatei .env.example nach .env.

    cp .env.example .env
    
  3. .env-Datei anpassen: Öffne die .env-Datei mit einem Texteditor und trage deine Zugangsdaten für den S3-Speicher ein. Dies ist der wichtigste Schritt!

  4. Datenverzeichnisse erstellen: Die Anwendung benötigt Verzeichnisse, um den Verlauf und die Statistiken persistent zu speichern.

    mkdir -p data/sc_downloads
    touch data/download_history.json
    touch data/stats.json
    
  5. Anwendung starten: Starte die Anwendung im Hintergrund mit Docker Compose.

    docker-compose up -d
    

Die Webanwendung ist nun unter http://localhost:5000 erreichbar.

⚙️ Konfiguration

Alle Konfigurationen werden über die .env-Datei gesteuert.

Variable Erforderlich Beschreibung Beispiel
AWS_ACCESS_KEY_ID Ja Deine Access Key ID für den S3-Speicher. AKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY Ja Dein Secret Access Key für den S3-Speicher. wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_S3_BUCKET_NAME Ja Der Name deines S3-Buckets. mein-medien-bucket
AWS_REGION Ja Die Region deines S3-Anbieters. Für Cloudflare R2 auto verwenden. eu-central-1
S3_ENDPOINT_URL Nein Die Endpoint-URL für S3-kompatible Anbieter (nicht für AWS S3). https://<accountid>.r2.cloudflarestorage.com
S3_PUBLIC_URL_BASE Ja Die öffentliche Basis-URL deines Buckets. Wichtig für den finalen Link! https://pub-<hash>.r2.dev/
ENABLE_HISTORY Nein Aktiviert (true) oder deaktiviert (false) die Verlaufsfunktion. true
MAX_WORKERS Nein Anzahl der parallelen Verarbeitungs-Threads. 1 wird empfohlen, da die UI-Anzeige sonst nicht synchron ist. 1
COOKIE_FILE_PATH Nein Pfad zu einer Cookie-Datei (Netscape-Format) für Downloads, die einen Login erfordern (z.B. private Inhalte). /app/cookies/instagram.txt

🛠️ Technologie-Stack

  • Backend: Python, Flask
  • Download-Engine: yt-dlp
  • Cloud-Anbindung: boto3 (AWS SDK)
  • WSGI-Server: Gunicorn
  • Containerisierung: Docker, Docker Compose
  • Frontend: Bootstrap 5, Font Awesome, JavaScript

Lizenz

Dieses Projekt steht unter der MIT-Lizenz.