36 Commits
Author SHA1 Message Date
timmy 91d053b20d Merge branch 'mizaki/talkers_version_check' into develop 2026-08-16 13:06:44 -07:00
timmy 8514f3c9cc Enable stricter mypy configuration 2026-08-16 13:06:44 -07:00
timmy da8237284b Merge branch 'mizaki-gmd_list_set' into develop 2026-08-15 13:42:50 -07:00
timmy aa9cda7378 Merge branch 'mizaki-remove_series_genres' into develop 2026-08-15 13:42:50 -07:00
timmy a2a67f55ae Merge branch 'mizaki-talker_setting_logo_blurb' into develop 2026-08-15 13:42:50 -07:00
timmy b905d837b1 Simplify ComicCacher to store a single binary data field and ID(s)
If the ComicCacher is to be a generic cache for talkers it must assume
 very little. Current assumptions:
 - There are issues that can be queried individually by an "Issue ID" and they have a relation to a single series
 - There are series that can be queried individually by an "Series ID" and they have a relation to zero or more issues
 - There are Searches that can be queried by the search term and they have a relation to zero or more series

Each series and issue have a boolean `complete` attribute which is up to the talker to decide what it means.
Data is returned as a tuple ([series, complete] or [issue, complete]) or a list of tuples
An issue consists of an ID, an series ID and a binary data attribute which is up to the talker to determine what it means.
An series consists of in ID and a binary data attribute which is up to the talker to determine what it means.

The data attribute is binary to allow for compression and efficient storage of binary data (e.g. pickle) it is suggested to store it as json or similar text format encoded with utf-8. If the talker is using a website API it is suggested to store the raw response from the server.

All caches automatically expire 7 days after insertion.
2026-08-15 13:42:50 -07:00
timmy 8f129f7f45 Rename check_api_key to check_status
Parameter is changed to a settings dict so that a Talker can retrieve any info it needs
Change issue_id type annotation to str

Fix call to check_api
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 f461caf7c8 Cleanup sqlite
Remove the import rename
use sqlite3.Row allows retrieving value by name
2026-08-15 13:39:46 -07:00
timmy 0341617ffa Merge branch 'mizaki-vol_to_issue' into develop 2026-08-15 13:39:46 -07:00
timmy b6c55b6533 Merge branch 'mizaki-rate_limit_cv' into develop 2026-08-15 13:39:46 -07:00
timmy a857d753ef Fix setting issue and alternate_number on GenericMetadata
IssueString.as_string always returns a string this is a problem for
  GenericMetadata. When the overlay function is used it checks
  specifically for the value None this allows the -m option to unset
  attributes however the issue attribute would get set to the empty
  string when loading ComicRack tags regardless of if there was a value
  stored in the file. Fixes #465 and #480
2026-08-15 13:39:46 -07:00
timmy 3344407b33 Merge branch 'mizaki-additional_comic_fields' into develop
Merge branch 'mizaki-fix_add_fields' into develop
2026-08-15 13:39:46 -07:00
timmy 1fe8de593b Separate xlate into separate functions based on return type fixes #454
Strip strings during xlate
2026-08-15 13:39:46 -07:00
timmy cf0b8d48ab Fix #485
As mentioned in the comment in comictaggerlib/main.py:186
The default value should be None not the empty string.
We also check if the given value is the default or the empty string and
 the setting is unset so the default value is not saved in the settings
 file.
The default_api_url is shown in the GUI Settings Window it is not
 currently show in the cli help.
2026-08-15 13:39:46 -07:00
Mizaki af96c3db3e Replace instances of Comic Vine to use the talker's name
Change data to metadata
2026-08-15 13:39:46 -07:00
timmy 1c1de5bd99 Merge branch 'mizaki-talker_settings_generator' into develop
Merge branch 'mizaki-talkeruigen_fix' into develop
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 b482df6183 Reduce startup time - v1 2026-08-15 13:39:46 -07:00
timmy 5ca47e5a95 Merge branch 'mizaki-cache_role_fix' into develop 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 2a969de493 Merge branch 'mizaki-talker_entry_points' into develop 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 5ccd446d8c Merge branch 'mizaki-source_logo_url' into develop 2026-08-15 13:39:46 -07:00
timmy 59d9fb24c5 Fix try block parsing credits in ComicCacher 2026-08-15 13:39:46 -07:00
timmy bba70aa98b Tidy Issue Identifier
Switch comictalker TypedDicts to dataclasses
Stop using thumb image
2026-08-15 13:39:46 -07:00
timmy d44ac65085 Change series id to strings 2026-08-15 13:39:46 -07:00
timmy 5c88cf8a96 Change issue id to strings 2026-08-15 13:39:46 -07:00
timmy 09def1b0d8 Improve typing in ComicVineTalker 2026-08-15 13:39:46 -07:00
timmy c3f9bdfb22 Update ComicTalker documentation 2026-08-15 13:39:46 -07:00
timmy d05075b593 Merge branch 'volume-to-series' into develop
fixup series
2026-08-15 13:39:46 -07:00
timmy b8ed7e662a 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 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