summaryrefslogtreecommitdiffstats
path: root/src/tasks.ts
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2025-04-25 11:23:26 +0300
committerJan Tuomi <jan@jantuomi.fi>2025-04-25 11:23:26 +0300
commit7c9a30055ffacc9304f889040abb9d39a7565684 (patch)
treec2a41a9f48e528a1126002503add663c989f82cd /src/tasks.ts
parentf05a0bb2b3433fb8c12209375ff8785916b9c841 (diff)
Remove puppeteer based scraping, use yt-dlp
Diffstat (limited to 'src/tasks.ts')
-rw-r--r--src/tasks.ts44
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[] = [];