63 Commits
Author SHA1 Message Date
timmy 0f82ec8340 Merge branch 'bump-settngs' into develop 2026-08-16 13:06:44 -07:00
timmy bbe6891d54 Merge branch 'mizaki/settings_encoder' into develop 2026-08-16 13:05:46 -07:00
timmy 405af25521 Fix pyinstaller build
Fix exception when PyQt is not installed
2026-08-15 13:42:50 -07:00
timmy 80e39268dc Fix flake8 issues 2026-08-15 13:42:50 -07:00
timmy 7dd3c9d13b Change --only-set-cv-key to --only-save-config 2026-08-15 13:42:50 -07:00
timmy 4351f929e5 Update setting group names
Make group names presentable to users and add builtin plugins during namespace generation.
Revamp talkeruigenerator.py to use generated group and setting names and remove as many hard-coded strings as possible
Add a --list-plugins commandline option
2026-08-15 13:42:50 -07:00
timmy 47be75375c Convert ComicIssue into GenericMetadata
I could not find a good reason for ComicIssue to exist other than that
 it had more attributes than GenericMetadata, so it has been replaced.
New attributes for GenericMetadata:
  series_id:        a string uniquely identifying the series to tag_origin
  series_aliases:   alternate series names that are not the canonical name
  title_aliases:    alternate issue titles that are not the canonical name
  alternate_images: a list of urls to alternate cover images

Updated attributes for GenericMetadata:
  genre        -> genres:        str -> list[str]
  comments     -> description:   str -> str
  story_arc    -> story_arcs:    str -> list[str]
  series_group -> series_groups: str -> list[str]
  character    -> characters:    str -> list[str]
  team         -> teams:         str -> list[str]
  location     -> locations:     str -> list[str]
  tag_origin   -> tag_origin:    str -> TagOrigin (tuple[str, str])

ComicSeries has been relocated to the ComicAPI package, currently has no
 usage within ComicAPI.
CreditMetadata has been renamed to Credit and has replaced Credit from
 ComicTalker.
fetch_series has been added to ComicTalker, this is currently only used
 in the GUI when a series is selected and does not already contain the
 needed fields, this function should always be cached.

A new split function has been added to ComicAPI, all uses of split on
 single characters have been updated to use this

cleanup_html and the corresponding setting are now only used in
 ComicTagger proper, for display we want any html directly from the
 upstream. When applying the metadata we then strip the description of
 any html.

A new conversion has been added to the MetadataFormatter:
  j: joins any lists into a string with ', '. Note this is a valid
     operation on strings as well, it will add ', ' in between every
     character.

parse_settings now assigns the given ComicTaggerPaths object to the
 result ensuring that the correct path is always used.

Add test for split

Fix attribute names

Fix cbr tests
2026-08-15 13:39:46 -07:00
timmy 4fdb49a5cd Update settngs to typed version fixes #453
Generate a namespace object for typing settngs
2026-08-15 13:39:46 -07:00
timmy 0ab55da52e Update plugin settings
Make "runtime" a persistent group, allows normalizing without losing validation
Simplify archiver setting generation
Generate options for setting a url and key for all talkers
Return validated talker settings
Require that the talker id must match the entry point name
Add api_url and api_key as default attributes on talkers
Add default handling of api_url and api_key to register_settings
Update settngs to 0.6.2 to be able to add settings to a group and
  use the display_name attribute
Error if no talkers are loaded
Update talker entry point to comictagger.talker

Merge branch 'mizaki-talker_parse_key' into develop

Fix fix_url

Add tests for fix_url

Fix talker settings validation
2026-08-15 13:39:46 -07:00
timmy 41142df0cb Make PyICU optional
Update README.md

Reduce startup time natsort
2026-08-15 13:39:46 -07:00
timmy b482df6183 Reduce startup time - v1 2026-08-15 13:39:46 -07:00
timmy 60e3497818 Automate contributions
docs(contributor): contrib-readme-action has updated readme

Update AUTHORS

Update copyright statements to ComicTagger Authors

Update AUTHORS

Restrict contributions updates to only run on pushes to develop

