From 1b4f9f39ad41562b13fb7bec98048bf7774478ff Mon Sep 17 00:00:00 2001 From: lifegpc Date: Thu, 22 Jun 2023 21:56:33 +0800 Subject: [PATCH] Update --- routes/api/filemeta.ts | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/routes/api/filemeta.ts b/routes/api/filemeta.ts index 3137777..659a25d 100644 --- a/routes/api/filemeta.ts +++ b/routes/api/filemeta.ts @@ -72,13 +72,11 @@ export const handler: Handlers = { typeof b.is_nsfw === "boolean" && typeof b.is_ad === "boolean" ) { - const excludes: Set = - // @ts-ignore Any - Array.isArray(b.excludes) && b.excludes.every((d) => - typeof d === "string" - ) - ? new Set(b.excludes) - : new Set(); + const excludes: Set = Array.isArray(b.excludes) && + // @ts-ignore Any + b.excludes.every((d) => typeof d === "string") + ? new Set(b.excludes) + : new Set(); return put_gallery_filemeta( b.gid, b.is_nsfw, @@ -86,6 +84,25 @@ export const handler: Handlers = { excludes, ); } else return return_error(3, "Invalid parameters."); + } else if ( + Array.isArray(b.tokens) && + // @ts-ignore Any + b.tokens.every((d) => typeof d === "string") + ) { + if ( + typeof b.is_nsfw === "boolean" && + typeof b.is_ad === "boolean" + ) { + const m = get_task_manager(); + for (const token of b.tokens) { + m.db.add_filemeta({ + token, + is_nsfw: b.is_nsfw, + is_ad: b.is_ad, + }); + } + return return_data({}); + } else return return_error(3, "Invalid parameters."); } return return_error(5, "Unknown JSON format."); } else if ( @@ -102,6 +119,7 @@ export const handler: Handlers = { const gid = await parse_int(d.get("gid"), null); const is_nsfw = await parse_bool(d.get("is_nsfw"), null); const is_ad = await parse_bool(d.get("is_ad"), null); + const tokens = await get_string(d.get("tokens")); if (is_nsfw === null || is_ad === null) { return return_error(3, "Invalid parameters."); } @@ -111,6 +129,13 @@ export const handler: Handlers = { const e = await get_string(d.get("excludes")); const excludes = e ? new Set(e.split(",")) : new Set(); return put_gallery_filemeta(gid, is_nsfw, is_ad, excludes); + } else if (tokens) { + const ts = new Set(tokens.split(",")); + const m = get_task_manager(); + for (const token of ts) { + m.db.add_filemeta({ token, is_nsfw, is_ad }); + } + return return_data({}); } } return return_error(4, "Unknown format.");