Initial commit of YouTube Downloader application, including core functionality for downloading videos, user authentication, and Docker support. Added configuration files, environment setup, and basic UI components using Astro.js and Tailwind CSS.

This commit is contained in:
Peter Meier
2025-12-22 10:59:01 +01:00
parent 79d8a95391
commit 486639aaea
31 changed files with 13078 additions and 132 deletions

86
install.js Normal file
View File

@@ -0,0 +1,86 @@
#!/usr/bin/env node
import { execSync } from 'child_process';
import { existsSync, writeFileSync } from 'fs';
import { join } from 'path';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
console.log('🚀 YouTube Downloader - Installation\n');
// Prüfe Node.js Version
const nodeVersion = process.version;
const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0]);
if (majorVersion < 20) {
console.error('❌ Node.js Version 20 oder höher ist erforderlich.');
console.error(` Aktuelle Version: ${nodeVersion}`);
process.exit(1);
}
console.log(`✅ Node.js Version: ${nodeVersion}\n`);
// Schritt 1: npm install
console.log('📦 Installiere Dependencies...');
try {
execSync('npm install', { stdio: 'inherit', cwd: __dirname });
console.log('✅ Dependencies installiert\n');
} catch (error) {
console.error('❌ Fehler beim Installieren der Dependencies');
process.exit(1);
}
// Schritt 2: Prüfe yt-dlp
console.log('🔍 Prüfe yt-dlp Installation...');
let ytdlpInstalled = false;
try {
execSync('yt-dlp --version', { stdio: 'ignore' });
ytdlpInstalled = true;
console.log('✅ yt-dlp ist bereits installiert\n');
} catch (error) {
console.log('⚠️ yt-dlp ist nicht installiert');
console.log('\n📥 Bitte installiere yt-dlp:');
console.log(' macOS: brew install yt-dlp');
console.log(' Linux: sudo apt-get install yt-dlp');
console.log(' Windows: pip install yt-dlp');
console.log(' Oder: pip install yt-dlp (funktioniert auf allen Plattformen)\n');
}
// Schritt 3: Erstelle .env Datei falls nicht vorhanden
const envPath = join(__dirname, '.env');
if (!existsSync(envPath)) {
console.log('📝 Erstelle .env Datei...');
const envContent = `LOGIN_USERNAME=admin
LOGIN_PASSWORD=change-me-in-production
DOWNLOAD_DIR=./downloaded
SESSION_SECRET=change-me-in-production-$(Date.now())
`;
writeFileSync(envPath, envContent);
console.log('✅ .env Datei erstellt');
console.log('⚠️ WICHTIG: Bitte ändere LOGIN_PASSWORD und SESSION_SECRET in der .env Datei!\n');
} else {
console.log('✅ .env Datei existiert bereits\n');
}
// Schritt 4: Erstelle downloaded Verzeichnis
const downloadDir = join(__dirname, 'downloaded');
if (!existsSync(downloadDir)) {
console.log('📁 Erstelle Download-Verzeichnis...');
execSync(`mkdir -p "${downloadDir}"`, { cwd: __dirname });
console.log('✅ Download-Verzeichnis erstellt\n');
} else {
console.log('✅ Download-Verzeichnis existiert bereits\n');
}
console.log('✨ Installation abgeschlossen!\n');
console.log('📋 Nächste Schritte:');
console.log(' 1. Bearbeite die .env Datei und setze LOGIN_PASSWORD und SESSION_SECRET');
if (!ytdlpInstalled) {
console.log(' 2. Installiere yt-dlp (siehe Anweisungen oben)');
console.log(' 3. Starte die Anwendung mit: npm run dev');
} else {
console.log(' 2. Starte die Anwendung mit: npm run dev');
}
console.log(' 4. Öffne http://localhost:4321 im Browser\n');