c0d659b524adea280dbc5495b81464e2954a4401
YouTube Downloader
Eine einfache Web-Anwendung zum Herunterladen von YouTube-Videos mit Astro.js und yt-dlp.
Features
- Einfache Login-Seite
- YouTube URL Download-Interface
- yt-dlp Integration für Video-Downloads (läuft innerhalb der App über npm-Package)
- Tailwind CSS für modernes Design
- Docker-Support
Voraussetzungen
- Node.js 20 oder höher
- Docker (optional, für Container-Deployment)
Installation
Für unerfahrene Nutzer: Siehe INSTALLATION.md für eine detaillierte Schritt-für-Schritt-Anleitung.
Schnellstart
- Dependencies installieren:
npm install
- yt-dlp installieren:
# macOS
brew install yt-dlp
# Linux
sudo apt-get install yt-dlp
# Windows oder mit pip
pip install yt-dlp
- Environment-Variablen einrichten:
Erstelle eine .env Datei im Projektordner:
LOGIN_USERNAME=admin
LOGIN_PASSWORD=dein-passwort
DOWNLOAD_DIR=./downloaded
SESSION_SECRET=dein-session-secret
- Development-Server starten:
npm run dev
Die Anwendung läuft dann auf http://localhost:4321
Mit Docker
- Docker Image bauen und starten:
docker-compose up --build
Die Anwendung läuft dann auf http://localhost:4321
Als Desktop-App (Electron)
Für macOS:
npm run electron:build:mac
Für Windows:
npm run electron:build:win
Die fertige App wird in dist-electron/ erstellt:
- macOS:
.dmgInstaller oder.zipPortable Version - Windows:
.exeInstaller oder Portable.exe
Siehe BUILD-MACOS.md für detaillierte Anleitung.
Verwendung
- Öffne die Anwendung im Browser
- Melde dich mit den konfigurierten Credentials an (siehe Environment-Variablen)
- Gib eine YouTube URL in das Eingabefeld ein
- Klicke auf "Download"
- Das Video wird in den konfigurierten Ordner heruntergeladen (Standard:
/downloaded)
Konfiguration
Environment-Variablen
LOGIN_USERNAME: Benutzername für den Login (erforderlich wennLOGINnicht auffalsegesetzt ist)LOGIN_PASSWORD: Passwort für den Login (erforderlich wennLOGINnicht auffalsegesetzt ist)LOGIN: Wenn auffalsegesetzt, wird der Login deaktiviert und alle Seiten sind ohne Authentifizierung zugänglich (Standard:true)DOWNLOAD_DIR: Verzeichnis für Downloads (Standard:./downloaded)SESSION_SECRET: Secret für Session-Cookies (Standard:default-secret-change-in-production)STREAM_ONLY: Wenn auftruegesetzt, werden Dateien nicht physisch gespeichert, sondern direkt als Download-Stream angeboten (Standard:false)LOCALE: Sprache der Anwendung -defür Deutsch oderenfür Englisch (Standard:de)YT_DLP_COOKIES: Pfad zu einer Cookie-Datei für yt-dlp (z.B../cookies.txt). Wird verwendet, um YouTube Bot-Erkennung zu umgehen. Siehe yt-dlp Cookie-DokumentationYT_DLP_COOKIES_FROM_BROWSER: Browser-Name, aus dem Cookies geladen werden sollen (z.B.chrome,firefox,edge,safari). Alternative zuYT_DLP_COOKIES. Siehe yt-dlp Cookie-DokumentationYT_DLP_JS_RUNTIME: JavaScript Runtime für yt-dlp (Standard:deno). Andere Optionen:node,d8, etc.
Beispiel .env Datei mit Login:
LOGIN_USERNAME=admin
LOGIN_PASSWORD=mein-sicheres-passwort
LOGIN=true
DOWNLOAD_DIR=./downloaded
SESSION_SECRET=mein-geheimes-session-secret
STREAM_ONLY=false
LOCALE=de
YT_DLP_COOKIES_FROM_BROWSER=chrome
Beispiel .env Datei ohne Login:
LOGIN=false
DOWNLOAD_DIR=./downloaded
STREAM_ONLY=false
LOCALE=de
YT_DLP_COOKIES_FROM_BROWSER=chrome
Hinweis zu Cookies:
- Wenn YouTube Bot-Erkennung auftritt, müssen Cookies verwendet werden
YT_DLP_COOKIES_FROM_BROWSERist die einfachste Option: Gibt den Browser-Namen an (z.B.chrome,firefox,edge,safari)- Alternativ kann
YT_DLP_COOKIESmit dem Pfad zu einer Cookie-Datei verwendet werden - Cookie-Dateien können mit Browser-Erweiterungen wie "Get cookies.txt LOCALLY" oder "cookies.txt" exportiert werden
Hinweis zu LOGIN:
- Wenn
LOGIN=false: Keine Login-Seite, alle Seiten sind öffentlich zugänglich.LOGIN_USERNAMEundLOGIN_PASSWORDwerden ignoriert. - Wenn
LOGIN=trueoder nicht gesetzt: Login ist aktiviert.LOGIN_USERNAMEundLOGIN_PASSWORDmüssen gesetzt sein.
Hinweis zu STREAM_ONLY:
- Wenn
STREAM_ONLY=true: Dateien werden temporär gespeichert, direkt als Download-Stream angeboten und danach automatisch gelöscht. Keine Dateien bleiben auf der Festplatte. - Wenn
STREAM_ONLY=falseoder nicht gesetzt: Dateien werden imDOWNLOAD_DIRVerzeichnis gespeichert und können später über die Dateiliste abgerufen werden.
Projektstruktur
/
├── src/
│ ├── components/ # Astro-Komponenten
│ ├── layouts/ # Layout-Templates
│ ├── lib/ # Utility-Funktionen
│ └── pages/ # Seiten und API-Routes
├── Dockerfile # Docker-Konfiguration
├── docker-compose.yml # Docker Compose Setup
└── package.json # Dependencies
Hinweise
- Die Login-Credentials müssen in den Environment-Variablen
LOGIN_USERNAMEundLOGIN_PASSWORDgesetzt werden - Für Produktionsumgebungen sollte ein starkes Passwort verwendet werden
- yt-dlp läuft innerhalb der App über das npm-Package
yt-dlp-wrap - Im Docker-Container wird yt-dlp automatisch installiert
- Für lokale Entwicklung muss yt-dlp separat installiert sein (siehe Installation)
Description
Languages
TypeScript
47.7%
Astro
38.9%
JavaScript
11.5%
Dockerfile
1.8%