From 64f0096f320c8eaa6f436ed22d91e098ab085864 Mon Sep 17 00:00:00 2001 From: pax Date: Thu, 9 Apr 2026 23:01:58 -0500 Subject: [PATCH] library: fix tag search for templated filenames MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tag search filter in refresh() used f.stem.isdigit() to extract post_id — templated filenames like artist_12345.jpg failed the check and got filtered out even when their post_id matched the search query. Fix: look up post_id via db.get_library_post_id_by_filename first (handles templated filenames), fall back to int(stem) for legacy digit-stem files. Same pattern as the delete and saved-dot fixes from earlier in this refactor. --- booru_viewer/gui/library.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/booru_viewer/gui/library.py b/booru_viewer/gui/library.py index a53b4d2..4dc6c13 100644 --- a/booru_viewer/gui/library.py +++ b/booru_viewer/gui/library.py @@ -158,7 +158,16 @@ class LibraryView(QWidget): if query and self._db: matching_ids = self._db.search_library_meta(query) if matching_ids: - self._files = [f for f in self._files if f.stem.isdigit() and int(f.stem) in matching_ids] + def _file_matches(f: Path) -> bool: + # Templated filenames: look up post_id via library_meta.filename + pid = self._db.get_library_post_id_by_filename(f.name) + if pid is not None: + return pid in matching_ids + # Legacy digit-stem fallback + if f.stem.isdigit(): + return int(f.stem) in matching_ids + return False + self._files = [f for f in self._files if _file_matches(f)] else: self._files = []