Fix actions failure when there are no new contributors
2026-08-15 13:39:46 -07:00
timmy bcff17b081 Merge branch 'talker-cleanup' into develop 2026-08-15 13:39:46 -07:00
timmy 4a3194cb85 Merge branch 'settings-consistency' into develop 2026-08-15 13:39:46 -07:00
timmy 70b2a0f23d Consolidate plugin code 2026-08-15 13:39:46 -07:00
timmy cf4e940360 Merge branch 'mizaki-talker_settings' into develop 2026-08-15 13:39:46 -07:00
timmy a9a81a9c65 Turn comicapi.archivers.* into plugins 2026-08-15 13:39:46 -07:00
timmy 5de3739586 Move log header to execute immediately after the log is configured 2026-08-15 13:39:46 -07:00
timmy 2951dc40b9 Merge branch 'settings' into develop
Merge branch 'mizaki-rename_namespace_fix' into develop
2026-08-15 13:39:46 -07:00
timmy 81ee456fe7 Merge branch 'mizaki-infosources' into dev
Fix tests

Stop setting the notes field in map_comic_issue_to_metadata

Make errors loading the ComicVineTalker object explicit

Re-add --only-set-cv-key feature

Cleanup

Move most options passed in to ComicVineTalker to ComicTalker
Give ComicCacher and ComicTalker a version argument to remove all
  references to comictaggerlib
Update default arguments to reflect what is required to use these classes
2026-08-15 13:39:46 -07:00
timmy e5f6a7d1d6 Add warning about settings 2022-11-25 17:09:22 -08:00
timmy c608ff80a1 Improve typing 2022-11-22 17:11:56 -08:00
timmy aad83c8c03 Update PyInstaller usage
Switch to rapidfuzz from thefuzz
Add associations to macOS app bundle
2022-10-25 21:48:01 -07:00
timmy 3cf75cf2ec Update importlib_matadata usage and requirements 2022-09-19 22:54:48 -07:00
timmy 40314367c9 Improve formatting and consistency 2022-07-18 12:17:13 -07:00
timmy 6c65c2ad56 Make importlib usage compatible with python 3.9 2022-06-23 13:05:27 -07:00
timmy 7e033857ba Replace pkg_resources with importlib.metadata 2022-06-10 16:18:58 -07:00
timmy d9c02b0115 Allow changing the ComicVine URL fixes #104 2022-06-10 15:23:58 -07:00
timmy ff73cbf2f9 Fix small issues
Fix spelling errors
Remove Redundant exception types
Remove dead code
Change the forum link to point to GitHub discussions
2022-06-07 20:22:33 -07:00
timmy 470b5c0a17 Fix adding files to GUI via running ComicTagger with more filenames
Add flake8-print to ensure all logging uses the logging package
2022-06-06 20:04:51 -07:00
timmy 04409a55c7 Handle more exceptions
Handle exceptions during metadata save fixes #309
Handle exceptions during metadata read fixes #126 and #309
2022-06-06 20:04:51 -07:00
timmy fd4c453854 Apply pre-commit configuration 2022-06-02 18:32:16 -07:00
timmy c19ed49e05 Move to argparse for argument parsing 2022-06-02 18:28:54 -07:00
timmy c5772c75e5 Cleanup setCheckState
Fix word splitting when auto-tagging
Remove commented code
2022-05-24 11:38:10 -07:00
timmy 1468b1932f Fix crash on startup
Add publishers.json to pip package
Add exception handling to prevent crash
2022-05-19 20:13:59 -07:00
timmy d3f552173e Merge branch 'AutoImprint' into develop 2022-05-19 13:28:18 -07:00
timmy 3e3dcb03f9 Typed 2022-05-19 13:19:19 -07:00
timmy 135544c0db Code cleanup 2022-04-20 13:13:03 -07:00
timmy 298f50cb45 Merge branch 'configDir' into develop 2022-04-18 20:10:50 -07:00
timmy 0fe881df59 Code cleanup 2022-04-18 19:40:04 -07:00
timmy f3f48ea958 Add the ability to specify a config directory 2022-04-18 19:08:38 -07:00
timmy 6da177471b Fix #242
Fix file encoding inconsistencies, windows defaults to cp1252, which is
not Unicode compatible.
Add logging for all exceptions in the comicapi package
Ensure that all exceptions are logged and shown to the user
2022-04-11 14:52:41 -07:00
timmy 4fb9461491 Stop a crash when the logs folder already exists 2022-04-05 00:58:19 -07:00
timmy 558072a330 Create the logs folder before attempting to use it 2022-04-04 19:28:38 -07:00
timmy c50cef568e Add basic logging 2022-04-04 19:10:22 -07:00
timmy e10f7dd7a7 Code cleanup
Remove no longer used google scripts
Remove convenience files from comicataggerlib and import comicapi directly
Add type-hints to facilitate auto-complete tools
Make PyQt5 code more compatible with PyQt6

