4.7 KiB
medien-dl
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.
✨ 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
- Docker
- Docker Compose (in den meisten Docker-Desktop-Installationen enthalten)
Installationsschritte
-
Repository klonen:
git clone https://github.com/MrUnknownDE/medien-dl.git cd medien-dl -
Konfigurationsdatei erstellen: Kopiere die Beispiel-Konfigurationsdatei
.env.examplenach.env.cp .env.example .env -
.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! -
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 -
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.
