Commit Graph

47 Commits

Author SHA1 Message Date
Timmy Welch
f6be7919d7 Implement support for protofolius's permission scheme 2023-09-06 04:50:05 -04:00
Timmy Welch
f72ebdb149 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.
2023-08-05 03:02:12 -07:00
Timmy Welch
ea84031b87 Add more 4-digit issue number tests 2023-08-04 21:04:21 -07:00
Timmy Welch
2c3a2566cc 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.
2023-08-02 09:00:04 -07:00
Mizaki
2187ddece8 Move volume from ComicSeries to ComicIssue 2023-06-23 22:38:15 +01:00
Timmy Welch
635cb037f1 Merge branch 'mizaki-fix_add_fields' into develop 2023-06-22 17:51:26 -07:00
Timmy Welch
3a287504ae 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
2023-06-15 20:26:38 -07:00
Mizaki
4b415b376f Fix tests 2023-06-08 01:26:03 +01:00
Mizaki
e72347656b Add format (1-shot, limited series, etc.) 2023-05-23 00:27:58 +01:00
Mizaki
97e64fa918 Add maturity_rating, language and country to ComicIssue and pass to metadata. 2023-05-18 02:02:21 +01:00
Mizaki
6cf259191e Add volume and count_of_volumes to ComicSeries 2023-05-12 21:48:45 +01:00
Mizaki
9e86b5e331 Fix tests 2023-03-02 00:23:56 +00:00
Timmy Welch
4eb9e008ce
Update pre-commit 2023-02-10 00:25:20 -08:00
Timmy Welch
f83f72fa12
Improve issue number handling regarding the '#' 2022-12-31 02:15:17 -08:00
Timmy Welch
fb4786159d
Handle issue numbers with more than 3 digits 2022-12-30 21:50:10 -08:00
Timmy Welch
734b83cade
Switch comictalker TypedDicts to dataclasses 2022-12-23 01:58:10 -08:00
Timmy Welch
9f00af4bba
Change issue id and series id to strings 2022-12-23 00:09:19 -08:00
Timmy Welch
521d5634f3
Fix tests 2022-12-22 10:16:32 -08:00
Timmy Welch
1d9840913a
Change all references of volume to series 2022-12-22 10:16:05 -08:00
Mizaki
c34902449f Merge branch 'develop' into infosources
# Conflicts:
#	comictaggerlib/cli.py
#	comictaggerlib/comicvinetalker.py
#	comictaggerlib/taggerwindow.py
#	tests/comicvinetalker_test.py
#	tests/conftest.py
2022-11-07 01:50:47 +00:00
Mizaki
67be086638 Move map comic data to utils along with remove html. Alter tests. 2022-11-05 16:49:59 +00:00
Mizaki
a724fd8430 Compensate for a split empty string returning ['']. I don't see a way around this? 2022-11-05 01:21:51 +00:00
Timmy Welch
685ce014b6
Fix tests for comicvinetalker 2022-11-04 16:27:30 -07:00
Mizaki
b4f6820f56 remove_fetch_alternate_cover_urls.patch 2022-11-03 23:32:35 +00:00
Mizaki
d7976cf9d2 Hack tests. 2022-10-30 11:16:03 +00:00
Mizaki
d23258f359 Change ComicVolume, ComicIssue to image_url and image_thumb_url. Add/change search/volume DB layout to remove duplication of data. Fixup some test. 2022-10-23 22:40:15 +01:00
Mizaki
fb1616aaa1 Remove CV parse date. Strings names. 2022-10-20 00:32:40 +01:00
Mizaki
4be12d857d Reuse CV test data in comic_issue_result data. Cover possible empty volume data in get_volume_issues_info. 2022-10-19 23:30:11 +01:00
Mizaki
43464724bd Convert all start_year to int. 2022-10-15 23:20:50 +01:00
Mizaki
18d861a2be More test fixes that may need to be looked at further. 2022-10-09 23:43:52 +01:00
Mizaki
6a98afb89c After second merge. 2022-10-06 00:34:32 +01:00
Timmy Welch
a6d55cd21a
Update MetadataFormatter
Several custom conversions (the s in {title!s}) have been created
u - str.upper()
l - str.casefold()
S - str.swapcase()
t - str.title()
c - str.Capitalize()

A new syntax has been added '{title+str}' and '{title-str}':
The + indicates an alternate value.
The - indicates a default value.

If the title of a comic is not set then
'{title-str}' will output 'str'
and
'{title+str} will output ''

If the title of a comic is 'hello' then
'{title+str}' will output 'str'
and
'{title-str}' will output 'hello'
2022-10-04 16:15:20 -07:00
Timmy Welch
acaf5ed510
Fix issues with renaming
Stop a crash when renaming
Properly handle replacements on linux/macos
2022-09-17 01:28:26 -07:00
Timmy Welch
bc25acde9f
Fix sorting
Switch natsort to use os_sorted
Remove directories when returning a list of files in a comic
Update tests to account for '!cover.jpg'
2022-09-10 19:48:50 -07:00
Timmy Welch
06255f7848 Perform replacements on literal text and format values 2022-08-18 13:48:23 -07:00
Timmy Welch
00e649bb4c Move colon handling when renaming to the MetadataFormatter class
Fixes #356
2022-08-17 16:16:38 -07:00
Timmy Welch
aadeb07c49 Fix issues
Refactor add_to_path with tests
Fix type hints for titles_match
Use casefold in get_language
Fix using the recursive flag in cli mode
Add http status code to ComicVine exceptions
Fix parenthesis getting removed when renaming
Add more tests
2022-08-08 18:05:06 -07:00
Timmy Welch
94be266e17 Handle the 'primary' key missing in get_primary_credit
Fixes #342
Add better exception handling for the formatter
2022-07-27 23:24:34 -07:00
Timmy Welch
6e7660c3d9 Tests
Add tests for IssueIdentifier
Change tags to a set from a string
Add copy and replace convenience functions on GenericMetadata
Update deprecated resampling code for Pillow
Change comicvine test data to be the same as the test comic
Cleanup tests
2022-07-18 12:06:49 -07:00
Timmy Welch
c0880c9afe Account for aliases field from CV 2022-07-13 23:11:14 -07:00
Timmy Welch
a00891f622 Add more tests 2022-07-13 22:27:31 -07:00
Timmy Welch
0bbf417133 Tests
Add tests for ComicCacher and ComicVineTalker
Move fixtures to conftest.py
Move test data to testing module
2022-07-11 18:40:12 -07:00
Timmy Welch
cb5b321539 Update filerenamer
Remove space separated right partition of previous literal text
2022-06-26 01:53:40 -07:00
Timmy Welch
fbbd36ab4d make tests and testing proper modules 2022-06-23 13:27:36 -07:00
Timmy Welch
b9af606f87 Improve filename parsing and cover image scaling
Cover image scaling now uses the smooth transformation option in Qt
Filename parsing now identifies a single number as a filename
e.g. '52.cbz' gets parsed as issue: 52 and series: 52
2022-06-09 12:31:57 -07:00
Timmy Welch
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 Welch
fd4c453854 Apply pre-commit configuration 2022-06-02 18:32:16 -07:00