Implement automatic tooling
isort and black for code formatting
Line length has been set to 120
flake8 for code standards with exceptions:
E203 - Whitespace before ':'  - format compatiblity with black
E501 - Line too long          - flake8 line limit cannot be set
E722 - Do not use bare except - fixing bare except statements is a
                                lot of overhead and there are already
                                many in the codebase

These changes, along with some manual fixes creates much more readable code.
See examples below:

diff --git a/comicapi/comet.py b/comicapi/comet.py
index d1741c5..52dc195 100644
--- a/comicapi/comet.py
+++ b/comicapi/comet.py
@@ -166,7 +166,2 @@ class CoMet:

-            if credit['role'].lower() in set(self.editor_synonyms):
-                ET.SubElement(
-                    root,
-                    'editor').text = "{0}".format(
-                    credit['person'])

@@ -174,2 +169,4 @@ class CoMet:
         self.indent(root)
+            if credit["role"].lower() in set(self.editor_synonyms):
+                ET.SubElement(root, "editor").text = str(credit["person"])

diff --git a/comictaggerlib/autotagmatchwindow.py b/comictaggerlib/autotagmatchwindow.py
index 4338176..9219f01 100644
--- a/comictaggerlib/autotagmatchwindow.py
+++ b/comictaggerlib/autotagmatchwindow.py
@@ -63,4 +63,3 @@ class AutoTagMatchWindow(QtWidgets.QDialog):
             self.skipButton, QtWidgets.QDialogButtonBox.ActionRole)
-        self.buttonBox.button(QtWidgets.QDialogButtonBox.Ok).setText(
-            "Accept and Write Tags")
+        self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setText("Accept and Write Tags")

diff --git a/comictaggerlib/cli.py b/comictaggerlib/cli.py
index 688907d..dbd0c2e 100644
--- a/comictaggerlib/cli.py
+++ b/comictaggerlib/cli.py
@@ -293,7 +293,3 @@ def process_file_cli(filename, opts, settings, match_results):
                 if opts.raw:
-                    print((
-                        "{0}".format(
-                            str(
-                                ca.readRawCIX(),
-                                errors='ignore'))))
+                    print(ca.read_raw_cix())
                 else:
2022-04-02 14:21:37 -07:00
davide-romanini db3db48e5c Better console handling on Windows (#162) 2019-10-06 05:15:18 -07:00
davide-romanini 91f82fd6d3 Python3 and QT5 upgrade (#109)
* Tweaked search string based on new comic vine search behavior
Placated Beaufitul Soup by passing the parser

* First cut at porting to Python 3 and PyQt5

* remove debug print

* tweaked progress dialog handling for issues on ubuntu gui

* Handle bad key more gracefullu

* More integration of unrarlib into settings and rest of app

* Better handling of "personal" unrar lib setting

* PEP 440-compliant version string

* Tuned linux rar help strings

* Got setup working again
* Attempts to build unrar on install
* Some minimal desktop integration on various platforms

* Fix wrong shortfile

* More setup.py enhancements
* Use proper temp file
* Added comment block at top

* Comment out desktop integration attempt for now

* Updated some links and info

* Fixed the html a bit

* Repaired some images that caused libpng to complain

* update readme re:  py3qt5 branch changes

* another note

* #108 feat: try to simplify windows build using only pip and python3

* #108 feat: fix python location on appveyor (try 1)

* #108 feat: use venv (try 2)

* #108 feat: use venv (try 3)

* #108 feat: update to latest pyinstaller develop branch

* #108 feat: update to latest pyinstaller develop branch (again)

* #108: add ssl libraries for windows packaging

* #108: refresh env in win build to pick the right mingw

* #108: change order of win build script operations

* #113: fix subprocess usage in pyinstaller package

* bump version
2018-09-19 22:05:39 +02:00
davide-romanini a7288a94cc #98 Multiplatform pyinstaller dist (#99)
Multiplatform pyinstaller dist (#98)
2018-01-14 16:41:27 +01:00
fcanc d959ac0401 Huge code cleanup
- `autopep8 -aa` for general cleanup;
- Changed order of imports, they should be ordered into 3 groups:
1. standard library imports;
2. 3rd party packages;
3. project imports.
- I commented various imports that were reported as unused by my IDE.
If everything goes fine we can consider to delete them;
- The Apache license disclaimers are now comments since triple-quotes
should be used only for docstrings;
- Fix - `utils.centerWindowOnParent` did not resolve, changed to
`centerWindowOnParent`
2015-02-22 03:30:32 +01:00