Bump version to 0.6.0 and add artist tag processing functionality
	
		
			
	
		
	
	
		
	
		
			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:
		| @@ -142,7 +142,7 @@ class ImageBrowser(tk.Tk): | ||||
|         super().__init__() | ||||
|         self.title("Kapitanbooru Uploader") | ||||
|         self.geometry("900x600") | ||||
|         self.version = "0.5.2" | ||||
|         self.version = "0.6.0" | ||||
|         self.acknowledged_version = parse_version(self.version) | ||||
|  | ||||
|         self.settings = Settings() | ||||
| @@ -217,6 +217,10 @@ class ImageBrowser(tk.Tk): | ||||
|         # Check every 5 minutes (300,000 ms) | ||||
|         self.after(300000, self._schedule_update_check) | ||||
|  | ||||
|     def is_installed_via_pipx(self): | ||||
|         """Check if the application is installed via pipx""" | ||||
|         return os.environ.get("__PIPX_ORIGIN") == "pipx" | ||||
|  | ||||
|     def _check_for_update(self): | ||||
|         """Check for updates in a background thread""" | ||||
|  | ||||
| @@ -263,7 +267,11 @@ class ImageBrowser(tk.Tk): | ||||
|         formatted_message = message_template.format( | ||||
|             new_version=new_version, | ||||
|             current_version=self.version, | ||||
|             update_command="pip install --upgrade kapitanbooru-uploader", | ||||
|             update_command=( | ||||
|                 "pipx upgrade kapitanbooru-uploader" | ||||
|                 if self.is_installed_via_pipx() | ||||
|                 else "pip install --upgrade kapitanbooru-uploader" | ||||
|             ), | ||||
|         ) | ||||
|  | ||||
|         messagebox.showinfo(title, formatted_message) | ||||
| @@ -513,7 +521,9 @@ class ImageBrowser(tk.Tk): | ||||
|         ] | ||||
|  | ||||
|         for text in content: | ||||
|             ttk.Label(frame, text=text).grid(row=next(row_counter), column=0, sticky=tk.W) | ||||
|             ttk.Label(frame, text=text).grid( | ||||
|                 row=next(row_counter), column=0, sticky=tk.W | ||||
|             ) | ||||
|  | ||||
|         # Repository link | ||||
|         repo_frame = ttk.Frame(frame) | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: Kapitanbooru Uploader 0.5.2\n" | ||||
| "Project-Id-Version: Kapitanbooru Uploader 0.6.0\n" | ||||
| "Report-Msgid-Bugs-To: kapitan@mlesniak.pl\n" | ||||
| "POT-Creation-Date: 2025-03-15 19:42+0100\n" | ||||
| "POT-Creation-Date: 2025-03-16 01:22+0100\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
|  | ||||
| @@ -51,26 +51,26 @@ msgstr "Processing..." | ||||
| msgid "Processing, please wait..." | ||||
| msgstr "Processing, please wait..." | ||||
|  | ||||
| #: ImageBrowser.py:244 | ||||
| #: ImageBrowser.py:248 | ||||
| #, python-brace-format | ||||
| msgid "Update check failed: {error}" | ||||
| msgstr "Update check failed: {error}" | ||||
|  | ||||
| #: ImageBrowser.py:246 | ||||
| #: ImageBrowser.py:250 | ||||
| #, python-brace-format | ||||
| msgid "Malformed pyproject.toml: {error}" | ||||
| msgstr "Malformed pyproject.toml: {error}" | ||||
|  | ||||
| #: ImageBrowser.py:249 | ||||
| #: ImageBrowser.py:253 | ||||
| #, python-brace-format | ||||
| msgid "Unexpected error during update check: {error}" | ||||
| msgstr "Unexpected error during update check: {error}" | ||||
|  | ||||
| #: ImageBrowser.py:256 | ||||
| #: ImageBrowser.py:260 | ||||
| msgid "Update Available" | ||||
| msgstr "Update Available" | ||||
|  | ||||
| #: ImageBrowser.py:258 | ||||
| #: ImageBrowser.py:262 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "A new version {new_version} is available!\n" | ||||
| @@ -83,240 +83,240 @@ msgstr "" | ||||
| "\n" | ||||
| "Update using: {update_command}" | ||||
|  | ||||
| #: ImageBrowser.py:367 | ||||
| #: ImageBrowser.py:375 | ||||
| msgid "Błąd przy otwieraniu pliku" | ||||
| msgstr "Error opening file" | ||||
|  | ||||
| #: ImageBrowser.py:409 | ||||
| #: ImageBrowser.py:417 | ||||
| msgid "Tagger przetworzył:" | ||||
| msgstr "Tagger processed:" | ||||
|  | ||||
| #: ImageBrowser.py:412 | ||||
| #: ImageBrowser.py:420 | ||||
| msgid "Błąd Taggera dla" | ||||
| msgstr "Tagger error for" | ||||
|  | ||||
| #: ImageBrowser.py:438 | ||||
| #: ImageBrowser.py:446 | ||||
| msgid "Otwórz folder" | ||||
| msgstr "Open folder" | ||||
|  | ||||
| #: ImageBrowser.py:441 ImageBrowser.py:728 ImageBrowser.py:944 | ||||
| #: ImageBrowser.py:952 | ||||
| #: ImageBrowser.py:449 ImageBrowser.py:738 ImageBrowser.py:954 | ||||
| #: ImageBrowser.py:962 | ||||
| msgid "Wyślij" | ||||
| msgstr "Send" | ||||
|  | ||||
| #: ImageBrowser.py:444 ImageBrowser.py:937 | ||||
| #: ImageBrowser.py:452 ImageBrowser.py:947 | ||||
| msgid "Wyślij wszystko" | ||||
| msgstr "Send all" | ||||
|  | ||||
| #: ImageBrowser.py:448 ImageBrowser.py:938 ImageBrowser.py:944 | ||||
| #: ImageBrowser.py:456 ImageBrowser.py:948 ImageBrowser.py:954 | ||||
| msgid "Podmień tagi" | ||||
| msgstr "Replace tags" | ||||
|  | ||||
| #: ImageBrowser.py:451 ImageBrowser.py:939 | ||||
| #: ImageBrowser.py:459 ImageBrowser.py:949 | ||||
| msgid "Otwórz post" | ||||
| msgstr "Open post" | ||||
|  | ||||
| #: ImageBrowser.py:454 | ||||
| #: ImageBrowser.py:462 | ||||
| msgid "Zakończ" | ||||
| msgstr "Finish" | ||||
|  | ||||
| #: ImageBrowser.py:456 | ||||
| #: ImageBrowser.py:464 | ||||
| msgid "Plik" | ||||
| msgstr "File" | ||||
|  | ||||
| #: ImageBrowser.py:460 ImageBrowser.py:557 | ||||
| #: ImageBrowser.py:468 ImageBrowser.py:567 | ||||
| msgid "Ustawienia" | ||||
| msgstr "Settings" | ||||
|  | ||||
| #: ImageBrowser.py:463 | ||||
| #: ImageBrowser.py:471 | ||||
| msgid "Wyczyść cache Taggera" | ||||
| msgstr "Clear Tagger cache" | ||||
|  | ||||
| #: ImageBrowser.py:466 | ||||
| #: ImageBrowser.py:474 | ||||
| msgid "Zregeneruj bazę tagów" | ||||
| msgstr "Regenerate tag database" | ||||
|  | ||||
| #: ImageBrowser.py:468 | ||||
| #: ImageBrowser.py:476 | ||||
| msgid "Opcje" | ||||
| msgstr "Options" | ||||
|  | ||||
| #: ImageBrowser.py:471 | ||||
| #: ImageBrowser.py:479 | ||||
| msgid "About" | ||||
| msgstr "About" | ||||
|  | ||||
| #: ImageBrowser.py:472 | ||||
| #: ImageBrowser.py:480 | ||||
| msgid "Help" | ||||
| msgstr "Help" | ||||
|  | ||||
| #: ImageBrowser.py:477 | ||||
| #: ImageBrowser.py:485 | ||||
| msgid "About Kapitanbooru Uploader" | ||||
| msgstr "About Kapitanbooru Uploader" | ||||
|  | ||||
| #: ImageBrowser.py:494 | ||||
| #: ImageBrowser.py:502 | ||||
| #, python-brace-format | ||||
| msgid "A new version {new_version} is available!" | ||||
| msgstr "A new version {new_version} is available!" | ||||
|  | ||||
| #: ImageBrowser.py:501 | ||||
| #: ImageBrowser.py:509 | ||||
| #, python-brace-format | ||||
| msgid "Current version: {version}" | ||||
| msgstr "Current version: {version}" | ||||
|  | ||||
| #: ImageBrowser.py:503 | ||||
| #: ImageBrowser.py:511 | ||||
| msgid "A GUI application for uploading images to KapitanBooru." | ||||
| msgstr "A GUI application for uploading images to KapitanBooru." | ||||
|  | ||||
| #: ImageBrowser.py:504 | ||||
| #: ImageBrowser.py:512 | ||||
| msgid "Features include image upload, tag management, automatic" | ||||
| msgstr "Features include image upload, tag management, automatic" | ||||
|  | ||||
| #: ImageBrowser.py:505 | ||||
| #: ImageBrowser.py:513 | ||||
| msgid "tagging with wdtagger, and cache management." | ||||
| msgstr "tagging with wdtagger, and cache management." | ||||
|  | ||||
| #: ImageBrowser.py:507 | ||||
| #: ImageBrowser.py:515 | ||||
| msgid "Authors:" | ||||
| msgstr "Authors:" | ||||
|  | ||||
| #: ImageBrowser.py:510 | ||||
| #: ImageBrowser.py:518 | ||||
| msgid "License: MIT License" | ||||
| msgstr "License: MIT License" | ||||
|  | ||||
| #: ImageBrowser.py:521 | ||||
| #: ImageBrowser.py:531 | ||||
| msgid "Repository:" | ||||
| msgstr "Repository:" | ||||
|  | ||||
| #: ImageBrowser.py:530 | ||||
| #: ImageBrowser.py:540 | ||||
| msgid "Website:" | ||||
| msgstr "Website:" | ||||
|  | ||||
| #: ImageBrowser.py:541 | ||||
| #: ImageBrowser.py:551 | ||||
| msgid "Close" | ||||
| msgstr "Close" | ||||
|  | ||||
| #: ImageBrowser.py:549 ImageBrowser.py:552 | ||||
| #: ImageBrowser.py:559 ImageBrowser.py:562 | ||||
| msgid "Cache" | ||||
| msgstr "Cache" | ||||
|  | ||||
| #: ImageBrowser.py:549 | ||||
| #: ImageBrowser.py:559 | ||||
| msgid "Cache Taggera zostało wyczyszczone." | ||||
| msgstr "Tagger cache has been cleared." | ||||
|  | ||||
| #: ImageBrowser.py:552 | ||||
| #: ImageBrowser.py:562 | ||||
| msgid "Błąd przy czyszczeniu cache:" | ||||
| msgstr "Error clearing cache:" | ||||
|  | ||||
| #: ImageBrowser.py:562 | ||||
| #: ImageBrowser.py:572 | ||||
| msgid "Login:" | ||||
| msgstr "Login:" | ||||
|  | ||||
| #: ImageBrowser.py:568 | ||||
| #: ImageBrowser.py:578 | ||||
| msgid "Hasło:" | ||||
| msgstr "Password:" | ||||
|  | ||||
| #: ImageBrowser.py:574 | ||||
| #: ImageBrowser.py:584 | ||||
| msgid "Base URL:" | ||||
| msgstr "Base URL:" | ||||
|  | ||||
| #: ImageBrowser.py:580 | ||||
| #: ImageBrowser.py:590 | ||||
| msgid "Default Tags:" | ||||
| msgstr "Default Tags:" | ||||
|  | ||||
| #: ImageBrowser.py:586 | ||||
| #: ImageBrowser.py:596 | ||||
| msgid "Browser:" | ||||
| msgstr "Browser:" | ||||
|  | ||||
| #: ImageBrowser.py:600 | ||||
| #: ImageBrowser.py:610 | ||||
| msgid "Language:" | ||||
| msgstr "Language:" | ||||
|  | ||||
| #: ImageBrowser.py:632 | ||||
| #: ImageBrowser.py:642 | ||||
| msgid "Zapisz" | ||||
| msgstr "Save" | ||||
|  | ||||
| #: ImageBrowser.py:674 | ||||
| #: ImageBrowser.py:684 | ||||
| msgid "PNG Tags" | ||||
| msgstr "PNG Tags" | ||||
|  | ||||
| #: ImageBrowser.py:686 | ||||
| #: ImageBrowser.py:696 | ||||
| msgid "Tagger Tags" | ||||
| msgstr "Tagger Tags" | ||||
|  | ||||
| #: ImageBrowser.py:700 | ||||
| #: ImageBrowser.py:710 | ||||
| msgid "Manual Tags" | ||||
| msgstr "Manual Tags" | ||||
|  | ||||
| #: ImageBrowser.py:708 | ||||
| #: ImageBrowser.py:718 | ||||
| msgid "Final Tags" | ||||
| msgstr "Final Tags" | ||||
|  | ||||
| #: ImageBrowser.py:733 | ||||
| #: ImageBrowser.py:743 | ||||
| msgid "Wyświetl" | ||||
| msgstr "Display" | ||||
|  | ||||
| #: ImageBrowser.py:750 | ||||
| #: ImageBrowser.py:760 | ||||
| msgid "Przetworzono tagi:" | ||||
| msgstr "Processed tags:" | ||||
|  | ||||
| #: ImageBrowser.py:750 ImageBrowser.py:751 ImageBrowser.py:752 | ||||
| #: ImageBrowser.py:760 ImageBrowser.py:761 ImageBrowser.py:762 | ||||
| msgid "plików" | ||||
| msgstr "files" | ||||
|  | ||||
| #: ImageBrowser.py:751 | ||||
| #: ImageBrowser.py:761 | ||||
| msgid "Zweryfikowano status uploadu:" | ||||
| msgstr "Upload status verified:" | ||||
|  | ||||
| #: ImageBrowser.py:752 | ||||
| #: ImageBrowser.py:762 | ||||
| msgid "Zuploadowano:" | ||||
| msgstr "Uploaded:" | ||||
|  | ||||
| #: ImageBrowser.py:780 | ||||
| #: ImageBrowser.py:790 | ||||
| msgid "Wybierz folder z obrazkami PNG" | ||||
| msgstr "Select folder with PNG images" | ||||
|  | ||||
| #: ImageBrowser.py:813 | ||||
| #: ImageBrowser.py:823 | ||||
| msgid "Informacja" | ||||
| msgstr "Information" | ||||
|  | ||||
| #: ImageBrowser.py:813 | ||||
| #: ImageBrowser.py:823 | ||||
| msgid "Brak plików PNG w wybranym folderze." | ||||
| msgstr "No PNG files in the selected folder." | ||||
|  | ||||
| #: ImageBrowser.py:896 | ||||
| #: ImageBrowser.py:906 | ||||
| msgid "Błąd podczas sprawdzania paczki uploadu:" | ||||
| msgstr "Error while checking upload package:" | ||||
|  | ||||
| #: ImageBrowser.py:972 | ||||
| #: ImageBrowser.py:982 | ||||
| msgid "Błąd przy obliczaniu MD5:" | ||||
| msgstr "Error calculating MD5:" | ||||
|  | ||||
| #: ImageBrowser.py:1028 | ||||
| #: ImageBrowser.py:1038 | ||||
| msgid "Błąd" | ||||
| msgstr "Error" | ||||
|  | ||||
| #: ImageBrowser.py:1028 | ||||
| #: ImageBrowser.py:1038 | ||||
| msgid "Nie można załadować obrazka:" | ||||
| msgstr "Unable to load image:" | ||||
|  | ||||
| #: ImageBrowser.py:1238 ImageBrowser.py:1248 | ||||
| #: ImageBrowser.py:1248 ImageBrowser.py:1258 | ||||
| #, python-brace-format | ||||
| msgid "Warning: Tag '{tag}' not found in implication graph" | ||||
| msgstr "Warning: Tag '{tag}' not found in implication graph" | ||||
|  | ||||
| #: ImageBrowser.py:1478 | ||||
| #: ImageBrowser.py:1488 | ||||
| msgid "Tagger przetwarza..." | ||||
| msgstr "Tagger processing..." | ||||
|  | ||||
| #: ImageBrowser.py:1503 | ||||
| #: ImageBrowser.py:1513 | ||||
| #, python-brace-format | ||||
| msgid "Wysyłam plik {base_file_name}..." | ||||
| msgstr "Sending file {base_file_name}..." | ||||
|  | ||||
| #: ImageBrowser.py:1544 | ||||
| #: ImageBrowser.py:1554 | ||||
| msgid "Wysyłanie zakończone powodzeniem!" | ||||
| msgstr "Upload completed successfully!" | ||||
|  | ||||
| #: ImageBrowser.py:1548 ImageBrowser.py:1557 | ||||
| #: ImageBrowser.py:1558 ImageBrowser.py:1567 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Wysyłanie zakończone błędem.\n" | ||||
| @@ -327,40 +327,40 @@ msgstr "" | ||||
| "Status: {status_code}\n" | ||||
| "Content: {text}" | ||||
|  | ||||
| #: ImageBrowser.py:1563 ImageBrowser.py:1566 | ||||
| #: ImageBrowser.py:1573 ImageBrowser.py:1576 | ||||
| msgid "Wysyłanie" | ||||
| msgstr "Uploading" | ||||
|  | ||||
| #: ImageBrowser.py:1579 | ||||
| #: ImageBrowser.py:1589 | ||||
| msgid "Błąd wysyłania" | ||||
| msgstr "Upload error" | ||||
|  | ||||
| #: ImageBrowser.py:1599 | ||||
| #: ImageBrowser.py:1609 | ||||
| msgid "Błąd edycji" | ||||
| msgstr "Edit error" | ||||
|  | ||||
| #: ImageBrowser.py:1599 | ||||
| #: ImageBrowser.py:1609 | ||||
| msgid "Post nie został znaleziony dla tego pliku" | ||||
| msgstr "Post not found for this file" | ||||
|  | ||||
| #: ImageBrowser.py:1609 | ||||
| #: ImageBrowser.py:1619 | ||||
| #, python-brace-format | ||||
| msgid "Aktualizuję tagi dla {base_file_name}..." | ||||
| msgstr "Updating tags for {base_file_name}..." | ||||
|  | ||||
| #: ImageBrowser.py:1619 ImageBrowser.py:1629 ImageBrowser.py:1660 | ||||
| #: ImageBrowser.py:1629 ImageBrowser.py:1639 ImageBrowser.py:1670 | ||||
| msgid "Operacja anulowana" | ||||
| msgstr "Operation cancelled" | ||||
|  | ||||
| #: ImageBrowser.py:1670 | ||||
| #: ImageBrowser.py:1680 | ||||
| msgid "Tagi zostały zaktualizowane!" | ||||
| msgstr "Tags have been updated!" | ||||
|  | ||||
| #: ImageBrowser.py:1672 | ||||
| #: ImageBrowser.py:1682 | ||||
| msgid "Sukces edycji" | ||||
| msgstr "Edit successful" | ||||
|  | ||||
| #: ImageBrowser.py:1678 | ||||
| #: ImageBrowser.py:1688 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Błąd podczas aktualizacji tagów\n" | ||||
| @@ -369,19 +369,19 @@ msgstr "" | ||||
| "Error updating tags\n" | ||||
| "Status: {code}" | ||||
|  | ||||
| #: ImageBrowser.py:1682 | ||||
| #: ImageBrowser.py:1692 | ||||
| msgid "Treść:" | ||||
| msgstr "Content:" | ||||
|  | ||||
| #: ImageBrowser.py:1686 | ||||
| #: ImageBrowser.py:1696 | ||||
| msgid "Krytyczny błąd edycji" | ||||
| msgstr "Critical edit error" | ||||
|  | ||||
| #: ImageBrowser.py:1698 | ||||
| #: ImageBrowser.py:1708 | ||||
| msgid "Potwierdzenie" | ||||
| msgstr "Confirmation" | ||||
|  | ||||
| #: ImageBrowser.py:1700 | ||||
| #: ImageBrowser.py:1710 | ||||
| msgid "" | ||||
| "Czy na pewno chcesz wrzucić wszystkie niewrzucone pliki?\n" | ||||
| "Każdy z nich zostanie oznaczony tagiem 'meta:auto_upload'.\n" | ||||
| @@ -391,18 +391,18 @@ msgstr "" | ||||
| "Each will be tagged with 'meta:auto_upload'.\n" | ||||
| "Make sure the tags are correct!" | ||||
|  | ||||
| #: ImageBrowser.py:1724 | ||||
| #: ImageBrowser.py:1734 | ||||
| msgid "Anulowano operację!" | ||||
| msgstr "Operation cancelled!" | ||||
|  | ||||
| #: ImageBrowser.py:1732 | ||||
| #: ImageBrowser.py:1742 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Wysyłanie {file_path} z tagami: {final_tags} i ratingiem: {final_rating}" | ||||
| msgstr "" | ||||
| "Uploading {file_path} with tags: {final_tags} and rating: {final_rating}" | ||||
|  | ||||
| #: ImageBrowser.py:1748 | ||||
| #: ImageBrowser.py:1758 | ||||
| msgid "Przesłano pliki!" | ||||
| msgstr "Files have been uploaded!" | ||||
|  | ||||
| @@ -426,11 +426,15 @@ msgstr "Error fetching character tags:" | ||||
| msgid "Błąd przy pobieraniu tagów copyright:" | ||||
| msgstr "Error fetching copyright tags:" | ||||
|  | ||||
| #: tag_processing.py:165 | ||||
| #: tag_processing.py:48 | ||||
| msgid "Błąd przy pobieraniu tagów artystów:" | ||||
| msgstr "Error fetching artist tags:" | ||||
|  | ||||
| #: tag_processing.py:200 | ||||
| msgid "Błąd podczas odczytu tag_aliases:" | ||||
| msgstr "Error reading tag aliases:" | ||||
|  | ||||
| #: tag_processing.py:181 | ||||
| #: tag_processing.py:216 | ||||
| msgid "Błąd podczas odczytu tags:" | ||||
| msgstr "Error reading tags:" | ||||
|  | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: Kapitanbooru Uploader 0.5.2\n" | ||||
| "Project-Id-Version: Kapitanbooru Uploader 0.6.0\n" | ||||
| "Report-Msgid-Bugs-To: kapitan@mlesniak.pl\n" | ||||
| "POT-Creation-Date: 2025-03-15 19:42+0100\n" | ||||
| "POT-Creation-Date: 2025-03-16 01:22+0100\n" | ||||
| "Language: pl\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| @@ -53,26 +53,26 @@ msgstr "Przetwarzanie..." | ||||
| msgid "Processing, please wait..." | ||||
| msgstr "Przetwarzanie, proszę czekać..." | ||||
|  | ||||
| #: ImageBrowser.py:244 | ||||
| #: ImageBrowser.py:248 | ||||
| #, python-brace-format | ||||
| msgid "Update check failed: {error}" | ||||
| msgstr "Sprawdzenie aktualizacji nie powiodło się: {error}" | ||||
|  | ||||
| #: ImageBrowser.py:246 | ||||
| #: ImageBrowser.py:250 | ||||
| #, python-brace-format | ||||
| msgid "Malformed pyproject.toml: {error}" | ||||
| msgstr "Nieprawidłowy plik pyproject.toml: {error}" | ||||
|  | ||||
| #: ImageBrowser.py:249 | ||||
| #: ImageBrowser.py:253 | ||||
| #, python-brace-format | ||||
| msgid "Unexpected error during update check: {error}" | ||||
| msgstr "Nieoczekiwany błąd podczas sprawdzania aktualizacji: {error}" | ||||
|  | ||||
| #: ImageBrowser.py:256 | ||||
| #: ImageBrowser.py:260 | ||||
| msgid "Update Available" | ||||
| msgstr "Aktualizacja dostępna" | ||||
|  | ||||
| #: ImageBrowser.py:258 | ||||
| #: ImageBrowser.py:262 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "A new version {new_version} is available!\n" | ||||
| @@ -85,240 +85,240 @@ msgstr "" | ||||
| "\n" | ||||
| "Aktualizuj za pomocą: {update_command}" | ||||
|  | ||||
| #: ImageBrowser.py:367 | ||||
| #: ImageBrowser.py:375 | ||||
| msgid "Błąd przy otwieraniu pliku" | ||||
| msgstr "Błąd przy otwieraniu pliku" | ||||
|  | ||||
| #: ImageBrowser.py:409 | ||||
| #: ImageBrowser.py:417 | ||||
| msgid "Tagger przetworzył:" | ||||
| msgstr "Tagger przetworzył:" | ||||
|  | ||||
| #: ImageBrowser.py:412 | ||||
| #: ImageBrowser.py:420 | ||||
| msgid "Błąd Taggera dla" | ||||
| msgstr "Błąd Taggera dla" | ||||
|  | ||||
| #: ImageBrowser.py:438 | ||||
| #: ImageBrowser.py:446 | ||||
| msgid "Otwórz folder" | ||||
| msgstr "Otwórz folder" | ||||
|  | ||||
| #: ImageBrowser.py:441 ImageBrowser.py:728 ImageBrowser.py:944 | ||||
| #: ImageBrowser.py:952 | ||||
| #: ImageBrowser.py:449 ImageBrowser.py:738 ImageBrowser.py:954 | ||||
| #: ImageBrowser.py:962 | ||||
| msgid "Wyślij" | ||||
| msgstr "Wyślij" | ||||
|  | ||||
| #: ImageBrowser.py:444 ImageBrowser.py:937 | ||||
| #: ImageBrowser.py:452 ImageBrowser.py:947 | ||||
| msgid "Wyślij wszystko" | ||||
| msgstr "Wyślij wszystko" | ||||
|  | ||||
| #: ImageBrowser.py:448 ImageBrowser.py:938 ImageBrowser.py:944 | ||||
| #: ImageBrowser.py:456 ImageBrowser.py:948 ImageBrowser.py:954 | ||||
| msgid "Podmień tagi" | ||||
| msgstr "Podmień tagi" | ||||
|  | ||||
| #: ImageBrowser.py:451 ImageBrowser.py:939 | ||||
| #: ImageBrowser.py:459 ImageBrowser.py:949 | ||||
| msgid "Otwórz post" | ||||
| msgstr "Otwórz post" | ||||
|  | ||||
| #: ImageBrowser.py:454 | ||||
| #: ImageBrowser.py:462 | ||||
| msgid "Zakończ" | ||||
| msgstr "Zakończ" | ||||
|  | ||||
| #: ImageBrowser.py:456 | ||||
| #: ImageBrowser.py:464 | ||||
| msgid "Plik" | ||||
| msgstr "Plik" | ||||
|  | ||||
| #: ImageBrowser.py:460 ImageBrowser.py:557 | ||||
| #: ImageBrowser.py:468 ImageBrowser.py:567 | ||||
| msgid "Ustawienia" | ||||
| msgstr "Ustawienia" | ||||
|  | ||||
| #: ImageBrowser.py:463 | ||||
| #: ImageBrowser.py:471 | ||||
| msgid "Wyczyść cache Taggera" | ||||
| msgstr "Wyczyść cache Taggera" | ||||
|  | ||||
| #: ImageBrowser.py:466 | ||||
| #: ImageBrowser.py:474 | ||||
| msgid "Zregeneruj bazę tagów" | ||||
| msgstr "Zregeneruj bazę tagów" | ||||
|  | ||||
| #: ImageBrowser.py:468 | ||||
| #: ImageBrowser.py:476 | ||||
| msgid "Opcje" | ||||
| msgstr "Opcje" | ||||
|  | ||||
| #: ImageBrowser.py:471 | ||||
| #: ImageBrowser.py:479 | ||||
| msgid "About" | ||||
| msgstr "O programie" | ||||
|  | ||||
| #: ImageBrowser.py:472 | ||||
| #: ImageBrowser.py:480 | ||||
| msgid "Help" | ||||
| msgstr "Pomoc" | ||||
|  | ||||
| #: ImageBrowser.py:477 | ||||
| #: ImageBrowser.py:485 | ||||
| msgid "About Kapitanbooru Uploader" | ||||
| msgstr "O programie Kapitanbooru Uploader" | ||||
|  | ||||
| #: ImageBrowser.py:494 | ||||
| #: ImageBrowser.py:502 | ||||
| #, python-brace-format | ||||
| msgid "A new version {new_version} is available!" | ||||
| msgstr "Dostępna jest nowa wersja {new_version}!" | ||||
|  | ||||
| #: ImageBrowser.py:501 | ||||
| #: ImageBrowser.py:509 | ||||
| #, python-brace-format | ||||
| msgid "Current version: {version}" | ||||
| msgstr "Obecna wersja: {version}" | ||||
|  | ||||
| #: ImageBrowser.py:503 | ||||
| #: ImageBrowser.py:511 | ||||
| msgid "A GUI application for uploading images to KapitanBooru." | ||||
| msgstr "Aplikacja GUI do przesyłania obrazów do KapitanBooru." | ||||
|  | ||||
| #: ImageBrowser.py:504 | ||||
| #: ImageBrowser.py:512 | ||||
| msgid "Features include image upload, tag management, automatic" | ||||
| msgstr "Funkcje obejmują przesyłanie obrazów, zarządzanie tagami, automatyczne" | ||||
|  | ||||
| #: ImageBrowser.py:505 | ||||
| #: ImageBrowser.py:513 | ||||
| msgid "tagging with wdtagger, and cache management." | ||||
| msgstr "tagowanie za pomocą wdtagger oraz zarządzanie cache." | ||||
|  | ||||
| #: ImageBrowser.py:507 | ||||
| #: ImageBrowser.py:515 | ||||
| msgid "Authors:" | ||||
| msgstr "Autorzy:" | ||||
|  | ||||
| #: ImageBrowser.py:510 | ||||
| #: ImageBrowser.py:518 | ||||
| msgid "License: MIT License" | ||||
| msgstr "Licencja: MIT License" | ||||
|  | ||||
| #: ImageBrowser.py:521 | ||||
| #: ImageBrowser.py:531 | ||||
| msgid "Repository:" | ||||
| msgstr "Repozytorium:" | ||||
|  | ||||
| #: ImageBrowser.py:530 | ||||
| #: ImageBrowser.py:540 | ||||
| msgid "Website:" | ||||
| msgstr "Strona internetowa:" | ||||
|  | ||||
| #: ImageBrowser.py:541 | ||||
| #: ImageBrowser.py:551 | ||||
| msgid "Close" | ||||
| msgstr "Zamknij" | ||||
|  | ||||
| #: ImageBrowser.py:549 ImageBrowser.py:552 | ||||
| #: ImageBrowser.py:559 ImageBrowser.py:562 | ||||
| msgid "Cache" | ||||
| msgstr "Cache" | ||||
|  | ||||
| #: ImageBrowser.py:549 | ||||
| #: ImageBrowser.py:559 | ||||
| msgid "Cache Taggera zostało wyczyszczone." | ||||
| msgstr "Cache Taggera zostało wyczyszczone." | ||||
|  | ||||
| #: ImageBrowser.py:552 | ||||
| #: ImageBrowser.py:562 | ||||
| msgid "Błąd przy czyszczeniu cache:" | ||||
| msgstr "Błąd przy czyszczeniu cache:" | ||||
|  | ||||
| #: ImageBrowser.py:562 | ||||
| #: ImageBrowser.py:572 | ||||
| msgid "Login:" | ||||
| msgstr "Login:" | ||||
|  | ||||
| #: ImageBrowser.py:568 | ||||
| #: ImageBrowser.py:578 | ||||
| msgid "Hasło:" | ||||
| msgstr "Hasło:" | ||||
|  | ||||
| #: ImageBrowser.py:574 | ||||
| #: ImageBrowser.py:584 | ||||
| msgid "Base URL:" | ||||
| msgstr "Base URL:" | ||||
|  | ||||
| #: ImageBrowser.py:580 | ||||
| #: ImageBrowser.py:590 | ||||
| msgid "Default Tags:" | ||||
| msgstr "Domyślne tagi:" | ||||
|  | ||||
| #: ImageBrowser.py:586 | ||||
| #: ImageBrowser.py:596 | ||||
| msgid "Browser:" | ||||
| msgstr "Przeglądarka:" | ||||
|  | ||||
| #: ImageBrowser.py:600 | ||||
| #: ImageBrowser.py:610 | ||||
| msgid "Language:" | ||||
| msgstr "Język:" | ||||
|  | ||||
| #: ImageBrowser.py:632 | ||||
| #: ImageBrowser.py:642 | ||||
| msgid "Zapisz" | ||||
| msgstr "Zapisz" | ||||
|  | ||||
| #: ImageBrowser.py:674 | ||||
| #: ImageBrowser.py:684 | ||||
| msgid "PNG Tags" | ||||
| msgstr "Tagi PNG" | ||||
|  | ||||
| #: ImageBrowser.py:686 | ||||
| #: ImageBrowser.py:696 | ||||
| msgid "Tagger Tags" | ||||
| msgstr "Tagi Taggera" | ||||
|  | ||||
| #: ImageBrowser.py:700 | ||||
| #: ImageBrowser.py:710 | ||||
| msgid "Manual Tags" | ||||
| msgstr "Tagi ręczne" | ||||
|  | ||||
| #: ImageBrowser.py:708 | ||||
| #: ImageBrowser.py:718 | ||||
| msgid "Final Tags" | ||||
| msgstr "Ostateczne tagi" | ||||
|  | ||||
| #: ImageBrowser.py:733 | ||||
| #: ImageBrowser.py:743 | ||||
| msgid "Wyświetl" | ||||
| msgstr "Wyświetl" | ||||
|  | ||||
| #: ImageBrowser.py:750 | ||||
| #: ImageBrowser.py:760 | ||||
| msgid "Przetworzono tagi:" | ||||
| msgstr "Przetworzono tagi:" | ||||
|  | ||||
| #: ImageBrowser.py:750 ImageBrowser.py:751 ImageBrowser.py:752 | ||||
| #: ImageBrowser.py:760 ImageBrowser.py:761 ImageBrowser.py:762 | ||||
| msgid "plików" | ||||
| msgstr "plików" | ||||
|  | ||||
| #: ImageBrowser.py:751 | ||||
| #: ImageBrowser.py:761 | ||||
| msgid "Zweryfikowano status uploadu:" | ||||
| msgstr "Zweryfikowano status uploadu:" | ||||
|  | ||||
| #: ImageBrowser.py:752 | ||||
| #: ImageBrowser.py:762 | ||||
| msgid "Zuploadowano:" | ||||
| msgstr "Zuploadowano:" | ||||
|  | ||||
| #: ImageBrowser.py:780 | ||||
| #: ImageBrowser.py:790 | ||||
| msgid "Wybierz folder z obrazkami PNG" | ||||
| msgstr "Wybierz folder z obrazami PNG" | ||||
|  | ||||
| #: ImageBrowser.py:813 | ||||
| #: ImageBrowser.py:823 | ||||
| msgid "Informacja" | ||||
| msgstr "Informacja" | ||||
|  | ||||
| #: ImageBrowser.py:813 | ||||
| #: ImageBrowser.py:823 | ||||
| msgid "Brak plików PNG w wybranym folderze." | ||||
| msgstr "Brak plików PNG w wybranym folderze." | ||||
|  | ||||
| #: ImageBrowser.py:896 | ||||
| #: ImageBrowser.py:906 | ||||
| msgid "Błąd podczas sprawdzania paczki uploadu:" | ||||
| msgstr "Błąd podczas sprawdzania paczki uploadu:" | ||||
|  | ||||
| #: ImageBrowser.py:972 | ||||
| #: ImageBrowser.py:982 | ||||
| msgid "Błąd przy obliczaniu MD5:" | ||||
| msgstr "Błąd przy obliczaniu MD5:" | ||||
|  | ||||
| #: ImageBrowser.py:1028 | ||||
| #: ImageBrowser.py:1038 | ||||
| msgid "Błąd" | ||||
| msgstr "Błąd" | ||||
|  | ||||
| #: ImageBrowser.py:1028 | ||||
| #: ImageBrowser.py:1038 | ||||
| msgid "Nie można załadować obrazka:" | ||||
| msgstr "Nie można załadować obrazka:" | ||||
|  | ||||
| #: ImageBrowser.py:1238 ImageBrowser.py:1248 | ||||
| #: ImageBrowser.py:1248 ImageBrowser.py:1258 | ||||
| #, python-brace-format | ||||
| msgid "Warning: Tag '{tag}' not found in implication graph" | ||||
| msgstr "Ostrzeżenie: Tag '{tag}' nie został znaleziony w grafie implikacji" | ||||
|  | ||||
| #: ImageBrowser.py:1478 | ||||
| #: ImageBrowser.py:1488 | ||||
| msgid "Tagger przetwarza..." | ||||
| msgstr "Tagger przetwarza..." | ||||
|  | ||||
| #: ImageBrowser.py:1503 | ||||
| #: ImageBrowser.py:1513 | ||||
| #, python-brace-format | ||||
| msgid "Wysyłam plik {base_file_name}..." | ||||
| msgstr "Wysyłam plik {base_file_name}..." | ||||
|  | ||||
| #: ImageBrowser.py:1544 | ||||
| #: ImageBrowser.py:1554 | ||||
| msgid "Wysyłanie zakończone powodzeniem!" | ||||
| msgstr "Wysyłanie zakończone powodzeniem!" | ||||
|  | ||||
| #: ImageBrowser.py:1548 ImageBrowser.py:1557 | ||||
| #: ImageBrowser.py:1558 ImageBrowser.py:1567 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Wysyłanie zakończone błędem.\n" | ||||
| @@ -329,40 +329,40 @@ msgstr "" | ||||
| "Status: {status_code}\n" | ||||
| "Treść: {text}" | ||||
|  | ||||
| #: ImageBrowser.py:1563 ImageBrowser.py:1566 | ||||
| #: ImageBrowser.py:1573 ImageBrowser.py:1576 | ||||
| msgid "Wysyłanie" | ||||
| msgstr "Wysyłanie" | ||||
|  | ||||
| #: ImageBrowser.py:1579 | ||||
| #: ImageBrowser.py:1589 | ||||
| msgid "Błąd wysyłania" | ||||
| msgstr "Błąd wysyłania" | ||||
|  | ||||
| #: ImageBrowser.py:1599 | ||||
| #: ImageBrowser.py:1609 | ||||
| msgid "Błąd edycji" | ||||
| msgstr "Błąd edycji" | ||||
|  | ||||
| #: ImageBrowser.py:1599 | ||||
| #: ImageBrowser.py:1609 | ||||
| msgid "Post nie został znaleziony dla tego pliku" | ||||
| msgstr "Post nie został znaleziony dla tego pliku" | ||||
|  | ||||
| #: ImageBrowser.py:1609 | ||||
| #: ImageBrowser.py:1619 | ||||
| #, python-brace-format | ||||
| msgid "Aktualizuję tagi dla {base_file_name}..." | ||||
| msgstr "Aktualizuję tagi dla {base_file_name}..." | ||||
|  | ||||
| #: ImageBrowser.py:1619 ImageBrowser.py:1629 ImageBrowser.py:1660 | ||||
| #: ImageBrowser.py:1629 ImageBrowser.py:1639 ImageBrowser.py:1670 | ||||
| msgid "Operacja anulowana" | ||||
| msgstr "Operacja anulowana" | ||||
|  | ||||
| #: ImageBrowser.py:1670 | ||||
| #: ImageBrowser.py:1680 | ||||
| msgid "Tagi zostały zaktualizowane!" | ||||
| msgstr "Tagi zostały zaktualizowane!" | ||||
|  | ||||
| #: ImageBrowser.py:1672 | ||||
| #: ImageBrowser.py:1682 | ||||
| msgid "Sukces edycji" | ||||
| msgstr "Sukces edycji" | ||||
|  | ||||
| #: ImageBrowser.py:1678 | ||||
| #: ImageBrowser.py:1688 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Błąd podczas aktualizacji tagów\n" | ||||
| @@ -371,19 +371,19 @@ msgstr "" | ||||
| "Błąd podczas aktualizacji tagów\n" | ||||
| "Status: {code}" | ||||
|  | ||||
| #: ImageBrowser.py:1682 | ||||
| #: ImageBrowser.py:1692 | ||||
| msgid "Treść:" | ||||
| msgstr "Treść:" | ||||
|  | ||||
| #: ImageBrowser.py:1686 | ||||
| #: ImageBrowser.py:1696 | ||||
| msgid "Krytyczny błąd edycji" | ||||
| msgstr "Krytyczny błąd edycji" | ||||
|  | ||||
| #: ImageBrowser.py:1698 | ||||
| #: ImageBrowser.py:1708 | ||||
| msgid "Potwierdzenie" | ||||
| msgstr "Potwierdzenie" | ||||
|  | ||||
| #: ImageBrowser.py:1700 | ||||
| #: ImageBrowser.py:1710 | ||||
| msgid "" | ||||
| "Czy na pewno chcesz wrzucić wszystkie niewrzucone pliki?\n" | ||||
| "Każdy z nich zostanie oznaczony tagiem 'meta:auto_upload'.\n" | ||||
| @@ -393,18 +393,18 @@ msgstr "" | ||||
| "Każdy z nich zostanie oznaczony tagiem 'meta:auto_upload'.\n" | ||||
| "Upewnij się, że tagi są poprawne!" | ||||
|  | ||||
| #: ImageBrowser.py:1724 | ||||
| #: ImageBrowser.py:1734 | ||||
| msgid "Anulowano operację!" | ||||
| msgstr "Operacja anulowana!" | ||||
|  | ||||
| #: ImageBrowser.py:1732 | ||||
| #: ImageBrowser.py:1742 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Wysyłanie {file_path} z tagami: {final_tags} i ratingiem: {final_rating}" | ||||
| msgstr "" | ||||
| "Wysyłanie {file_path} z tagami: {final_tags} i ratingiem: {final_rating}" | ||||
|  | ||||
| #: ImageBrowser.py:1748 | ||||
| #: ImageBrowser.py:1758 | ||||
| msgid "Przesłano pliki!" | ||||
| msgstr "Pliki zostały przesłane!" | ||||
|  | ||||
| @@ -428,11 +428,15 @@ msgstr "Błąd przy pobieraniu tagów postaci:" | ||||
| msgid "Błąd przy pobieraniu tagów copyright:" | ||||
| msgstr "Błąd przy pobieraniu tagów copyright:" | ||||
|  | ||||
| #: tag_processing.py:165 | ||||
| #: tag_processing.py:48 | ||||
| msgid "Błąd przy pobieraniu tagów artystów:" | ||||
| msgstr "Błąd przy pobieraniu tagów artystów:" | ||||
|  | ||||
| #: tag_processing.py:200 | ||||
| msgid "Błąd podczas odczytu tag_aliases:" | ||||
| msgstr "Błąd podczas odczytu tag_aliases:" | ||||
|  | ||||
| #: tag_processing.py:181 | ||||
| #: tag_processing.py:216 | ||||
| msgid "Błąd podczas odczytu tags:" | ||||
| msgstr "Błąd podczas odczytu tags:" | ||||
|  | ||||
|   | ||||
| @@ -34,6 +34,20 @@ def get_copyright_tags(tags_repo: TagsRepo): | ||||
|         print(_("Błąd przy pobieraniu tagów copyright:"), e) | ||||
|         return set() | ||||
|  | ||||
| @lru_cache(maxsize=1) | ||||
| def get_artist_tags(tags_repo: TagsRepo): | ||||
|     """Zwraca zbiór nazw tagów z kategorii Artist (kategoria = 1) z bazy tags.sqlite""" | ||||
|     try: | ||||
|         conn = tags_repo.get_conn() | ||||
|         cursor = conn.cursor() | ||||
|         cursor.execute("SELECT name FROM tags WHERE category = 1") | ||||
|         rows = cursor.fetchall() | ||||
|         conn.close() | ||||
|         return {row[0] for row in rows} | ||||
|     except Exception as e: | ||||
|         print(_("Błąd przy pobieraniu tagów artystów:"), e) | ||||
|         return set() | ||||
|  | ||||
|  | ||||
| # Wzorce i ustawienia związane z tagami | ||||
| COEFFICIENT_PATTERN = re.compile(r"^.*?(:\d+|\d+\.\d+)$") | ||||
| @@ -58,12 +72,22 @@ AUTO_METATAGS = [ | ||||
|     "detailed_background", | ||||
|     "ultra-detailed", | ||||
|     "wallpaper", | ||||
|     "score_9", | ||||
|     "score_8_up", | ||||
|     "score_7_up", | ||||
|     "score_6_up", | ||||
|     "score_5_up", | ||||
|     "score_4_up", | ||||
|     "score_3_up", | ||||
|     "score_2_up", | ||||
|     "score_1_up", | ||||
| ] | ||||
| TAG_FIXES = { | ||||
|     "2boy": "2boys", | ||||
|     "2girl": "2girls", | ||||
|     "exercise": "exercising", | ||||
|     "keyboard_(computer)": "computer_keyboard", | ||||
|     "official_art": "official_style", | ||||
| } | ||||
| MULTI_TAG_FIXES = { | ||||
|     "black_choker_with_heart_charm": ["black_choker", "heart_choker"], | ||||
| @@ -119,6 +143,7 @@ def parse_parameters(param_str, tags_repo: TagsRepo): | ||||
|     # Pobierz tagi z bazy | ||||
|     character_tags = get_character_tags(tags_repo) | ||||
|     copyright_tags = get_copyright_tags(tags_repo) | ||||
|     artist_tags = get_artist_tags(tags_repo) | ||||
|  | ||||
|     # Dla tagów należących do kategorii Character | ||||
|     for tag in list(tags):  # iterujemy po kopii zbioru | ||||
| @@ -130,6 +155,16 @@ def parse_parameters(param_str, tags_repo: TagsRepo): | ||||
|         if tag in copyright_tags: | ||||
|             tags.discard(tag) | ||||
|             tags.add("copyright:" + tag) | ||||
|     # Dla tagów należących do kategorii Artist | ||||
|     artist_tags_counter = 0 | ||||
|     for tag in list(tags): | ||||
|         if tag in artist_tags: | ||||
|             tags.discard(tag) | ||||
|             tags.add(tag + "_(style)") | ||||
|             tags.add("style_parody") | ||||
|             artist_tags_counter += 1 | ||||
|     if artist_tags_counter > 1: | ||||
|         tags.add("multiple_style_parody") | ||||
|  | ||||
|     tags = list(tags) | ||||
|     tags.sort() | ||||
|   | ||||
| @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" | ||||
|  | ||||
| [project] | ||||
| name = "kapitanbooru-uploader" | ||||
| version = "0.5.2" | ||||
| version = "0.6.0" | ||||
| description = "A GUI application for uploading images to KapitanBooru" | ||||
| authors = [{ name = "Michał Leśniak", email = "kapitan@mlesniak.pl" }] | ||||
| dependencies = [ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user