From 09948144eb06260f7773d079b53fce551f55188e Mon Sep 17 00:00:00 2001 From: Drashi Date: Sun, 7 Sep 2025 14:30:03 +0200 Subject: feat: add gif asset type support (#1876) * feat: add gif asset type support * skip inference for gis --------- Co-authored-by: Mohamed Bassem --- apps/workers/workers/inference/tagging.ts | 10 ++++++++-- packages/shared/assetdb.ts | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/workers/workers/inference/tagging.ts b/apps/workers/workers/inference/tagging.ts index 5697e73a..6dd146af 100644 --- a/apps/workers/workers/inference/tagging.ts +++ b/apps/workers/workers/inference/tagging.ts @@ -15,7 +15,7 @@ import { customPrompts, tagsOnBookmarks, } from "@karakeep/db/schema"; -import { readAsset } from "@karakeep/shared/assetdb"; +import { ASSET_TYPES, readAsset } from "@karakeep/shared/assetdb"; import serverConfig from "@karakeep/shared/config"; import logger from "@karakeep/shared/logger"; import { buildImagePrompt, buildTextPrompt } from "@karakeep/shared/prompts"; @@ -122,7 +122,7 @@ async function inferTagsFromImage( bookmark: NonNullable>>, inferenceClient: InferenceClient, abortSignal: AbortSignal, -) { +): Promise { const { asset, metadata } = await readAsset({ userId: bookmark.userId, assetId: bookmark.asset.assetId, @@ -133,6 +133,12 @@ async function inferTagsFromImage( `[inference][${jobId}] AssetId ${bookmark.asset.assetId} for bookmark ${bookmark.id} not found`, ); } + if (metadata.contentType === ASSET_TYPES.IMAGE_GIF) { + logger.info( + `[inference][${jobId}] Skipping inference for bookmark with id "${bookmark.id}" because it's a GIF.`, + ); + return null; + } const base64 = asset.toString("base64"); return inferenceClient.inferFromImage( diff --git a/packages/shared/assetdb.ts b/packages/shared/assetdb.ts index 7eda80ef..ff87e847 100644 --- a/packages/shared/assetdb.ts +++ b/packages/shared/assetdb.ts @@ -21,6 +21,7 @@ import { QuotaApproved } from "./storageQuota"; const ROOT_PATH = serverConfig.assetsDir; export const enum ASSET_TYPES { + IMAGE_GIF = "image/gif", IMAGE_JPEG = "image/jpeg", IMAGE_PNG = "image/png", IMAGE_WEBP = "image/webp", @@ -39,6 +40,7 @@ export const VIDEO_ASSET_TYPES: Set = new Set([ ]); export const IMAGE_ASSET_TYPES: Set = new Set([ + ASSET_TYPES.IMAGE_GIF, ASSET_TYPES.IMAGE_JPEG, ASSET_TYPES.IMAGE_PNG, ASSET_TYPES.IMAGE_WEBP, -- cgit v1.2.3-70-g09d2