aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDrashi <drashivus@gmail.com>2025-09-07 14:30:03 +0200
committerGitHub <noreply@github.com>2025-09-07 13:30:03 +0100
commit09948144eb06260f7773d079b53fce551f55188e (patch)
treea0c7f6edda61bec6ad771f8809b10fe7be383fc9
parent5f870549ce689c4c35df6a322c931fe78c51d5ac (diff)
downloadkarakeep-09948144eb06260f7773d079b53fce551f55188e.tar.zst
feat: add gif asset type support (#1876)
* feat: add gif asset type support * skip inference for gis --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
-rw-r--r--apps/workers/workers/inference/tagging.ts10
-rw-r--r--packages/shared/assetdb.ts2
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<Awaited<ReturnType<typeof fetchBookmark>>>,
inferenceClient: InferenceClient,
abortSignal: AbortSignal,
-) {
+): Promise<InferenceResponse | null> {
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<string> = new Set<string>([
]);
export const IMAGE_ASSET_TYPES: Set<string> = new Set<string>([
+ ASSET_TYPES.IMAGE_GIF,
ASSET_TYPES.IMAGE_JPEG,
ASSET_TYPES.IMAGE_PNG,
ASSET_TYPES.IMAGE_WEBP,