From cd1793b248f24ae2d8cb48fbc1627ddd7634f003 Mon Sep 17 00:00:00 2001 From: zanllp Date: Thu, 22 Jan 2026 22:43:58 +0800 Subject: [PATCH] Revert "refactor: Handle invalid tag names gracefully" This reverts commit e1dad21286ae9fb1e2e869488b039f5d459f6fa1. --- 1.json | 0 scripts/iib/api.py | 3 --- scripts/iib/auto_tag.py | 3 +-- scripts/iib/db/datamodel.py | 8 ++++---- scripts/iib/db/update_image_data.py | 30 +++++++++++------------------ 5 files changed, 16 insertions(+), 28 deletions(-) delete mode 100644 1.json diff --git a/1.json b/1.json deleted file mode 100644 index e69de29..0000000 diff --git a/scripts/iib/api.py b/scripts/iib/api.py index e6f9f98..4782456 100644 --- a/scripts/iib/api.py +++ b/scripts/iib/api.py @@ -1177,9 +1177,6 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs): async def add_custom_tag(req: AddCustomTagReq): conn = DataBase.get_conn() tag = Tag.get_or_create(conn, name=req.tag_name, type="custom") - if tag is None: - conn.rollback() - return None conn.commit() return tag diff --git a/scripts/iib/auto_tag.py b/scripts/iib/auto_tag.py index b43a5d9..9daa25e 100644 --- a/scripts/iib/auto_tag.py +++ b/scripts/iib/auto_tag.py @@ -96,7 +96,6 @@ class AutoTagMatcher: tag_name = rule.get("tag") if tag_name: tag = Tag.get_or_create(self.conn, tag_name, "custom") - if tag is not None: - ImageTag(img_id, tag.id).save_or_ignore(self.conn) + ImageTag(img_id, tag.id).save_or_ignore(self.conn) except Exception as e: logger.error(f"Error applying auto tag rule {rule}: {e}") diff --git a/scripts/iib/db/datamodel.py b/scripts/iib/db/datamodel.py index b5da501..02b46f1 100644 --- a/scripts/iib/db/datamodel.py +++ b/scripts/iib/db/datamodel.py @@ -720,9 +720,9 @@ class Tag: if len(name) > 12: return "INVALID_TAG_NAME_TOO_LONG" else: - # Other languages: max 6 words and 40 characters + # Other languages: max 6 words words = name.split() - if len(words) > 6 and len(name) > 40: + if len(words) > 6: return "INVALID_TAG_TOO_MANY_WORDS" return None @@ -798,8 +798,8 @@ class Tag: # Validate tag name error_name = cls.validate_tag_name(name) if error_name: - # Return None for invalid tag names - return None + # Use get_or_create recursively to ensure error tag has an id + return cls.get_or_create(conn, error_name, "error") with closing(conn.cursor()) as cur: cur.execute( diff --git a/scripts/iib/db/update_image_data.py b/scripts/iib/db/update_image_data.py index b120817..04c1b70 100644 --- a/scripts/iib/db/update_image_data.py +++ b/scripts/iib/db/update_image_data.py @@ -189,8 +189,7 @@ def build_single_img_idx(conn, file_path, is_rebuild, safe_save_img_tag): size_str, type="size", ) - if size_tag is not None: - safe_save_img_tag(ImageTag(img.id, size_tag.id)) + safe_save_img_tag(ImageTag(img.id, size_tag.id)) # 确定媒体类型:Image / Video / Audio / Unknown if is_image_file(file_path): media_type_name = "Image" @@ -201,8 +200,7 @@ def build_single_img_idx(conn, file_path, is_rebuild, safe_save_img_tag): else: media_type_name = "Unknown" media_type_tag = Tag.get_or_create(conn, media_type_name, 'Media Type') - if media_type_tag is not None: - safe_save_img_tag(ImageTag(img.id, media_type_tag.id)) + safe_save_img_tag(ImageTag(img.id, media_type_tag.id)) keys = [ "Model", "Sampler", @@ -220,27 +218,21 @@ def build_single_img_idx(conn, file_path, is_rebuild, safe_save_img_tag): continue tag = Tag.get_or_create(conn, str(v), k) - if tag is not None: + safe_save_img_tag(ImageTag(img.id, tag.id)) + if "Hires upscaler" == k: + tag = Tag.get_or_create(conn, 'Hires All', k) + safe_save_img_tag(ImageTag(img.id, tag.id)) + elif "Refiner" == k: + tag = Tag.get_or_create(conn, 'Refiner All', k) safe_save_img_tag(ImageTag(img.id, tag.id)) - if "Hires upscaler" == k: - tag = Tag.get_or_create(conn, 'Hires All', k) - if tag is not None: - safe_save_img_tag(ImageTag(img.id, tag.id)) - elif "Refiner" == k: - tag = Tag.get_or_create(conn, 'Refiner All', k) - if tag is not None: - safe_save_img_tag(ImageTag(img.id, tag.id)) for i in lora: tag = Tag.get_or_create(conn, i["name"], "lora") - if tag is not None: - safe_save_img_tag(ImageTag(img.id, tag.id)) + safe_save_img_tag(ImageTag(img.id, tag.id)) for i in lyco: tag = Tag.get_or_create(conn, i["name"], "lyco") - if tag is not None: - safe_save_img_tag(ImageTag(img.id, tag.id)) + safe_save_img_tag(ImageTag(img.id, tag.id)) for k in pos: tag = Tag.get_or_create(conn, k, "pos") - if tag is not None: - safe_save_img_tag(ImageTag(img.id, tag.id)) + safe_save_img_tag(ImageTag(img.id, tag.id)) AutoTagMatcher.get_instance(conn).apply(img.id, parsed_params) \ No newline at end of file