diff --git a/utils/videos.js b/utils/videos.js new file mode 100644 index 0000000..a7bd343 --- /dev/null +++ b/utils/videos.js @@ -0,0 +1,49 @@ +import os from 'node:os'; +import { exec } from 'node:child_process'; + +export default { + downloadVideo, + upload, + ffmpeg +}; +async function downloadVideo(url, output, format = 'bestvideo*+bestaudio/best') { + await new Promise((resolve, reject) => { + exec(`./bin/yt-dlp -f ${format} ${url} -o "${os.tmpdir()}/${output}.%(ext)s" --force-overwrites`, (err, stdout, stderr) => { + if (err) { + reject(stderr); + } + if (stderr) { + console.error(stderr); + } + resolve(stdout); + }); + }); +} + +async function upload(file) { + return await new Promise((resolve, reject) => { + exec(`./bin/upload.sh ${file}`, (err, stdout, stderr) => { + if (err) { + reject(stderr); + } + if (stderr) { + console.error(stderr); + } + resolve(stdout); + }); + }); +} + +async function ffmpeg(command) { + return await new Promise((resolve, reject) => { + exec(`ffmpeg ${command}`, (err, stdout, stderr) => { + if (err) { + reject(stderr); + } + if (stderr) { + console.error(stderr); + } + resolve(stdout); + }); + }); +} \ No newline at end of file