From 0987fbbed09978308780ae78c83a9295e60c6f96 Mon Sep 17 00:00:00 2001 From: Kapitan Date: Wed, 25 Jun 2025 23:56:19 +0200 Subject: [PATCH] Bump version to 0.8.3; add artist extraction from filename and update localization files --- kapitanbooru_uploader/ImageBrowser.py | 10 +- .../locales/en/LC_MESSAGES/messages.po | 170 +++++++++--------- .../locales/pl/LC_MESSAGES/messages.po | 166 ++++++++--------- kapitanbooru_uploader/tag_processing.py | 16 ++ pyproject.toml | 2 +- 5 files changed, 193 insertions(+), 171 deletions(-) diff --git a/kapitanbooru_uploader/ImageBrowser.py b/kapitanbooru_uploader/ImageBrowser.py index 7a4e596..16eff76 100644 --- a/kapitanbooru_uploader/ImageBrowser.py +++ b/kapitanbooru_uploader/ImageBrowser.py @@ -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 diff --git a/kapitanbooru_uploader/locales/en/LC_MESSAGES/messages.po b/kapitanbooru_uploader/locales/en/LC_MESSAGES/messages.po index eee9b08..86b8955 100644 --- a/kapitanbooru_uploader/locales/en/LC_MESSAGES/messages.po +++ b/kapitanbooru_uploader/locales/en/LC_MESSAGES/messages.po @@ -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:" diff --git a/kapitanbooru_uploader/locales/pl/LC_MESSAGES/messages.po b/kapitanbooru_uploader/locales/pl/LC_MESSAGES/messages.po index 442b6e7..590dcc3 100644 --- a/kapitanbooru_uploader/locales/pl/LC_MESSAGES/messages.po +++ b/kapitanbooru_uploader/locales/pl/LC_MESSAGES/messages.po @@ -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:" diff --git a/kapitanbooru_uploader/tag_processing.py b/kapitanbooru_uploader/tag_processing.py index 1a4c539..1ae59ef 100644 --- a/kapitanbooru_uploader/tag_processing.py +++ b/kapitanbooru_uploader/tag_processing.py @@ -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. diff --git a/pyproject.toml b/pyproject.toml index 71c390d..0b9deab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 = [