diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2025-04-25 11:23:26 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2025-04-25 11:23:26 +0300 |
| commit | 7c9a30055ffacc9304f889040abb9d39a7565684 (patch) | |
| tree | c2a41a9f48e528a1126002503add663c989f82cd /src/tasks.ts | |
| parent | f05a0bb2b3433fb8c12209375ff8785916b9c841 (diff) | |
Remove puppeteer based scraping, use yt-dlp
Diffstat (limited to 'src/tasks.ts')
| -rw-r--r-- | src/tasks.ts | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/src/tasks.ts b/src/tasks.ts index 8fb1b2f..0646da5 100644 --- a/src/tasks.ts +++ b/src/tasks.ts @@ -1,8 +1,44 @@ -import { InstagramTask } from "./instagram_task"; -import { TikTokTask } from "./tiktok_task"; +import { asyncExec } from "./utils"; +import fs from "fs"; +export const checkIfYtdlpIsInstalled = async () => { + try { + await asyncExec("yt-dlp --version"); + return true; + } catch (e) { + console.error("yt-dlp is not installed or available in PATH", e); + return false; + } +}; + +export const runDownloadUrlTask = async (task: Task) => { + try { + const filename = "veeti.mp4"; + // remove the file if it exists + try { + fs.rmSync(filename); + } catch (e: any) { + if (e.code !== "ENOENT") { + console.error("Error deleting file", e); + } + } -// union of possible task types -export type Task = InstagramTask | TikTokTask; + const { stdout } = await asyncExec( + `yt-dlp -o "downloads/${filename}" "${task.url}"`, + ); + console.log(stdout); + task.respondWithFile(filename); + } catch (e) { + console.error("Error downloading URL", e); + throw e; + } +}; + +export type Task = { + url: string; + type: "download_url"; + respondWithFile: (file: string) => void; + respondTaskFailed: (err: unknown) => void; +}; const taskQueue: Task[] = []; |
