Bump version to 0.8.3; add artist extraction from filename and update localization files
	
		
			
	
		
	
	
		
	
		
			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:
		| @@ -23,7 +23,7 @@ from .TagsRepo import TagsRepo | ||||
| from .autocomplete import TagManager | ||||
| from .common import get_auth_token, login, open_tag_wiki_url, open_webbrowser | ||||
| from .settings import Settings | ||||
| from .tag_processing import TAG_FIXES, extract_parameters, parse_parameters, process_tag | ||||
| from .tag_processing import TAG_FIXES, extract_parameters, parse_parameters, process_tag, extract_artist_from_filename | ||||
| from .tagger_cache import TaggerCache | ||||
|  | ||||
|  | ||||
| @@ -32,7 +32,7 @@ class ImageBrowser(tk.Tk): | ||||
|         super().__init__() | ||||
|         self.title("Kapitanbooru Uploader") | ||||
|         self.geometry("900x600") | ||||
|         self.version = "0.8.2" | ||||
|         self.version = "0.8.3" | ||||
|         self.acknowledged_version = parse_version(self.version) | ||||
|  | ||||
|         self.settings = Settings() | ||||
| @@ -250,6 +250,7 @@ class ImageBrowser(tk.Tk): | ||||
|         try: | ||||
|             img = Image.open(file_path) | ||||
|             parameters = extract_parameters(img, file_path) | ||||
|             artist_tag = extract_artist_from_filename(file_path) | ||||
|             png_tags = set( | ||||
|                 [ | ||||
|                     x | ||||
| @@ -258,6 +259,8 @@ class ImageBrowser(tk.Tk): | ||||
|                     is not None  # Ignoruj nieistniejące tagi | ||||
|                 ] | ||||
|             ) | ||||
|             if artist_tag: | ||||
|                 png_tags.add("artist:" + artist_tag.replace(" ", "_").replace("\\", "")) | ||||
|             img.close() | ||||
|         except Exception as e: | ||||
|             print(_("Błąd przy otwieraniu pliku"), file_path, ":", e) | ||||
| @@ -924,10 +927,13 @@ class ImageBrowser(tk.Tk): | ||||
|         try: | ||||
|             img = Image.open(file_path) | ||||
|             parameters = extract_parameters(img, file_path) | ||||
|             artist_tag = extract_artist_from_filename(file_path) | ||||
|             self.current_image_original = img.copy() | ||||
|             self.current_parameters = parameters | ||||
|             self.update_display_image() | ||||
|             parsed_parameters = parse_parameters(parameters, self.tags_repo) | ||||
|             if artist_tag: | ||||
|                 parsed_parameters += f" artist:{artist_tag.replace(' ', '_').replace('\\', '')}" | ||||
|             # Uaktualnij widget PNG Tags | ||||
|             self.update_png_tags_widget(parsed_parameters.split()) | ||||
|             # Uruchom Taggera w osobnym wątku | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: Kapitanbooru Uploader 0.8.2\n" | ||||
| "Project-Id-Version: Kapitanbooru Uploader 0.8.3\n" | ||||
| "Report-Msgid-Bugs-To: kapitan@mlesniak.pl\n" | ||||
| "POT-Creation-Date: 2025-03-27 20:47+0100\n" | ||||
| "POT-Creation-Date: 2025-06-25 23:49+0200\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
|  | ||||
| @@ -75,241 +75,241 @@ msgstr "" | ||||
| "\n" | ||||
| "Update using: {update_command}" | ||||
|  | ||||
| #: ImageBrowser.py:263 | ||||
| #: ImageBrowser.py:266 | ||||
| msgid "Błąd przy otwieraniu pliku" | ||||
| msgstr "Error opening file" | ||||
|  | ||||
| #: ImageBrowser.py:305 | ||||
| #: ImageBrowser.py:308 | ||||
| msgid "Tagger przetworzył:" | ||||
| msgstr "Tagger processed:" | ||||
|  | ||||
| #: ImageBrowser.py:308 | ||||
| #: ImageBrowser.py:311 | ||||
| msgid "Błąd Taggera dla" | ||||
| msgstr "Tagger error for" | ||||
|  | ||||
| #: ImageBrowser.py:334 | ||||
| #: ImageBrowser.py:337 | ||||
| msgid "Otwórz folder" | ||||
| msgstr "Open folder" | ||||
|  | ||||
| #: ImageBrowser.py:337 ImageBrowser.py:626 ImageBrowser.py:853 | ||||
| #: ImageBrowser.py:861 | ||||
| #: ImageBrowser.py:340 ImageBrowser.py:629 ImageBrowser.py:856 | ||||
| #: ImageBrowser.py:864 | ||||
| msgid "Wyślij" | ||||
| msgstr "Send" | ||||
|  | ||||
| #: ImageBrowser.py:340 ImageBrowser.py:846 | ||||
| #: ImageBrowser.py:343 ImageBrowser.py:849 | ||||
| msgid "Wyślij wszystko" | ||||
| msgstr "Send all" | ||||
|  | ||||
| #: ImageBrowser.py:344 ImageBrowser.py:847 ImageBrowser.py:853 | ||||
| #: ImageBrowser.py:347 ImageBrowser.py:850 ImageBrowser.py:856 | ||||
| msgid "Podmień tagi" | ||||
| msgstr "Replace tags" | ||||
|  | ||||
| #: ImageBrowser.py:347 ImageBrowser.py:848 | ||||
| #: ImageBrowser.py:350 ImageBrowser.py:851 | ||||
| msgid "Otwórz post" | ||||
| msgstr "Open post" | ||||
|  | ||||
| #: ImageBrowser.py:350 | ||||
| #: ImageBrowser.py:353 | ||||
| msgid "Zakończ" | ||||
| msgstr "Finish" | ||||
|  | ||||
| #: ImageBrowser.py:352 | ||||
| #: ImageBrowser.py:355 | ||||
| msgid "Plik" | ||||
| msgstr "File" | ||||
|  | ||||
| #: ImageBrowser.py:356 ImageBrowser.py:455 | ||||
| #: ImageBrowser.py:359 ImageBrowser.py:458 | ||||
| msgid "Ustawienia" | ||||
| msgstr "Settings" | ||||
|  | ||||
| #: ImageBrowser.py:359 | ||||
| #: ImageBrowser.py:362 | ||||
| msgid "Wyczyść cache Taggera" | ||||
| msgstr "Clear Tagger cache" | ||||
|  | ||||
| #: ImageBrowser.py:362 | ||||
| #: ImageBrowser.py:365 | ||||
| msgid "Zregeneruj bazę tagów" | ||||
| msgstr "Regenerate tag database" | ||||
|  | ||||
| #: ImageBrowser.py:364 | ||||
| #: ImageBrowser.py:367 | ||||
| msgid "Opcje" | ||||
| msgstr "Options" | ||||
|  | ||||
| #: ImageBrowser.py:367 | ||||
| #: ImageBrowser.py:370 | ||||
| msgid "About" | ||||
| msgstr "About" | ||||
|  | ||||
| #: ImageBrowser.py:368 | ||||
| #: ImageBrowser.py:371 | ||||
| msgid "Help" | ||||
| msgstr "Help" | ||||
|  | ||||
| #: ImageBrowser.py:373 | ||||
| #: ImageBrowser.py:376 | ||||
| msgid "About Kapitanbooru Uploader" | ||||
| msgstr "About Kapitanbooru Uploader" | ||||
|  | ||||
| #: ImageBrowser.py:390 | ||||
| #: ImageBrowser.py:393 | ||||
| #, python-brace-format | ||||
| msgid "A new version {new_version} is available!" | ||||
| msgstr "A new version {new_version} is available!" | ||||
|  | ||||
| #: ImageBrowser.py:397 | ||||
| #: ImageBrowser.py:400 | ||||
| #, python-brace-format | ||||
| msgid "Current version: {version}" | ||||
| msgstr "Current version: {version}" | ||||
|  | ||||
| #: ImageBrowser.py:399 | ||||
| #: ImageBrowser.py:402 | ||||
| msgid "A GUI application for uploading images to KapitanBooru." | ||||
| msgstr "A GUI application for uploading images to KapitanBooru." | ||||
|  | ||||
| #: ImageBrowser.py:400 | ||||
| #: ImageBrowser.py:403 | ||||
| msgid "Features include image upload, tag management, automatic" | ||||
| msgstr "Features include image upload, tag management, automatic" | ||||
|  | ||||
| #: ImageBrowser.py:401 | ||||
| #: ImageBrowser.py:404 | ||||
| msgid "tagging with wdtagger, and cache management." | ||||
| msgstr "tagging with wdtagger, and cache management." | ||||
|  | ||||
| #: ImageBrowser.py:403 | ||||
| #: ImageBrowser.py:406 | ||||
| msgid "Authors:" | ||||
| msgstr "Authors:" | ||||
|  | ||||
| #: ImageBrowser.py:406 | ||||
| #: ImageBrowser.py:409 | ||||
| msgid "License: MIT License" | ||||
| msgstr "License: MIT License" | ||||
|  | ||||
| #: ImageBrowser.py:419 | ||||
| #: ImageBrowser.py:422 | ||||
| msgid "Repository:" | ||||
| msgstr "Repository:" | ||||
|  | ||||
| #: ImageBrowser.py:428 | ||||
| #: ImageBrowser.py:431 | ||||
| msgid "Website:" | ||||
| msgstr "Website:" | ||||
|  | ||||
| #: ImageBrowser.py:439 | ||||
| #: ImageBrowser.py:442 | ||||
| msgid "Close" | ||||
| msgstr "Close" | ||||
|  | ||||
| #: ImageBrowser.py:447 ImageBrowser.py:450 | ||||
| #: ImageBrowser.py:450 ImageBrowser.py:453 | ||||
| msgid "Cache" | ||||
| msgstr "Cache" | ||||
|  | ||||
| #: ImageBrowser.py:447 | ||||
| #: ImageBrowser.py:450 | ||||
| msgid "Cache Taggera zostało wyczyszczone." | ||||
| msgstr "Tagger cache has been cleared." | ||||
|  | ||||
| #: ImageBrowser.py:450 | ||||
| #: ImageBrowser.py:453 | ||||
| msgid "Błąd przy czyszczeniu cache:" | ||||
| msgstr "Error clearing cache:" | ||||
|  | ||||
| #: ImageBrowser.py:460 | ||||
| #: ImageBrowser.py:463 | ||||
| msgid "Login:" | ||||
| msgstr "Login:" | ||||
|  | ||||
| #: ImageBrowser.py:466 | ||||
| #: ImageBrowser.py:469 | ||||
| msgid "Hasło:" | ||||
| msgstr "Password:" | ||||
|  | ||||
| #: ImageBrowser.py:472 | ||||
| #: ImageBrowser.py:475 | ||||
| msgid "Base URL:" | ||||
| msgstr "Base URL:" | ||||
|  | ||||
| #: ImageBrowser.py:478 | ||||
| #: ImageBrowser.py:481 | ||||
| msgid "Default Tags:" | ||||
| msgstr "Default Tags:" | ||||
|  | ||||
| #: ImageBrowser.py:484 | ||||
| #: ImageBrowser.py:487 | ||||
| msgid "Browser:" | ||||
| msgstr "Browser:" | ||||
|  | ||||
| #: ImageBrowser.py:498 | ||||
| #: ImageBrowser.py:501 | ||||
| msgid "Language:" | ||||
| msgstr "Language:" | ||||
|  | ||||
| #: ImageBrowser.py:530 | ||||
| #: ImageBrowser.py:533 | ||||
| msgid "Zapisz" | ||||
| msgstr "Save" | ||||
|  | ||||
| #: ImageBrowser.py:572 | ||||
| #: ImageBrowser.py:575 | ||||
| msgid "PNG Tags" | ||||
| msgstr "PNG Tags" | ||||
|  | ||||
| #: ImageBrowser.py:584 | ||||
| #: ImageBrowser.py:587 | ||||
| msgid "Tagger Tags" | ||||
| msgstr "Tagger Tags" | ||||
|  | ||||
| #: ImageBrowser.py:598 | ||||
| #: ImageBrowser.py:601 | ||||
| msgid "Manual Tags" | ||||
| msgstr "Manual Tags" | ||||
|  | ||||
| #: ImageBrowser.py:606 | ||||
| #: ImageBrowser.py:609 | ||||
| msgid "Final Tags" | ||||
| msgstr "Final Tags" | ||||
|  | ||||
| #: ImageBrowser.py:631 | ||||
| #: ImageBrowser.py:634 | ||||
| msgid "Wyświetl" | ||||
| msgstr "Display" | ||||
|  | ||||
| #: ImageBrowser.py:648 | ||||
| #: ImageBrowser.py:651 | ||||
| msgid "Przetworzono tagi:" | ||||
| msgstr "Processed tags:" | ||||
|  | ||||
| #: ImageBrowser.py:648 ImageBrowser.py:649 ImageBrowser.py:650 | ||||
| #: ImageBrowser.py:651 ImageBrowser.py:652 ImageBrowser.py:653 | ||||
| msgid "plików" | ||||
| msgstr "files" | ||||
|  | ||||
| #: ImageBrowser.py:649 | ||||
| #: ImageBrowser.py:652 | ||||
| msgid "Zweryfikowano status uploadu:" | ||||
| msgstr "Upload status verified:" | ||||
|  | ||||
| #: ImageBrowser.py:650 | ||||
| #: ImageBrowser.py:653 | ||||
| msgid "Zuploadowano:" | ||||
| msgstr "Uploaded:" | ||||
|  | ||||
| #: ImageBrowser.py:679 | ||||
| #: ImageBrowser.py:682 | ||||
| msgid "Wybierz folder z obrazkami PNG, JPEG, WebP, AVIF i GIF" | ||||
| msgstr "Select folder with PNG, JPEG, WebP, AVIF, and GIF images" | ||||
|  | ||||
| #: ImageBrowser.py:721 | ||||
| #: ImageBrowser.py:724 | ||||
| msgid "Informacja" | ||||
| msgstr "Information" | ||||
|  | ||||
| #: ImageBrowser.py:722 | ||||
| #: ImageBrowser.py:725 | ||||
| #, fuzzy | ||||
| msgid "Brak plików PNG, JPEG, WebP, AVIF lub GIF w wybranym folderze." | ||||
| msgstr "No PNG files in the selected folder." | ||||
|  | ||||
| #: ImageBrowser.py:805 | ||||
| #: ImageBrowser.py:808 | ||||
| msgid "Błąd podczas sprawdzania paczki uploadu:" | ||||
| msgstr "Error while checking upload package:" | ||||
|  | ||||
| #: ImageBrowser.py:881 | ||||
| #: ImageBrowser.py:881 | ||||
| #: ImageBrowser.py:884 | ||||
| msgid "Error computing MD5:" | ||||
| msgstr "Error computing MD5:" | ||||
| #: ImageBrowser.py:940 | ||||
|  | ||||
| #: ImageBrowser.py:946 | ||||
| msgid "Błąd" | ||||
| msgstr "Error" | ||||
|  | ||||
| #: ImageBrowser.py:940 | ||||
| #: ImageBrowser.py:946 | ||||
| msgid "Nie można załadować obrazka:" | ||||
| msgstr "Unable to load image:" | ||||
|  | ||||
| #: ImageBrowser.py:1150 ImageBrowser.py:1160 | ||||
| #: ImageBrowser.py:1156 ImageBrowser.py:1166 | ||||
| #, python-brace-format | ||||
| msgid "Warning: Tag '{tag}' not found in implication graph" | ||||
| msgstr "Warning: Tag '{tag}' not found in implication graph" | ||||
|  | ||||
| #: ImageBrowser.py:1390 | ||||
| #: ImageBrowser.py:1396 | ||||
| msgid "Tagger przetwarza..." | ||||
| msgstr "Tagger processing..." | ||||
|  | ||||
| #: ImageBrowser.py:1415 | ||||
| #: ImageBrowser.py:1421 | ||||
| #, python-brace-format | ||||
| msgid "Wysyłam plik {base_file_name}..." | ||||
| msgstr "Sending file {base_file_name}..." | ||||
|  | ||||
| #: ImageBrowser.py:1456 | ||||
| #: ImageBrowser.py:1462 | ||||
| msgid "Wysyłanie zakończone powodzeniem!" | ||||
| msgstr "Upload completed successfully!" | ||||
|  | ||||
| #: ImageBrowser.py:1460 ImageBrowser.py:1469 | ||||
| #: ImageBrowser.py:1466 ImageBrowser.py:1475 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Wysyłanie zakończone błędem.\n" | ||||
| @@ -320,40 +320,40 @@ msgstr "" | ||||
| "Status: {status_code}\n" | ||||
| "Content: {text}" | ||||
|  | ||||
| #: ImageBrowser.py:1475 ImageBrowser.py:1478 | ||||
| #: ImageBrowser.py:1481 ImageBrowser.py:1484 | ||||
| msgid "Wysyłanie" | ||||
| msgstr "Uploading" | ||||
|  | ||||
| #: ImageBrowser.py:1491 | ||||
| #: ImageBrowser.py:1497 | ||||
| msgid "Błąd wysyłania" | ||||
| msgstr "Upload error" | ||||
|  | ||||
| #: ImageBrowser.py:1511 | ||||
| #: ImageBrowser.py:1517 | ||||
| msgid "Błąd edycji" | ||||
| msgstr "Edit error" | ||||
|  | ||||
| #: ImageBrowser.py:1511 | ||||
| #: ImageBrowser.py:1517 | ||||
| msgid "Post nie został znaleziony dla tego pliku" | ||||
| msgstr "Post not found for this file" | ||||
|  | ||||
| #: ImageBrowser.py:1521 | ||||
| #: ImageBrowser.py:1527 | ||||
| #, python-brace-format | ||||
| msgid "Aktualizuję tagi dla {base_file_name}..." | ||||
| msgstr "Updating tags for {base_file_name}..." | ||||
|  | ||||
| #: ImageBrowser.py:1531 ImageBrowser.py:1541 ImageBrowser.py:1572 | ||||
| #: ImageBrowser.py:1537 ImageBrowser.py:1547 ImageBrowser.py:1578 | ||||
| msgid "Operacja anulowana" | ||||
| msgstr "Operation cancelled" | ||||
|  | ||||
| #: ImageBrowser.py:1582 | ||||
| #: ImageBrowser.py:1588 | ||||
| msgid "Tagi zostały zaktualizowane!" | ||||
| msgstr "Tags have been updated!" | ||||
|  | ||||
| #: ImageBrowser.py:1584 | ||||
| #: ImageBrowser.py:1590 | ||||
| msgid "Sukces edycji" | ||||
| msgstr "Edit successful" | ||||
|  | ||||
| #: ImageBrowser.py:1590 | ||||
| #: ImageBrowser.py:1596 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Błąd podczas aktualizacji tagów\n" | ||||
| @@ -362,19 +362,19 @@ msgstr "" | ||||
| "Error updating tags\n" | ||||
| "Status: {code}" | ||||
|  | ||||
| #: ImageBrowser.py:1594 | ||||
| #: ImageBrowser.py:1600 | ||||
| msgid "Treść:" | ||||
| msgstr "Content:" | ||||
|  | ||||
| #: ImageBrowser.py:1598 | ||||
| #: ImageBrowser.py:1604 | ||||
| msgid "Krytyczny błąd edycji" | ||||
| msgstr "Critical edit error" | ||||
|  | ||||
| #: ImageBrowser.py:1610 | ||||
| #: ImageBrowser.py:1616 | ||||
| msgid "Potwierdzenie" | ||||
| msgstr "Confirmation" | ||||
|  | ||||
| #: ImageBrowser.py:1612 | ||||
| #: ImageBrowser.py:1618 | ||||
| msgid "" | ||||
| "Czy na pewno chcesz wrzucić wszystkie niewrzucone pliki?\n" | ||||
| "Każdy z nich zostanie oznaczony tagiem 'meta:auto_upload'.\n" | ||||
| @@ -384,18 +384,18 @@ msgstr "" | ||||
| "Each will be tagged with 'meta:auto_upload'.\n" | ||||
| "Make sure the tags are correct!" | ||||
|  | ||||
| #: ImageBrowser.py:1636 | ||||
| #: ImageBrowser.py:1642 | ||||
| msgid "Anulowano operację!" | ||||
| msgstr "Operation cancelled!" | ||||
|  | ||||
| #: ImageBrowser.py:1644 | ||||
| #: ImageBrowser.py:1650 | ||||
| #, 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:1660 | ||||
| #: ImageBrowser.py:1666 | ||||
| msgid "Przesłano pliki!" | ||||
| msgstr "Files have been uploaded!" | ||||
|  | ||||
| @@ -419,27 +419,27 @@ msgstr "Error loading settings:" | ||||
| msgid "Błąd podczas zapisywania ustawień:" | ||||
| msgstr "Error saving settings:" | ||||
|  | ||||
| #: tag_processing.py:19 | ||||
| #: tag_processing.py:20 | ||||
| msgid "Błąd przy pobieraniu tagów postaci:" | ||||
| msgstr "Error fetching character tags:" | ||||
|  | ||||
| #: tag_processing.py:34 | ||||
| #: tag_processing.py:35 | ||||
| msgid "Błąd przy pobieraniu tagów copyright:" | ||||
| msgstr "Error fetching copyright tags:" | ||||
|  | ||||
| #: tag_processing.py:49 | ||||
| #: tag_processing.py:50 | ||||
| msgid "Błąd przy pobieraniu tagów artystów:" | ||||
| msgstr "Error fetching artist tags:" | ||||
|  | ||||
| #: tag_processing.py:164 | ||||
| #: tag_processing.py:164 | ||||
| #: tag_processing.py:208 | ||||
| msgid "Nie można sparsować parametrów." | ||||
| msgstr "Unable to parse parameters." | ||||
| #: tag_processing.py:249 | ||||
|  | ||||
| #: tag_processing.py:295 | ||||
| msgid "Błąd podczas odczytu tag_aliases:" | ||||
| msgstr "Error reading tag aliases:" | ||||
|  | ||||
| #: tag_processing.py:265 | ||||
| #: tag_processing.py:311 | ||||
| msgid "Błąd podczas odczytu tags:" | ||||
| msgstr "Error reading tags:" | ||||
|  | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: Kapitanbooru Uploader 0.8.2\n" | ||||
| "Project-Id-Version: Kapitanbooru Uploader 0.8.3\n" | ||||
| "Report-Msgid-Bugs-To: kapitan@mlesniak.pl\n" | ||||
| "POT-Creation-Date: 2025-03-27 20:47+0100\n" | ||||
| "POT-Creation-Date: 2025-06-25 23:49+0200\n" | ||||
| "Language: pl\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| @@ -77,242 +77,242 @@ msgstr "" | ||||
| "\n" | ||||
| "Aktualizuj za pomocą: {update_command}" | ||||
|  | ||||
| #: ImageBrowser.py:263 | ||||
| #: ImageBrowser.py:266 | ||||
| msgid "Błąd przy otwieraniu pliku" | ||||
| msgstr "Błąd przy otwieraniu pliku" | ||||
|  | ||||
| #: ImageBrowser.py:305 | ||||
| #: ImageBrowser.py:308 | ||||
| msgid "Tagger przetworzył:" | ||||
| msgstr "Tagger przetworzył:" | ||||
|  | ||||
| #: ImageBrowser.py:308 | ||||
| #: ImageBrowser.py:311 | ||||
| msgid "Błąd Taggera dla" | ||||
| msgstr "Błąd Taggera dla" | ||||
|  | ||||
| #: ImageBrowser.py:334 | ||||
| #: ImageBrowser.py:337 | ||||
| msgid "Otwórz folder" | ||||
| msgstr "Otwórz folder" | ||||
|  | ||||
| #: ImageBrowser.py:337 ImageBrowser.py:626 ImageBrowser.py:853 | ||||
| #: ImageBrowser.py:861 | ||||
| #: ImageBrowser.py:340 ImageBrowser.py:629 ImageBrowser.py:856 | ||||
| #: ImageBrowser.py:864 | ||||
| msgid "Wyślij" | ||||
| msgstr "Wyślij" | ||||
|  | ||||
| #: ImageBrowser.py:340 ImageBrowser.py:846 | ||||
| #: ImageBrowser.py:343 ImageBrowser.py:849 | ||||
| msgid "Wyślij wszystko" | ||||
| msgstr "Wyślij wszystko" | ||||
|  | ||||
| #: ImageBrowser.py:344 ImageBrowser.py:847 ImageBrowser.py:853 | ||||
| #: ImageBrowser.py:347 ImageBrowser.py:850 ImageBrowser.py:856 | ||||
| msgid "Podmień tagi" | ||||
| msgstr "Podmień tagi" | ||||
|  | ||||
| #: ImageBrowser.py:347 ImageBrowser.py:848 | ||||
| #: ImageBrowser.py:350 ImageBrowser.py:851 | ||||
| msgid "Otwórz post" | ||||
| msgstr "Otwórz post" | ||||
|  | ||||
| #: ImageBrowser.py:350 | ||||
| #: ImageBrowser.py:353 | ||||
| msgid "Zakończ" | ||||
| msgstr "Zakończ" | ||||
|  | ||||
| #: ImageBrowser.py:352 | ||||
| #: ImageBrowser.py:355 | ||||
| msgid "Plik" | ||||
| msgstr "Plik" | ||||
|  | ||||
| #: ImageBrowser.py:356 ImageBrowser.py:455 | ||||
| #: ImageBrowser.py:359 ImageBrowser.py:458 | ||||
| msgid "Ustawienia" | ||||
| msgstr "Ustawienia" | ||||
|  | ||||
| #: ImageBrowser.py:359 | ||||
| #: ImageBrowser.py:362 | ||||
| msgid "Wyczyść cache Taggera" | ||||
| msgstr "Wyczyść cache Taggera" | ||||
|  | ||||
| #: ImageBrowser.py:362 | ||||
| #: ImageBrowser.py:365 | ||||
| msgid "Zregeneruj bazę tagów" | ||||
| msgstr "Zregeneruj bazę tagów" | ||||
|  | ||||
| #: ImageBrowser.py:364 | ||||
| #: ImageBrowser.py:367 | ||||
| msgid "Opcje" | ||||
| msgstr "Opcje" | ||||
|  | ||||
| #: ImageBrowser.py:367 | ||||
| #: ImageBrowser.py:370 | ||||
| msgid "About" | ||||
| msgstr "O programie" | ||||
|  | ||||
| #: ImageBrowser.py:368 | ||||
| #: ImageBrowser.py:371 | ||||
| msgid "Help" | ||||
| msgstr "Pomoc" | ||||
|  | ||||
| #: ImageBrowser.py:373 | ||||
| #: ImageBrowser.py:376 | ||||
| msgid "About Kapitanbooru Uploader" | ||||
| msgstr "O programie Kapitanbooru Uploader" | ||||
|  | ||||
| #: ImageBrowser.py:390 | ||||
| #: ImageBrowser.py:393 | ||||
| #, python-brace-format | ||||
| msgid "A new version {new_version} is available!" | ||||
| msgstr "Dostępna jest nowa wersja {new_version}!" | ||||
|  | ||||
| #: ImageBrowser.py:397 | ||||
| #: ImageBrowser.py:400 | ||||
| #, python-brace-format | ||||
| msgid "Current version: {version}" | ||||
| msgstr "Obecna wersja: {version}" | ||||
|  | ||||
| #: ImageBrowser.py:399 | ||||
| #: ImageBrowser.py:402 | ||||
| msgid "A GUI application for uploading images to KapitanBooru." | ||||
| msgstr "Aplikacja GUI do przesyłania obrazów do KapitanBooru." | ||||
|  | ||||
| #: ImageBrowser.py:400 | ||||
| #: ImageBrowser.py:403 | ||||
| msgid "Features include image upload, tag management, automatic" | ||||
| msgstr "Funkcje obejmują przesyłanie obrazów, zarządzanie tagami, automatyczne" | ||||
|  | ||||
| #: ImageBrowser.py:401 | ||||
| #: ImageBrowser.py:404 | ||||
| msgid "tagging with wdtagger, and cache management." | ||||
| msgstr "tagowanie za pomocą wdtagger oraz zarządzanie cache." | ||||
|  | ||||
| #: ImageBrowser.py:403 | ||||
| #: ImageBrowser.py:406 | ||||
| msgid "Authors:" | ||||
| msgstr "Autorzy:" | ||||
|  | ||||
| #: ImageBrowser.py:406 | ||||
| #: ImageBrowser.py:409 | ||||
| msgid "License: MIT License" | ||||
| msgstr "Licencja: MIT License" | ||||
|  | ||||
| #: ImageBrowser.py:419 | ||||
| #: ImageBrowser.py:422 | ||||
| msgid "Repository:" | ||||
| msgstr "Repozytorium:" | ||||
|  | ||||
| #: ImageBrowser.py:428 | ||||
| #: ImageBrowser.py:431 | ||||
| msgid "Website:" | ||||
| msgstr "Strona internetowa:" | ||||
|  | ||||
| #: ImageBrowser.py:439 | ||||
| #: ImageBrowser.py:442 | ||||
| msgid "Close" | ||||
| msgstr "Zamknij" | ||||
|  | ||||
| #: ImageBrowser.py:447 ImageBrowser.py:450 | ||||
| #: ImageBrowser.py:450 ImageBrowser.py:453 | ||||
| msgid "Cache" | ||||
| msgstr "Cache" | ||||
|  | ||||
| #: ImageBrowser.py:447 | ||||
| #: ImageBrowser.py:450 | ||||
| msgid "Cache Taggera zostało wyczyszczone." | ||||
| msgstr "Cache Taggera zostało wyczyszczone." | ||||
|  | ||||
| #: ImageBrowser.py:450 | ||||
| #: ImageBrowser.py:453 | ||||
| msgid "Błąd przy czyszczeniu cache:" | ||||
| msgstr "Błąd przy czyszczeniu cache:" | ||||
|  | ||||
| #: ImageBrowser.py:460 | ||||
| #: ImageBrowser.py:463 | ||||
| msgid "Login:" | ||||
| msgstr "Login:" | ||||
|  | ||||
| #: ImageBrowser.py:466 | ||||
| #: ImageBrowser.py:469 | ||||
| msgid "Hasło:" | ||||
| msgstr "Hasło:" | ||||
|  | ||||
| #: ImageBrowser.py:472 | ||||
| #: ImageBrowser.py:475 | ||||
| msgid "Base URL:" | ||||
| msgstr "Base URL:" | ||||
|  | ||||
| #: ImageBrowser.py:478 | ||||
| #: ImageBrowser.py:481 | ||||
| msgid "Default Tags:" | ||||
| msgstr "Domyślne tagi:" | ||||
|  | ||||
| #: ImageBrowser.py:484 | ||||
| #: ImageBrowser.py:487 | ||||
| msgid "Browser:" | ||||
| msgstr "Przeglądarka:" | ||||
|  | ||||
| #: ImageBrowser.py:498 | ||||
| #: ImageBrowser.py:501 | ||||
| msgid "Language:" | ||||
| msgstr "Język:" | ||||
|  | ||||
| #: ImageBrowser.py:530 | ||||
| #: ImageBrowser.py:533 | ||||
| msgid "Zapisz" | ||||
| msgstr "Zapisz" | ||||
|  | ||||
| #: ImageBrowser.py:572 | ||||
| #: ImageBrowser.py:575 | ||||
| msgid "PNG Tags" | ||||
| msgstr "Tagi PNG" | ||||
|  | ||||
| #: ImageBrowser.py:584 | ||||
| #: ImageBrowser.py:587 | ||||
| msgid "Tagger Tags" | ||||
| msgstr "Tagi Taggera" | ||||
|  | ||||
| #: ImageBrowser.py:598 | ||||
| #: ImageBrowser.py:601 | ||||
| msgid "Manual Tags" | ||||
| msgstr "Tagi ręczne" | ||||
|  | ||||
| #: ImageBrowser.py:606 | ||||
| #: ImageBrowser.py:609 | ||||
| msgid "Final Tags" | ||||
| msgstr "Ostateczne tagi" | ||||
|  | ||||
| #: ImageBrowser.py:631 | ||||
| #: ImageBrowser.py:634 | ||||
| msgid "Wyświetl" | ||||
| msgstr "Wyświetl" | ||||
|  | ||||
| #: ImageBrowser.py:648 | ||||
| #: ImageBrowser.py:651 | ||||
| msgid "Przetworzono tagi:" | ||||
| msgstr "Przetworzono tagi:" | ||||
|  | ||||
| #: ImageBrowser.py:648 ImageBrowser.py:649 ImageBrowser.py:650 | ||||
| #: ImageBrowser.py:651 ImageBrowser.py:652 ImageBrowser.py:653 | ||||
| msgid "plików" | ||||
| msgstr "plików" | ||||
|  | ||||
| #: ImageBrowser.py:649 | ||||
| #: ImageBrowser.py:652 | ||||
| msgid "Zweryfikowano status uploadu:" | ||||
| msgstr "Zweryfikowano status uploadu:" | ||||
|  | ||||
| #: ImageBrowser.py:650 | ||||
| #: ImageBrowser.py:653 | ||||
| msgid "Zuploadowano:" | ||||
| msgstr "Zuploadowano:" | ||||
|  | ||||
| #: ImageBrowser.py:679 | ||||
| #: ImageBrowser.py:682 | ||||
| #, fuzzy | ||||
| msgid "Wybierz folder z obrazkami PNG, JPEG, WebP, AVIF i GIF" | ||||
| msgstr "Wybierz folder z obrazami PNG" | ||||
|  | ||||
| #: ImageBrowser.py:721 | ||||
| #: ImageBrowser.py:724 | ||||
| msgid "Informacja" | ||||
| msgstr "Informacja" | ||||
|  | ||||
| #: ImageBrowser.py:722 | ||||
| #: ImageBrowser.py:725 | ||||
| #, fuzzy | ||||
| msgid "Brak plików PNG, JPEG, WebP, AVIF lub GIF w wybranym folderze." | ||||
| msgstr "Brak plików PNG w wybranym folderze." | ||||
|  | ||||
| #: ImageBrowser.py:805 | ||||
| #: ImageBrowser.py:808 | ||||
| msgid "Błąd podczas sprawdzania paczki uploadu:" | ||||
| msgstr "Błąd podczas sprawdzania paczki uploadu:" | ||||
|  | ||||
| #: ImageBrowser.py:881 | ||||
| #: ImageBrowser.py:884 | ||||
| msgid "Error computing MD5:" | ||||
| msgstr "Błąd przy obliczaniu MD5:" | ||||
|  | ||||
| #: ImageBrowser.py:940 | ||||
| #: ImageBrowser.py:946 | ||||
| msgid "Błąd" | ||||
| msgstr "Błąd" | ||||
|  | ||||
| #: ImageBrowser.py:940 | ||||
| #: ImageBrowser.py:946 | ||||
| msgid "Nie można załadować obrazka:" | ||||
| msgstr "Nie można załadować obrazka:" | ||||
|  | ||||
| #: ImageBrowser.py:1150 ImageBrowser.py:1160 | ||||
| #: ImageBrowser.py:1156 ImageBrowser.py:1166 | ||||
| #, 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:1390 | ||||
| #: ImageBrowser.py:1396 | ||||
| msgid "Tagger przetwarza..." | ||||
| msgstr "Tagger przetwarza..." | ||||
|  | ||||
| #: ImageBrowser.py:1415 | ||||
| #: ImageBrowser.py:1421 | ||||
| #, python-brace-format | ||||
| msgid "Wysyłam plik {base_file_name}..." | ||||
| msgstr "Wysyłam plik {base_file_name}..." | ||||
|  | ||||
| #: ImageBrowser.py:1456 | ||||
| #: ImageBrowser.py:1462 | ||||
| msgid "Wysyłanie zakończone powodzeniem!" | ||||
| msgstr "Wysyłanie zakończone powodzeniem!" | ||||
|  | ||||
| #: ImageBrowser.py:1460 ImageBrowser.py:1469 | ||||
| #: ImageBrowser.py:1466 ImageBrowser.py:1475 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Wysyłanie zakończone błędem.\n" | ||||
| @@ -323,40 +323,40 @@ msgstr "" | ||||
| "Status: {status_code}\n" | ||||
| "Treść: {text}" | ||||
|  | ||||
| #: ImageBrowser.py:1475 ImageBrowser.py:1478 | ||||
| #: ImageBrowser.py:1481 ImageBrowser.py:1484 | ||||
| msgid "Wysyłanie" | ||||
| msgstr "Wysyłanie" | ||||
|  | ||||
| #: ImageBrowser.py:1491 | ||||
| #: ImageBrowser.py:1497 | ||||
| msgid "Błąd wysyłania" | ||||
| msgstr "Błąd wysyłania" | ||||
|  | ||||
| #: ImageBrowser.py:1511 | ||||
| #: ImageBrowser.py:1517 | ||||
| msgid "Błąd edycji" | ||||
| msgstr "Błąd edycji" | ||||
|  | ||||
| #: ImageBrowser.py:1511 | ||||
| #: ImageBrowser.py:1517 | ||||
| msgid "Post nie został znaleziony dla tego pliku" | ||||
| msgstr "Post nie został znaleziony dla tego pliku" | ||||
|  | ||||
| #: ImageBrowser.py:1521 | ||||
| #: ImageBrowser.py:1527 | ||||
| #, python-brace-format | ||||
| msgid "Aktualizuję tagi dla {base_file_name}..." | ||||
| msgstr "Aktualizuję tagi dla {base_file_name}..." | ||||
|  | ||||
| #: ImageBrowser.py:1531 ImageBrowser.py:1541 ImageBrowser.py:1572 | ||||
| #: ImageBrowser.py:1537 ImageBrowser.py:1547 ImageBrowser.py:1578 | ||||
| msgid "Operacja anulowana" | ||||
| msgstr "Operacja anulowana" | ||||
|  | ||||
| #: ImageBrowser.py:1582 | ||||
| #: ImageBrowser.py:1588 | ||||
| msgid "Tagi zostały zaktualizowane!" | ||||
| msgstr "Tagi zostały zaktualizowane!" | ||||
|  | ||||
| #: ImageBrowser.py:1584 | ||||
| #: ImageBrowser.py:1590 | ||||
| msgid "Sukces edycji" | ||||
| msgstr "Sukces edycji" | ||||
|  | ||||
| #: ImageBrowser.py:1590 | ||||
| #: ImageBrowser.py:1596 | ||||
| #, python-brace-format | ||||
| msgid "" | ||||
| "Błąd podczas aktualizacji tagów\n" | ||||
| @@ -365,19 +365,19 @@ msgstr "" | ||||
| "Błąd podczas aktualizacji tagów\n" | ||||
| "Status: {code}" | ||||
|  | ||||
| #: ImageBrowser.py:1594 | ||||
| #: ImageBrowser.py:1600 | ||||
| msgid "Treść:" | ||||
| msgstr "Treść:" | ||||
|  | ||||
| #: ImageBrowser.py:1598 | ||||
| #: ImageBrowser.py:1604 | ||||
| msgid "Krytyczny błąd edycji" | ||||
| msgstr "Krytyczny błąd edycji" | ||||
|  | ||||
| #: ImageBrowser.py:1610 | ||||
| #: ImageBrowser.py:1616 | ||||
| msgid "Potwierdzenie" | ||||
| msgstr "Potwierdzenie" | ||||
|  | ||||
| #: ImageBrowser.py:1612 | ||||
| #: ImageBrowser.py:1618 | ||||
| msgid "" | ||||
| "Czy na pewno chcesz wrzucić wszystkie niewrzucone pliki?\n" | ||||
| "Każdy z nich zostanie oznaczony tagiem 'meta:auto_upload'.\n" | ||||
| @@ -387,18 +387,18 @@ msgstr "" | ||||
| "Każdy z nich zostanie oznaczony tagiem 'meta:auto_upload'.\n" | ||||
| "Upewnij się, że tagi są poprawne!" | ||||
|  | ||||
| #: ImageBrowser.py:1636 | ||||
| #: ImageBrowser.py:1642 | ||||
| msgid "Anulowano operację!" | ||||
| msgstr "Operacja anulowana!" | ||||
|  | ||||
| #: ImageBrowser.py:1644 | ||||
| #: ImageBrowser.py:1650 | ||||
| #, 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:1660 | ||||
| #: ImageBrowser.py:1666 | ||||
| msgid "Przesłano pliki!" | ||||
| msgstr "Pliki zostały przesłane!" | ||||
|  | ||||
| @@ -422,28 +422,28 @@ msgstr "Błąd podczas ładowania ustawień:" | ||||
| msgid "Błąd podczas zapisywania ustawień:" | ||||
| msgstr "Błąd podczas zapisywania ustawień:" | ||||
|  | ||||
| #: tag_processing.py:19 | ||||
| #: tag_processing.py:20 | ||||
| msgid "Błąd przy pobieraniu tagów postaci:" | ||||
| msgstr "Błąd przy pobieraniu tagów postaci:" | ||||
|  | ||||
| #: tag_processing.py:34 | ||||
| #: tag_processing.py:35 | ||||
| msgid "Błąd przy pobieraniu tagów copyright:" | ||||
| msgstr "Błąd przy pobieraniu tagów copyright:" | ||||
|  | ||||
| #: tag_processing.py:49 | ||||
| #: tag_processing.py:50 | ||||
| msgid "Błąd przy pobieraniu tagów artystów:" | ||||
| msgstr "Błąd przy pobieraniu tagów artystów:" | ||||
|  | ||||
| #: tag_processing.py:164 | ||||
| #: tag_processing.py:208 | ||||
| #, fuzzy | ||||
| msgid "Nie można sparsować parametrów." | ||||
| msgstr "Nie można załadować obrazka:" | ||||
|  | ||||
| #: tag_processing.py:249 | ||||
| #: tag_processing.py:295 | ||||
| msgid "Błąd podczas odczytu tag_aliases:" | ||||
| msgstr "Błąd podczas odczytu tag_aliases:" | ||||
|  | ||||
| #: tag_processing.py:265 | ||||
| #: tag_processing.py:311 | ||||
| msgid "Błąd podczas odczytu tags:" | ||||
| msgstr "Błąd podczas odczytu tags:" | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| from functools import lru_cache | ||||
| import re | ||||
| from os.path import basename | ||||
|  | ||||
| from .I18N import _ | ||||
| from .TagsRepo import TagsRepo | ||||
| @@ -86,6 +87,8 @@ AUTO_METATAGS = [ | ||||
|     "score_3_up", | ||||
|     "score_2_up", | ||||
|     "score_1_up", | ||||
|     "amazing_quality", | ||||
|     "best_quality", | ||||
| ] | ||||
| TAG_FIXES = { | ||||
|     "2boy": "2boys", | ||||
| @@ -115,6 +118,19 @@ MULTI_TAG_FIXES = { | ||||
| from PIL import Image, PngImagePlugin | ||||
|  | ||||
|  | ||||
| def extract_artist_from_filename(file_path: str) -> str: | ||||
|     """Funkcja do ekstrakcji nazwy artysty z nazwy pliku. | ||||
|     Zakłada, że nazwa pliku jest w formacie "numer-seed-artysta.ext".     | ||||
|     """ | ||||
|     # Pobierz nazwę pliku z pełnej ścieżki | ||||
|     file_name = basename(file_path) | ||||
|     # Upewniamy się, że nazwa pliku jest w formacie "numer-seed-artysta.ext" | ||||
|     if "-" not in file_name or file_name.count("-") < 2: | ||||
|         return "" | ||||
|  | ||||
|     artist_name = file_name.split("-")[-1].split(".")[0]   | ||||
|     return artist_name.strip()  # Usuń ewentualne spacje | ||||
|  | ||||
| def extract_parameters(img: Image, file_path: str) -> str: | ||||
|     """Funkcja do ekstrakcji parametrów z pliku graficznego. | ||||
|     Obsługuje PNG, JPEG, WebP, AVIF i GIF. | ||||
|   | ||||
| @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" | ||||
|  | ||||
| [project] | ||||
| name = "kapitanbooru-uploader" | ||||
| version = "0.8.2" | ||||
| version = "0.8.3" | ||||
| 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