|
const express = require('express'); |
|
const { exec } = require('child_process'); |
|
|
|
const app = express(); |
|
const PORT = 7860; |
|
|
|
app.get('/', (req, res) => { |
|
res.send('🎬 Welcome to yt-dlp API'); |
|
}); |
|
|
|
app.get('/download', async (req, res) => { |
|
const url = req.query.url; |
|
if (!url) return res.status(400).json({ error: 'Missing url parameter' }); |
|
|
|
const command = `yt-dlp -J "${url}"`; |
|
|
|
exec(command, { maxBuffer: 1024 * 1000 }, (err, stdout, stderr) => { |
|
if (err) return res.status(500).json({ error: stderr || err.message }); |
|
try { |
|
const data = JSON.parse(stdout); |
|
res.json({ |
|
title: data.title, |
|
uploader: data.uploader, |
|
duration: data.duration, |
|
formats: data.formats.map(f => ({ |
|
format_id: f.format_id, |
|
ext: f.ext, |
|
resolution: f.resolution || f.height + 'p', |
|
url: f.url |
|
})) |
|
}); |
|
} catch (e) { |
|
res.status(500).json({ error: 'Failed to parse yt-dlp output' }); |
|
} |
|
}); |
|
}); |
|
|
|
app.listen(PORT, () => { |
|
console.log(`API server running on http://localhost:${PORT}`); |
|
}); |