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

This commit is contained in:
Michał Leśniak 2025-03-16 01:28:47 +01:00
parent 0978dd8e3c
commit 96597a4e2b
5 changed files with 225 additions and 172 deletions

View File

@ -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)

View File

@ -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:"

View File

@ -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:"

View File

@ -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()

View File

@ -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 = [