Bump version to 0.9.7; update localization files, fix settings window, Linux build, fix LoRA parsing, remove uncessary default tag
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Gitea/kapitanbooru-uploader/pipeline/head This commit looks good
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Gitea/kapitanbooru-uploader/pipeline/head This commit looks good
				
			This commit is contained in:
		| @@ -35,7 +35,7 @@ class Core: | |||||||
|     """ |     """ | ||||||
|  |  | ||||||
|     def __init__(self, settings: Settings, gui_mode: bool = True): |     def __init__(self, settings: Settings, gui_mode: bool = True): | ||||||
|         self.version = "0.9.6" |         self.version = "0.9.7" | ||||||
|         self.acknowledged_version = parse_version(self.version) |         self.acknowledged_version = parse_version(self.version) | ||||||
|         self.settings = settings |         self.settings = settings | ||||||
|         self.tags_repo = TagsRepo(settings) |         self.tags_repo = TagsRepo(settings) | ||||||
|   | |||||||
| @@ -157,6 +157,7 @@ class ImageBrowser(tk.Tk): | |||||||
|         # Rebuild UI |         # Rebuild UI | ||||||
|         self.create_menu() |         self.create_menu() | ||||||
|         self.create_widgets() |         self.create_widgets() | ||||||
|  |         self.update_idletasks() | ||||||
|  |  | ||||||
|     def adjust_text_widget_height(self, widget): |     def adjust_text_widget_height(self, widget): | ||||||
|         """ |         """ | ||||||
| @@ -313,7 +314,6 @@ class ImageBrowser(tk.Tk): | |||||||
|     def open_settings(self): |     def open_settings(self): | ||||||
|         settings_window = tk.Toplevel(self) |         settings_window = tk.Toplevel(self) | ||||||
|         settings_window.title(_("Ustawienia")) |         settings_window.title(_("Ustawienia")) | ||||||
|         settings_window.geometry("300x430")  # Enlarged vertically |  | ||||||
|         settings_window.resizable(False, False)  # Disable resizing |         settings_window.resizable(False, False)  # Disable resizing | ||||||
|         settings_window.grab_set() |         settings_window.grab_set() | ||||||
|  |  | ||||||
| @@ -394,6 +394,17 @@ class ImageBrowser(tk.Tk): | |||||||
|         btn_save = tk.Button(settings_window, text=_("Zapisz"), command=save_and_close) |         btn_save = tk.Button(settings_window, text=_("Zapisz"), command=save_and_close) | ||||||
|         btn_save.pack(pady=10) |         btn_save.pack(pady=10) | ||||||
|  |  | ||||||
|  |         # Let Tkinter calculate the required size for all widgets | ||||||
|  |         settings_window.update_idletasks() | ||||||
|  |         width = 300 | ||||||
|  |         height = settings_window.winfo_reqheight() | ||||||
|  |         settings_window.geometry(f"{width}x{height}") | ||||||
|  |  | ||||||
|  |         # Center the window on the screen | ||||||
|  |         x = self.winfo_rootx() + (self.winfo_width() // 2) - (width // 2) | ||||||
|  |         y = self.winfo_rooty() + (self.winfo_height() // 2) - (height // 2) | ||||||
|  |         settings_window.geometry(f"+{x}+{y}") | ||||||
|  |  | ||||||
|     def create_widgets(self): |     def create_widgets(self): | ||||||
|         # Główna ramka – trzy kolumny |         # Główna ramka – trzy kolumny | ||||||
|         main_frame = tk.Frame(self) |         main_frame = tk.Frame(self) | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: Kapitanbooru Uploader 0.9.6\n" | "Project-Id-Version: Kapitanbooru Uploader 0.9.7\n" | ||||||
| "Report-Msgid-Bugs-To: kapitan@mlesniak.pl\n" | "Report-Msgid-Bugs-To: kapitan@mlesniak.pl\n" | ||||||
| "POT-Creation-Date: 2025-06-26 18:21+0200\n" | "POT-Creation-Date: 2025-06-26 18:21+0200\n" | ||||||
| "Content-Type: text/plain; charset=UTF-8\n" | "Content-Type: text/plain; charset=UTF-8\n" | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: Kapitanbooru Uploader 0.9.6\n" | "Project-Id-Version: Kapitanbooru Uploader 0.9.7\n" | ||||||
| "Report-Msgid-Bugs-To: kapitan@mlesniak.pl\n" | "Report-Msgid-Bugs-To: kapitan@mlesniak.pl\n" | ||||||
| "POT-Creation-Date: 2025-06-26 18:21+0200\n" | "POT-Creation-Date: 2025-06-26 18:21+0200\n" | ||||||
| "Language: pl\n" | "Language: pl\n" | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| networkx==3.4.2 | networkx==3.4.2 | ||||||
| Pillow==11.1.0 | Pillow==11.1.0 | ||||||
| pywin32==309 | pywin32==309; sys_platform == 'win32' | ||||||
| Requests==2.32.3 | requests==2.32.3 | ||||||
| wdtagger[cuda12-nightly]==0.14.0 | wdtagger[cuda12-nightly]==0.14.0 | ||||||
| bs4==0.0.2 | bs4==0.0.2 | ||||||
| tomli==2.2.1 | tomli==2.2.1 | ||||||
| @@ -112,7 +112,7 @@ class Settings: | |||||||
|         self.username = "" |         self.username = "" | ||||||
|         self.password = "" |         self.password = "" | ||||||
|         self.base_url = "http://192.168.1.11:8001" |         self.base_url = "http://192.168.1.11:8001" | ||||||
|         self.default_tags = "artist:kapitan meta:ai-generated" |         self.default_tags = "meta:ai-generated" | ||||||
|         self.cache_expiry = 604800  # 7 dni w sekundach |         self.cache_expiry = 604800  # 7 dni w sekundach | ||||||
|         self.browser = "" |         self.browser = "" | ||||||
|         self.i18n = _ |         self.i18n = _ | ||||||
| @@ -138,7 +138,7 @@ class Settings: | |||||||
|         self.username = "" |         self.username = "" | ||||||
|         self.password = "" |         self.password = "" | ||||||
|         self.base_url = "http://192.168.1.11:8001" |         self.base_url = "http://192.168.1.11:8001" | ||||||
|         self.default_tags = "artist:kapitan meta:ai-generated" |         self.default_tags = "meta:ai-generated" | ||||||
|         self.cache_expiry = 604800  # 7 dni w sekundach |         self.cache_expiry = 604800  # 7 dni w sekundach | ||||||
|         self.browser = "" |         self.browser = "" | ||||||
|         self.i18n.set_language("en") |         self.i18n.set_language("en") | ||||||
|   | |||||||
| @@ -60,6 +60,8 @@ COEFFICIENT_PATTERN = re.compile(r"^.*?(:\d+|\d+\.\d+)$") | |||||||
| UNESCAPED_PATTERN = re.compile(r"(?<!\\)[\(\)\[\]]+") | UNESCAPED_PATTERN = re.compile(r"(?<!\\)[\(\)\[\]]+") | ||||||
| SLASH_PATTERN = re.compile(r"\\+(?=[\(\)](?!\^))") | SLASH_PATTERN = re.compile(r"\\+(?=[\(\)](?!\^))") | ||||||
| WHITESPACE_PATTERN = re.compile(r"\s+|_+") | WHITESPACE_PATTERN = re.compile(r"\s+|_+") | ||||||
|  | LORAHASH_PATTERN = re.compile(r"(?P<name>.+?)\:\s(?P<hash>[0-9a-f]+),?\s?") | ||||||
|  | LORA_IN_PROMPT_PATTERN = re.compile(r"\s*<lora:(?P<name>.+?):(?P<weight>[-+]?\d*\.?\d+)>\s*") | ||||||
| AUTO_METATAGS = [ | AUTO_METATAGS = [ | ||||||
|     "absurdres", |     "absurdres", | ||||||
|     "high_score", |     "high_score", | ||||||
| @@ -199,7 +201,7 @@ def extract_parameters(img: Image, file_path: str) -> str: | |||||||
|     return parameters |     return parameters | ||||||
|  |  | ||||||
|  |  | ||||||
| def parse_parameters(param_str, tags_repo: TagsRepo) -> str: | def parse_parameters(param_str:str, tags_repo: TagsRepo) -> str: | ||||||
|     """ |     """ | ||||||
|     Funkcja do parsowania zawartości pola 'parameters' z pliku PNG. |     Funkcja do parsowania zawartości pola 'parameters' z pliku PNG. | ||||||
|     """ |     """ | ||||||
| @@ -207,11 +209,23 @@ def parse_parameters(param_str, tags_repo: TagsRepo) -> str: | |||||||
|     if not match: |     if not match: | ||||||
|         print(_("Nie można sparsować parametrów.")) |         print(_("Nie można sparsować parametrów.")) | ||||||
|         return "" |         return "" | ||||||
|  |     tags = match.group("prompt") | ||||||
|     tags = match.group("prompt").removesuffix(",").replace("\n", " ").split(",") |     tags = match.group("prompt").removesuffix(",").replace("\n", " ").split(",") | ||||||
|      |      | ||||||
|     if "pony" in match.group("model"): |     if "pony" in match.group("model"): | ||||||
|         tags = [tag.strip() for tag in tags if not tag.strip().startswith("score_")] |         tags = [tag.strip() for tag in tags if not tag.strip().startswith("score_")] | ||||||
|         tags = tags[1:] |         tags = tags[1:] | ||||||
|  |     tags = set([LORA_IN_PROMPT_PATTERN.sub("", tag) for tag in tags]) | ||||||
|  |     if "lora_hashes" in match.groupdict() and match.group("lora_hashes"): | ||||||
|  |         lora_hashes = match.group("lora_hashes") | ||||||
|  |         for lora_match in LORAHASH_PATTERN.finditer(lora_hashes): | ||||||
|  |             lora_name = lora_match.group("name").strip() | ||||||
|  |             if lora_name: | ||||||
|  |                 if lora_name=="ElfIL" and "e_lf": | ||||||
|  |                     tags.discard("e_lf") | ||||||
|  |                     tags.add("reanette_elfelt") | ||||||
|  |                 elif lora_name=="Illustrious_Mikuneki_Style": | ||||||
|  |                     tags.add("mikuneki") | ||||||
|     tags = set([WHITESPACE_PATTERN.sub("_", param.strip()) for param in tags]) |     tags = set([WHITESPACE_PATTERN.sub("_", param.strip()) for param in tags]) | ||||||
|     tags = set( |     tags = set( | ||||||
|         [ |         [ | ||||||
|   | |||||||
| @@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta" | |||||||
|  |  | ||||||
| [project] | [project] | ||||||
| name = "kapitanbooru-uploader" | name = "kapitanbooru-uploader" | ||||||
| version = "0.9.6" | version = "0.9.7" | ||||||
| description = "A GUI application for uploading images to KapitanBooru" | description = "A GUI application for uploading images to KapitanBooru" | ||||||
| authors = [{ name = "Michał Leśniak", email = "kapitan@mlesniak.pl" }] | authors = [{ name = "Michał Leśniak", email = "kapitan@mlesniak.pl" }] | ||||||
| dependencies = [ | dependencies = [ | ||||||
|     "networkx==3.4.2", |     "networkx==3.4.2", | ||||||
|     "Pillow==11.1.0", |     "Pillow==11.1.0", | ||||||
|     "pywin32==309", |     "pywin32==309; sys_platform == 'win32'", | ||||||
|     "requests==2.32.3", |     "requests==2.32.3", | ||||||
|     "wdtagger==0.14.0", |     "wdtagger==0.14.0", | ||||||
|     "bs4==0.0.2", |     "bs4==0.0.2", | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| networkx==3.4.2 | networkx==3.4.2 | ||||||
| Pillow==11.1.0 | Pillow==11.1.0 | ||||||
| pywin32==309; sys_platform == 'win32' | pywin32==309; sys_platform == 'win32' | ||||||
| Requests==2.32.3 | requests==2.32.3 | ||||||
| wdtagger==0.14.0 | wdtagger==0.14.0 | ||||||
| bs4==0.0.2 | bs4==0.0.2 | ||||||
| tomli==2.2.1 | tomli==2.2.1 | ||||||
		Reference in New Issue
	
	Block a user