aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-05-18 12:45:12 +0200
committermetamuffin <metamuffin@disroot.org>2025-05-18 12:45:12 +0200
commit0669d3871297abae36f0456e0d0042bf861afce8 (patch)
treed5bfaeb96020ca0611595b629d444cbdbca45b42 /scripts
parent4271431d21840f5b84bb238babc8e80fca638d2a (diff)
downloadisda-0669d3871297abae36f0456e0d0042bf861afce8.tar
isda-0669d3871297abae36f0456e0d0042bf861afce8.tar.bz2
isda-0669d3871297abae36f0456e0d0042bf861afce8.tar.zst
complete tasks from files
Diffstat (limited to 'scripts')
-rw-r--r--scripts/complete_from_files.ts36
-rw-r--r--scripts/enqueue.ts4
2 files changed, 39 insertions, 1 deletions
diff --git a/scripts/complete_from_files.ts b/scripts/complete_from_files.ts
new file mode 100644
index 0000000..6aec7a2
--- /dev/null
+++ b/scripts/complete_from_files.ts
@@ -0,0 +1,36 @@
+
+const ws = new WebSocket(Deno.args[0])
+const root = Deno.args[1]
+
+async function traverse(path: string) {
+ console.log(`> ${path}`);
+ for await (const e of Deno.readDir(path)) {
+ if (e.isDirectory) await traverse(path + "/" + e.name)
+ else if (e.isFile) mark_complete(e.name)
+ }
+}
+
+let counter = 0;
+function mark_complete(name: string) {
+ // TODO other platforms
+ const r = /([A-Za-z0-9-_]{11})\.mkv/g.exec(name)
+ if (!r) return
+ const id = r[1]
+ counter += 1
+ ws.send(JSON.stringify({ t: "complete", key: `youtube:${id}`, force: true }))
+}
+
+ws.onerror = () => console.error("ws error")
+ws.onclose = () => console.error("ws closed")
+ws.onopen = async () => {
+ console.log("ws open");
+ ws.send(JSON.stringify({ t: "register", name: "complete from files", task_kinds: [] }))
+ await traverse(root)
+ console.log(`done, ${counter} tasks marked as complete`);
+ setTimeout(() => Deno.exit(0), 200) // not sure if websockets are flushed since they're instant
+}
+ws.onmessage = ev => {
+ if (typeof ev.data != "string") return
+ const p = JSON.parse(ev.data)
+ if (p.t == "error") console.error(`error: ${p.message}`);
+}
diff --git a/scripts/enqueue.ts b/scripts/enqueue.ts
index e6e3958..934f49d 100644
--- a/scripts/enqueue.ts
+++ b/scripts/enqueue.ts
@@ -4,6 +4,8 @@ const note_filter = Deno.args.length >= 3 ? Deno.args[2] : ""
const ws = new WebSocket(Deno.args[0])
+const requeue = Deno.env.has("REQUEUE")
+
function run_enqueue() {
let kind = "http"
for (const line of file.split("\n")) {
@@ -16,7 +18,7 @@ function run_enqueue() {
if (note_filter.length && note != note_filter) continue
const key = `${kind}:${id}`;
ws.send(JSON.stringify({ t: "metadata", key, data: { output: name, title: name } }))
- ws.send(JSON.stringify({ t: "enqueue", key }))
+ ws.send(JSON.stringify({ t: "enqueue", key, ignore_complete: requeue }))
}
}
ws.send(JSON.stringify({ t: "save" }))