diff --git a/comictaggerlib/autotagstartwindow.py b/comictaggerlib/autotagstartwindow.py
index a1e54a0..f1a49ae 100644
--- a/comictaggerlib/autotagstartwindow.py
+++ b/comictaggerlib/autotagstartwindow.py
@@ -46,11 +46,11 @@ class AutoTagStartWindow(QtWidgets.QDialog):
self.leSearchString.setEnabled(False)
self.cbxSaveOnLowConfidence.setChecked(self.config.Auto_Tag__save_on_low_confidence)
- self.cbxDontUseYear.setChecked(self.config.Auto_Tag__dont_use_year_when_identifying)
+ self.cbxDontUseYear.setChecked(self.config.Auto_Tag__dont_use_year_when_auto_tagging)
self.cbxAssumeIssueOne.setChecked(self.config.Auto_Tag__assume_issue_one)
self.cbxIgnoreLeadingDigitsInFilename.setChecked(self.config.Auto_Tag__ignore_leading_numbers_in_filename)
self.cbxRemoveAfterSuccess.setChecked(self.config.Auto_Tag__remove_archive_after_successful_match)
- self.cbxAutoImprint.setChecked(self.config.Issue_Identifier__auto_imprint)
+ self.cbxAutoImprint.setChecked(self.config.Auto_Tag__auto_imprint)
nlmt_tip = """The Name Match Ratio Threshold: Auto-Identify is for eliminating automatic
search matches that are too long compared to your series name search. The lower
@@ -95,7 +95,7 @@ class AutoTagStartWindow(QtWidgets.QDialog):
# persist some settings
self.config.Auto_Tag__save_on_low_confidence = self.auto_save_on_low
- self.config.Auto_Tag__dont_use_year_when_identifying = self.dont_use_year
+ self.config.Auto_Tag__dont_use_year_when_auto_tagging = self.dont_use_year
self.config.Auto_Tag__assume_issue_one = self.assume_issue_one
self.config.Auto_Tag__ignore_leading_numbers_in_filename = self.ignore_leading_digits_in_filename
self.config.Auto_Tag__remove_archive_after_successful_match = self.remove_after_success
diff --git a/comictaggerlib/cbltransformer.py b/comictaggerlib/cbltransformer.py
index 3b38232..145b3da 100644
--- a/comictaggerlib/cbltransformer.py
+++ b/comictaggerlib/cbltransformer.py
@@ -30,7 +30,7 @@ class CBLTransformer:
self.config = config
def apply(self) -> GenericMetadata:
- if self.config.Metadata_Options__cbl_assume_lone_credit_is_primary:
+ if self.config.Metadata_Options__assume_lone_credit_is_primary:
# helper
def set_lone_primary(role_list: list[str]) -> tuple[Credit | None, int]:
lone_credit: Credit | None = None
@@ -56,19 +56,19 @@ class CBLTransformer:
c.primary = False
self.metadata.add_credit(c.person, "Artist", True)
- if self.config.Metadata_Options__cbl_copy_characters_to_tags:
+ if self.config.Metadata_Options__copy_characters_to_tags:
self.metadata.tags.update(x for x in self.metadata.characters)
- if self.config.Metadata_Options__cbl_copy_teams_to_tags:
+ if self.config.Metadata_Options__copy_teams_to_tags:
self.metadata.tags.update(x for x in self.metadata.teams)
- if self.config.Metadata_Options__cbl_copy_locations_to_tags:
+ if self.config.Metadata_Options__copy_locations_to_tags:
self.metadata.tags.update(x for x in self.metadata.locations)
- if self.config.Metadata_Options__cbl_copy_storyarcs_to_tags:
+ if self.config.Metadata_Options__copy_storyarcs_to_tags:
self.metadata.tags.update(x for x in self.metadata.story_arcs)
- if self.config.Metadata_Options__cbl_copy_notes_to_comments:
+ if self.config.Metadata_Options__copy_notes_to_comments:
if self.metadata.notes is not None:
if self.metadata.description is None:
self.metadata.description = ""
@@ -77,7 +77,7 @@ class CBLTransformer:
if self.metadata.notes not in self.metadata.description:
self.metadata.description += self.metadata.notes
- if self.config.Metadata_Options__cbl_copy_weblink_to_comments:
+ if self.config.Metadata_Options__copy_weblink_to_comments:
for web_link in self.metadata.web_links:
temp_desc = self.metadata.description
if temp_desc is None:
diff --git a/comictaggerlib/cli.py b/comictaggerlib/cli.py
index 07ba709..6f3ff1a 100644
--- a/comictaggerlib/cli.py
+++ b/comictaggerlib/cli.py
@@ -113,7 +113,7 @@ class CLI:
self.post_process_matches(match_results)
- if self.config.Runtime_Options__online:
+ if self.config.Auto_Tag__online:
self.output(
f"\nFiles tagged with metadata provided by {self.current_talker().name} {self.current_talker().website}",
)
@@ -127,7 +127,7 @@ class CLI:
logger.exception(f"Error retrieving issue details. Save aborted.\n{e}")
return GenericMetadata()
- if self.config.Metadata_Options__cbl_apply_transform_on_import:
+ if self.config.Metadata_Options__apply_transform_on_import:
ct_md = CBLTransformer(ct_md, self.config).apply()
return ct_md
@@ -236,7 +236,7 @@ class CLI:
md.apply_default_page_list(ca.get_page_name_list())
# now, overlay the parsed filename info
- if self.config.Runtime_Options__parse_filename:
+ if self.config.Auto_Tag__parse_filename:
f_md = ca.metadata_from_filename(
self.config.Filename_Parsing__filename_parser,
self.config.Filename_Parsing__remove_c2c,
@@ -259,7 +259,7 @@ class CLI:
logger.error("Failed to load metadata for %s: %s", ca.path, e)
# finally, use explicit stuff (always 'overlay' mode)
- md.overlay(self.config.Runtime_Options__metadata, mode=merge.Mode.OVERLAY, merge_lists=True)
+ md.overlay(self.config.Auto_Tag__metadata, mode=merge.Mode.OVERLAY, merge_lists=True)
return md
@@ -332,7 +332,7 @@ class CLI:
def copy_style(self, ca: ComicArchive, md: GenericMetadata, style: str) -> Status:
dst_style_name = md_styles[style].name()
- if not self.config.Runtime_Options__overwrite and ca.has_metadata(style):
+ if not self.config.Runtime_Options__skip_existing_metadata and ca.has_metadata(style):
self.output(f"{ca.path}: Already has {dst_style_name} tags. Not overwriting.")
return Status.existing_tags
if self.config.Commands__copy == style:
@@ -341,7 +341,7 @@ class CLI:
src_style_name = md_styles[self.config.Commands__copy].name()
if not self.config.Runtime_Options__dryrun:
- if self.config.Metadata_Options__cbl_apply_transform_on_bulk_operation == "cbi":
+ if self.config.Metadata_Options__apply_transform_on_bulk_operation and style == "cbi":
md = CBLTransformer(md, self.config).apply()
if ca.write_metadata(md, style):
@@ -378,7 +378,7 @@ class CLI:
return res
def save(self, ca: ComicArchive, match_results: OnlineMatchResults) -> tuple[Result, OnlineMatchResults]:
- if not self.config.Runtime_Options__overwrite:
+ if not self.config.Runtime_Options__skip_existing_metadata:
for style in self.config.Runtime_Options__type_modify:
if ca.has_metadata(style):
self.output(f"{ca.path}: Already has {md_styles[style].name()} tags. Not overwriting.")
@@ -404,11 +404,11 @@ class CLI:
# now, search online
ct_md = GenericMetadata()
- if self.config.Runtime_Options__online:
- if self.config.Runtime_Options__issue_id is not None:
+ if self.config.Auto_Tag__online:
+ if self.config.Auto_Tag__issue_id is not None:
# we were given the actual issue ID to search with
try:
- ct_md = self.current_talker().fetch_comic_data(self.config.Runtime_Options__issue_id)
+ ct_md = self.current_talker().fetch_comic_data(self.config.Auto_Tag__issue_id)
except TalkerError as e:
logger.exception(f"Error retrieving issue details. Save aborted.\n{e}")
res = Result(
@@ -421,7 +421,7 @@ class CLI:
return res, match_results
if ct_md is None or ct_md.is_empty:
- logger.error("No match for ID %s was found.", self.config.Runtime_Options__issue_id)
+ logger.error("No match for ID %s was found.", self.config.Auto_Tag__issue_id)
res = Result(
Action.save,
status=Status.match_failure,
@@ -576,7 +576,7 @@ class CLI:
renamer = FileRenamer(
None,
- platform="universal" if self.config.File_Rename__strict else "auto",
+ platform="universal" if self.config.File_Rename__strict_filenames else "auto",
replacements=self.config.File_Rename__replacements,
)
renamer.set_metadata(md, ca.path.name)
diff --git a/comictaggerlib/ctsettings/commandline.py b/comictaggerlib/ctsettings/commandline.py
index b9711b5..2d40384 100644
--- a/comictaggerlib/ctsettings/commandline.py
+++ b/comictaggerlib/ctsettings/commandline.py
@@ -27,15 +27,9 @@ import settngs
from comicapi import merge, utils
from comicapi.comicarchive import metadata_styles
-from comicapi.genericmetadata import GenericMetadata
from comictaggerlib import ctversion
from comictaggerlib.ctsettings.settngs_namespace import SettngsNS as ct_ns
-from comictaggerlib.ctsettings.types import (
- ComicTaggerPaths,
- metadata_type,
- metadata_type_single,
- parse_metadata_from_string,
-)
+from comictaggerlib.ctsettings.types import ComicTaggerPaths, metadata_type, metadata_type_single
from comictaggerlib.resulttypes import Action
logger = logging.getLogger(__name__)
@@ -76,54 +70,18 @@ def register_runtime(parser: settngs.Manager) -> None:
help="Be noisy when doing what it does. Use a second time to enable debug logs.\nShort option cannot be combined with other options.",
file=False,
)
- parser.add_setting("--quiet", "-q", action="store_true", help="Don't say much (for print mode).", file=False)
+ parser.add_setting("-q", "--quiet", action="store_true", help="Don't say much (for print mode).", file=False)
parser.add_setting(
- "--json",
"-j",
+ "--json",
action="store_true",
help="Output json on stdout. Ignored in interactive mode.\n\n",
file=False,
)
parser.add_setting(
- "--abort-on-conflict",
+ "--raw",
action="store_true",
- help="""Don't export to zip if intended new filename exists\n(otherwise, creates a new unique filename).\n\n""",
- file=False,
- )
- parser.add_setting(
- "--delete-original",
- action="store_true",
- help="""Delete original archive after successful export to Zip.\n(only relevant for -e)""",
- file=False,
- )
- parser.add_setting(
- "-f",
- "--parse-filename",
- "--parsefilename",
- action="store_true",
- help="""Parse the filename to get some info,\nspecifically series name, issue number,\nvolume, and publication year.\n\n""",
- file=False,
- )
- parser.add_setting(
- "--id",
- dest="issue_id",
- type=str,
- help="""Use the issue ID when searching online.\nOverrides all other metadata.\n\n""",
- file=False,
- )
- parser.add_setting(
- "-o",
- "--online",
- action="store_true",
- help="""Search online and attempt to identify file\nusing existing metadata and images in archive.\nMay be used in conjunction with -f and -m.\n\n""",
- file=False,
- )
- parser.add_setting(
- "-m",
- "--metadata",
- default=GenericMetadata(),
- type=parse_metadata_from_string,
- help="""Explicitly define some tags to be used in YAML syntax. Use @file.yaml to read from a file. e.g.:\n"series: Plastic Man, publisher: Quality Comics, year: "\n"series: 'Kickers, Inc.', issue: '1', year: 1986"\nIf you want to erase a tag leave the value blank.\nSome names that can be used: series, issue, issue_count, year,\npublisher, title\n\n""",
+ help="""With -p, will print out the raw tag block(s) from the file.""",
file=False,
)
parser.add_setting(
@@ -138,27 +96,7 @@ def register_runtime(parser: settngs.Manager) -> None:
dest="abort_on_low_confidence",
action=argparse.BooleanOptionalAction,
default=True,
- help="""Abort save operation when online match is of low confidence.\n""",
- file=False,
- )
- parser.add_setting(
- "--summary",
- default=True,
- action=argparse.BooleanOptionalAction,
- help="Show the summary after a save operation.\n",
- file=False,
- )
- parser.add_setting(
- "--raw",
- action="store_true",
- help="""With -p, will print out the raw tag block(s)\nfrom the file.\n""",
- file=False,
- )
- parser.add_setting(
- "-R",
- "--recursive",
- action="store_true",
- help="Recursively include files in sub-folders.",
+ help="""Abort save operation when online match is of low confidence.""",
file=False,
)
parser.add_setting(
@@ -168,8 +106,36 @@ def register_runtime(parser: settngs.Manager) -> None:
help="Don't actually modify file (only relevant for -d, -s, or -r).\n\n",
file=False,
)
- parser.add_setting("--darkmode", action="store_true", help="Windows only. Force a dark pallet", file=False)
+ parser.add_setting(
+ "--summary",
+ default=True,
+ action=argparse.BooleanOptionalAction,
+ help="Show the summary after a save operation.",
+ file=False,
+ )
+ parser.add_setting(
+ "-R",
+ "--recursive",
+ action="store_true",
+ help="Recursively include files in sub-folders.",
+ file=False,
+ )
parser.add_setting("-g", "--glob", action="store_true", help="Windows only. Enable globbing", file=False)
+ parser.add_setting("--darkmode", action="store_true", help="Windows only. Force a dark pallet", file=False)
+ parser.add_setting("--no-gui", action="store_true", help="Do not open the GUI, force the commandline", file=False)
+
+ parser.add_setting(
+ "--abort-on-conflict",
+ action="store_true",
+ help="""Don't export to zip if intended new filename exists\n(otherwise, creates a new unique filename).\n\n""",
+ file=False,
+ )
+ parser.add_setting(
+ "--delete-original",
+ action="store_true",
+ help="""Delete original archive after successful export to Zip.\n(only relevant for -e)\n\n""",
+ file=False,
+ )
parser.add_setting(
"-t",
"--type-read",
@@ -209,13 +175,12 @@ def register_runtime(parser: settngs.Manager) -> None:
file=False,
)
parser.add_setting(
- "--overwrite",
+ "--skip-existing-metadata",
action=argparse.BooleanOptionalAction,
default=True,
- help="""Apply metadata to already tagged archives, otherwise skips archives with existing metadata (relevant for -s or -c).""",
+ help="""Skip archives that already have tags specified with -t,\notherwise merges new metadata with existing metadata (relevant for -s or -c).""",
file=False,
)
- parser.add_setting("--no-gui", action="store_true", help="Do not open the GUI, force the commandline", file=False)
parser.add_setting("files", nargs="*", default=[], file=False)
@@ -238,7 +203,7 @@ def register_commands(parser: settngs.Manager) -> None:
dest="command",
action="store_const",
const=Action.delete,
- help="Deletes the tag block of specified type (via --type-modify).\n",
+ help="Deletes the tag block of specified type (via -t).",
file=False,
)
parser.add_setting(
diff --git a/comictaggerlib/ctsettings/file.py b/comictaggerlib/ctsettings/file.py
index 42ee11d..e40d784 100644
--- a/comictaggerlib/ctsettings/file.py
+++ b/comictaggerlib/ctsettings/file.py
@@ -6,7 +6,9 @@ import uuid
import settngs
from comicapi import merge, utils
+from comicapi.genericmetadata import GenericMetadata
from comictaggerlib.ctsettings.settngs_namespace import SettngsNS as ct_ns
+from comictaggerlib.ctsettings.types import parse_metadata_from_string
from comictaggerlib.defaults import DEFAULT_REPLACEMENTS, Replacement, Replacements
@@ -41,7 +43,6 @@ def internal(parser: settngs.Manager) -> None:
def identifier(parser: settngs.Manager) -> None:
- # identifier settings
parser.add_setting(
"--series-match-identify-thresh",
default=91,
@@ -59,27 +60,7 @@ def identifier(parser: settngs.Manager) -> None:
"--border-crop-percent",
default=10,
type=int,
- help="ComicTagger will automatically add an additional cover that has any black borders cropped. If the difference in height is less than %(default)s%% the cover will not be cropped.",
- )
- parser.add_setting(
- "--publisher-filter",
- default=["Panini Comics", "Abril", "Planeta DeAgostini", "Editorial Televisa", "Dino Comics"],
- action="extend",
- nargs="+",
- help="When enabled, filters the listed publishers from all search results. Ending a publisher with a '-' removes a publisher from this list",
- )
- parser.add_setting(
- "--clear-metadata",
- default=False,
- action=argparse.BooleanOptionalAction,
- help="Clears all existing metadata during import, default is to merge metadata.\nMay be used in conjunction with -o, -f and -m.\n\n",
- )
- parser.add_setting(
- "-a",
- "--auto-imprint",
- default=False,
- action=argparse.BooleanOptionalAction,
- help="Enables the auto imprint functionality.\ne.g. if the publisher is set to 'vertigo' it\nwill be updated to 'DC Comics' and the imprint\nproperty will be set to 'Vertigo'.\n\n",
+ help="ComicTagger will automatically add an additional cover that has any black borders cropped.\nIf the difference in height is less than %(default)s%% the cover will not be cropped.\n\n",
)
parser.add_setting(
@@ -94,23 +75,15 @@ def identifier(parser: settngs.Manager) -> None:
action=argparse.BooleanOptionalAction,
help="Puts series that are an exact match at the top of the list",
)
- parser.add_setting(
- "--always-use-publisher-filter",
- default=False,
- action=argparse.BooleanOptionalAction,
- help="Enables the publisher filter",
- )
def dialog(parser: settngs.Manager) -> None:
- # Show/ask dialog flags
parser.add_setting("show_disclaimer", default=True, cmdline=False)
parser.add_setting("dont_notify_about_this_version", default="", cmdline=False)
parser.add_setting("ask_about_usage_stats", default=True, cmdline=False)
def filename(parser: settngs.Manager) -> None:
- # filename parsing settings
parser.add_setting(
"--filename-parser",
default=utils.Parser.ORIGINAL,
@@ -123,19 +96,19 @@ def filename(parser: settngs.Manager) -> None:
"--remove-c2c",
default=False,
action=argparse.BooleanOptionalAction,
- help="Removes c2c from filenames. Requires --complicated-parser",
+ help="Removes c2c from filenames.\nRequires --complicated-parser\n\n",
)
parser.add_setting(
"--remove-fcbd",
default=False,
action=argparse.BooleanOptionalAction,
- help="Removes FCBD/free comic book day from filenames. Requires --complicated-parser",
+ help="Removes FCBD/free comic book day from filenames.\nRequires --complicated-parser\n\n",
)
parser.add_setting(
"--remove-publisher",
default=False,
action=argparse.BooleanOptionalAction,
- help="Attempts to remove publisher names from filenames, currently limited to Marvel and DC. Requires --complicated-parser",
+ help="Attempts to remove publisher names from filenames, currently limited to Marvel and DC.\nRequires --complicated-parser\n\n",
)
parser.add_setting(
"--split-words",
@@ -147,18 +120,17 @@ def filename(parser: settngs.Manager) -> None:
"--protofolius-issue-number-scheme",
default=False,
action=argparse.BooleanOptionalAction,
- help="Use an issue number scheme devised by protofolius for encoding format information as a letter in front of an issue number. Implies --allow-issue-start-with-letter. Requires --complicated-parser",
+ help="Use an issue number scheme devised by protofolius for encoding format information as a letter in front of an issue number.\nImplies --allow-issue-start-with-letter. Requires --complicated-parser\n\n",
)
parser.add_setting(
"--allow-issue-start-with-letter",
default=False,
action=argparse.BooleanOptionalAction,
- help="Allows an issue number to start with a single letter (e.g. '#X01'). Requires --complicated-parser",
+ help="Allows an issue number to start with a single letter (e.g. '#X01').\nRequires --complicated-parser\n\n",
)
def talker(parser: settngs.Manager) -> None:
- # General settings for talkers
parser.add_setting(
"--source",
default="comicvine",
@@ -175,27 +147,26 @@ def talker(parser: settngs.Manager) -> None:
def md_options(parser: settngs.Manager) -> None:
# CBL Transform settings
- parser.add_setting("--cbl-assume-lone-credit-is-primary", default=False, action=argparse.BooleanOptionalAction)
- parser.add_setting("--cbl-copy-characters-to-tags", default=False, action=argparse.BooleanOptionalAction)
- parser.add_setting("--cbl-copy-teams-to-tags", default=False, action=argparse.BooleanOptionalAction)
- parser.add_setting("--cbl-copy-locations-to-tags", default=False, action=argparse.BooleanOptionalAction)
- parser.add_setting("--cbl-copy-storyarcs-to-tags", default=False, action=argparse.BooleanOptionalAction)
- parser.add_setting("--cbl-copy-notes-to-comments", default=False, action=argparse.BooleanOptionalAction)
- parser.add_setting("--cbl-copy-weblink-to-comments", default=False, action=argparse.BooleanOptionalAction)
- parser.add_setting("--cbl-apply-transform-on-import", default=False, action=argparse.BooleanOptionalAction)
- parser.add_setting("--cbl-apply-transform-on-bulk-operation", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--assume-lone-credit-is-primary", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--copy-characters-to-tags", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--copy-teams-to-tags", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--copy-locations-to-tags", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--copy-storyarcs-to-tags", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--copy-notes-to-comments", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--copy-weblink-to-comments", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--apply-transform-on-import", default=False, action=argparse.BooleanOptionalAction)
+ parser.add_setting("--apply-transform-on-bulk-operation", default=False, action=argparse.BooleanOptionalAction)
parser.add_setting("use_short_metadata_names", default=False, action=argparse.BooleanOptionalAction, cmdline=False)
parser.add_setting(
- "--disable-cr",
- default=False,
+ "--cr",
+ default=True,
action=argparse.BooleanOptionalAction,
- help="Disable the ComicRack metadata type",
+ help="Enable the ComicRack metadata type. Turn off to only use the CIX metadata type.",
)
def rename(parser: settngs.Manager) -> None:
- # Rename settings
parser.add_setting("--template", default="{series} #{issue} ({year})", help="The teplate to use when renaming")
parser.add_setting(
"--issue-number-padding",
@@ -229,7 +200,7 @@ def rename(parser: settngs.Manager) -> None:
help="Ignores the filename when moving renamed files to a separate directory",
)
parser.add_setting(
- "--strict",
+ "--strict-filenames",
default=False,
action=argparse.BooleanOptionalAction,
help="Ensures that filenames are valid for all OSs",
@@ -238,7 +209,13 @@ def rename(parser: settngs.Manager) -> None:
def autotag(parser: settngs.Manager) -> None:
- # Auto-tag stickies
+ parser.add_setting(
+ "-o",
+ "--online",
+ action="store_true",
+ help="""Search online and attempt to identify file\nusing existing metadata and images in archive.\nMay be used in conjunction with -f and -m.\n\n""",
+ file=False,
+ )
parser.add_setting(
"--save-on-low-confidence",
default=False,
@@ -246,10 +223,10 @@ def autotag(parser: settngs.Manager) -> None:
help="Automatically save metadata on low-confidence matches",
)
parser.add_setting(
- "--dont-use-year-when-identifying",
+ "--dont-use-year-when-auto-tagging",
default=False,
action=argparse.BooleanOptionalAction,
- help="Ignore the year metadata attribute when identifying a comic",
+ help="Ignore the year metadata attribute when auto-tagging a comic",
)
parser.add_setting(
"-1",
@@ -265,12 +242,60 @@ def autotag(parser: settngs.Manager) -> None:
help="When searching ignore leading numbers in the filename",
)
parser.add_setting("remove_archive_after_successful_match", default=False, cmdline=False)
+ parser.add_setting(
+ "-f",
+ "--parse-filename",
+ action="store_true",
+ help="""Parse the filename to get some info,\nspecifically series name, issue number,\nvolume, and publication year.\n\n""",
+ file=False,
+ )
+ parser.add_setting(
+ "--id",
+ dest="issue_id",
+ type=str,
+ help="""Use the issue ID when searching online.\nOverrides all other metadata.\n\n""",
+ file=False,
+ )
+ parser.add_setting(
+ "-m",
+ "--metadata",
+ default=GenericMetadata(),
+ type=parse_metadata_from_string,
+ help="""Explicitly define some tags to be used in YAML syntax. Use @file.yaml to read from a file. e.g.:\n"series: Plastic Man, publisher: Quality Comics, year: "\n"series: 'Kickers, Inc.', issue: '1', year: 1986"\nIf you want to erase a tag leave the value blank.\nSome names that can be used: series, issue, issue_count, year,\npublisher, title\n\n""",
+ file=False,
+ )
+ parser.add_setting(
+ "--clear-metadata",
+ default=False,
+ action=argparse.BooleanOptionalAction,
+ help="Clears all existing metadata during import, default is to merge metadata.\nMay be used in conjunction with -o, -f and -m.\n\n",
+ )
+ parser.add_setting(
+ "--publisher-filter",
+ default=["Panini Comics", "Abril", "Planeta DeAgostini", "Editorial Televisa", "Dino Comics"],
+ action="extend",
+ nargs="+",
+ help="When enabled, filters the listed publishers from all search results.\nEnding a publisher with a '-' removes a publisher from this list\n\n",
+ )
+ parser.add_setting(
+ "--use-publisher-filter",
+ default=False,
+ action=argparse.BooleanOptionalAction,
+ help="Enables the publisher filter",
+ )
+ parser.add_setting(
+ "-a",
+ "--auto-imprint",
+ default=False,
+ action=argparse.BooleanOptionalAction,
+ help="Enables the auto imprint functionality.\ne.g. if the publisher is set to 'vertigo' it\nwill be updated to 'DC Comics' and the imprint\nproperty will be set to 'Vertigo'.\n\n",
+ )
def parse_filter(config: settngs.Config[ct_ns]) -> settngs.Config[ct_ns]:
new_filter = []
remove = []
- for x in config[0].Issue_Identifier__publisher_filter:
+ for x in config[0].Auto_Tag__publisher_filter:
x = x.strip()
if x: # ignore empty arguments
if x[-1] == "-": # this publisher needs to be removed. We remove after all publishers have been enumerated
@@ -281,7 +306,7 @@ def parse_filter(config: settngs.Config[ct_ns]) -> settngs.Config[ct_ns]:
for x in remove: # remove publishers
if x in new_filter:
new_filter.remove(x)
- config[0].Issue_Identifier__publisher_filter = new_filter
+ config[0].Auto_Tag__publisher_filter = new_filter
return config
diff --git a/comictaggerlib/ctsettings/plugin.py b/comictaggerlib/ctsettings/plugin.py
index 66432cc..007ceb2 100644
--- a/comictaggerlib/ctsettings/plugin.py
+++ b/comictaggerlib/ctsettings/plugin.py
@@ -32,7 +32,7 @@ def archiver(manager: settngs.Manager) -> None:
manager.add_setting(
f"--{settngs.sanitize_name(archiver.exe)}",
default=archiver.exe,
- help="Path to the %(default)s executable\n\n",
+ help="Path to the %(default)s executable",
)
diff --git a/comictaggerlib/ctsettings/settngs_namespace.py b/comictaggerlib/ctsettings/settngs_namespace.py
index fcfd4f2..c8eb061 100644
--- a/comictaggerlib/ctsettings/settngs_namespace.py
+++ b/comictaggerlib/ctsettings/settngs_namespace.py
@@ -19,29 +19,25 @@ class SettngsNS(settngs.TypedNS):
Runtime_Options__config: comictaggerlib.ctsettings.types.ComicTaggerPaths
Runtime_Options__verbose: int
- Runtime_Options__abort_on_conflict: bool
- Runtime_Options__delete_original: bool
- Runtime_Options__parse_filename: bool
- Runtime_Options__issue_id: str | None
- Runtime_Options__online: bool
- Runtime_Options__metadata: comicapi.genericmetadata.GenericMetadata
- Runtime_Options__interactive: bool
- Runtime_Options__abort_on_low_confidence: bool
- Runtime_Options__summary: bool
- Runtime_Options__raw: bool
- Runtime_Options__recursive: bool
- Runtime_Options__dryrun: bool
- Runtime_Options__darkmode: bool
- Runtime_Options__glob: bool
Runtime_Options__quiet: bool
Runtime_Options__json: bool
- Runtime_Options__type_modify: list[str]
+ Runtime_Options__raw: bool
+ Runtime_Options__interactive: bool
+ Runtime_Options__abort_on_low_confidence: bool
+ Runtime_Options__dryrun: bool
+ Runtime_Options__summary: bool
+ Runtime_Options__recursive: bool
+ Runtime_Options__glob: bool
+ Runtime_Options__darkmode: bool
+ Runtime_Options__no_gui: bool
+ Runtime_Options__abort_on_conflict: bool
+ Runtime_Options__delete_original: bool
Runtime_Options__type_read: list[str]
+ Runtime_Options__type_modify: list[str]
Runtime_Options__read_style_overlay: comicapi.merge.Mode
Runtime_Options__source_overlay: comicapi.merge.Mode
Runtime_Options__overlay_merge_lists: bool
- Runtime_Options__overwrite: bool
- Runtime_Options__no_gui: bool
+ Runtime_Options__skip_existing_metadata: bool
Runtime_Options__files: list[str]
internal__install_id: str
@@ -61,14 +57,10 @@ class SettngsNS(settngs.TypedNS):
internal__sort_direction: int
Issue_Identifier__series_match_identify_thresh: int
- Issue_Identifier__border_crop_percent: int
- Issue_Identifier__publisher_filter: list[str]
Issue_Identifier__series_match_search_thresh: int
- Issue_Identifier__clear_metadata: bool
- Issue_Identifier__auto_imprint: bool
+ Issue_Identifier__border_crop_percent: int
Issue_Identifier__sort_series_by_year: bool
Issue_Identifier__exact_series_matches_first: bool
- Issue_Identifier__always_use_publisher_filter: bool
Filename_Parsing__filename_parser: comicapi.utils.Parser
Filename_Parsing__remove_c2c: bool
@@ -81,17 +73,17 @@ class SettngsNS(settngs.TypedNS):
Sources__source: str
Sources__remove_html_tables: bool
- Metadata_Options__cbl_assume_lone_credit_is_primary: bool
- Metadata_Options__cbl_copy_characters_to_tags: bool
- Metadata_Options__cbl_copy_teams_to_tags: bool
- Metadata_Options__cbl_copy_locations_to_tags: bool
- Metadata_Options__cbl_copy_storyarcs_to_tags: bool
- Metadata_Options__cbl_copy_notes_to_comments: bool
- Metadata_Options__cbl_copy_weblink_to_comments: bool
- Metadata_Options__cbl_apply_transform_on_import: bool
- Metadata_Options__cbl_apply_transform_on_bulk_operation: bool
+ Metadata_Options__assume_lone_credit_is_primary: bool
+ Metadata_Options__copy_characters_to_tags: bool
+ Metadata_Options__copy_teams_to_tags: bool
+ Metadata_Options__copy_locations_to_tags: bool
+ Metadata_Options__copy_storyarcs_to_tags: bool
+ Metadata_Options__copy_notes_to_comments: bool
+ Metadata_Options__copy_weblink_to_comments: bool
+ Metadata_Options__apply_transform_on_import: bool
+ Metadata_Options__apply_transform_on_bulk_operation: bool
Metadata_Options__use_short_metadata_names: bool
- Metadata_Options__disable_cr: bool
+ Metadata_Options__cr: bool
File_Rename__template: str
File_Rename__issue_number_padding: int
@@ -100,14 +92,22 @@ class SettngsNS(settngs.TypedNS):
File_Rename__dir: str
File_Rename__move: bool
File_Rename__only_move: bool
- File_Rename__strict: bool
+ File_Rename__strict_filenames: bool
File_Rename__replacements: comictaggerlib.defaults.Replacements
+ Auto_Tag__online: bool
Auto_Tag__save_on_low_confidence: bool
- Auto_Tag__dont_use_year_when_identifying: bool
+ Auto_Tag__dont_use_year_when_auto_tagging: bool
Auto_Tag__assume_issue_one: bool
Auto_Tag__ignore_leading_numbers_in_filename: bool
Auto_Tag__remove_archive_after_successful_match: bool
+ Auto_Tag__parse_filename: bool
+ Auto_Tag__issue_id: str | None
+ Auto_Tag__metadata: comicapi.genericmetadata.GenericMetadata
+ Auto_Tag__clear_metadata: bool
+ Auto_Tag__publisher_filter: list[str]
+ Auto_Tag__use_publisher_filter: bool
+ Auto_Tag__auto_imprint: bool
General__check_for_new_version: bool
General__prompt_on_save: bool
@@ -132,29 +132,25 @@ class Commands(typing.TypedDict):
class Runtime_Options(typing.TypedDict):
config: comictaggerlib.ctsettings.types.ComicTaggerPaths
verbose: int
- abort_on_conflict: bool
- delete_original: bool
- parse_filename: bool
- issue_id: str | None
- online: bool
- metadata: comicapi.genericmetadata.GenericMetadata
- interactive: bool
- abort_on_low_confidence: bool
- summary: bool
- raw: bool
- recursive: bool
- dryrun: bool
- darkmode: bool
- glob: bool
quiet: bool
json: bool
- type_modify: list[str]
+ raw: bool
+ interactive: bool
+ abort_on_low_confidence: bool
+ dryrun: bool
+ summary: bool
+ recursive: bool
+ glob: bool
+ darkmode: bool
+ no_gui: bool
+ abort_on_conflict: bool
+ delete_original: bool
type_read: list[str]
+ type_modify: list[str]
read_style_overlay: comicapi.merge.Mode
source_overlay: comicapi.merge.Mode
overlay_merge_lists: bool
- overwrite: bool
- no_gui: bool
+ skip_existing_metadata: bool
files: list[str]
@@ -178,14 +174,10 @@ class internal(typing.TypedDict):
class Issue_Identifier(typing.TypedDict):
series_match_identify_thresh: int
- border_crop_percent: int
- publisher_filter: list[str]
series_match_search_thresh: int
- clear_metadata: bool
- auto_imprint: bool
+ border_crop_percent: int
sort_series_by_year: bool
exact_series_matches_first: bool
- always_use_publisher_filter: bool
class Filename_Parsing(typing.TypedDict):
@@ -204,17 +196,17 @@ class Sources(typing.TypedDict):
class Metadata_Options(typing.TypedDict):
- cbl_assume_lone_credit_is_primary: bool
- cbl_copy_characters_to_tags: bool
- cbl_copy_teams_to_tags: bool
- cbl_copy_locations_to_tags: bool
- cbl_copy_storyarcs_to_tags: bool
- cbl_copy_notes_to_comments: bool
- cbl_copy_weblink_to_comments: bool
- cbl_apply_transform_on_import: bool
- cbl_apply_transform_on_bulk_operation: bool
+ assume_lone_credit_is_primary: bool
+ copy_characters_to_tags: bool
+ copy_teams_to_tags: bool
+ copy_locations_to_tags: bool
+ copy_storyarcs_to_tags: bool
+ copy_notes_to_comments: bool
+ copy_weblink_to_comments: bool
+ apply_transform_on_import: bool
+ apply_transform_on_bulk_operation: bool
use_short_metadata_names: bool
- disable_cr: bool
+ cr: bool
class File_Rename(typing.TypedDict):
@@ -225,16 +217,24 @@ class File_Rename(typing.TypedDict):
dir: str
move: bool
only_move: bool
- strict: bool
+ strict_filenames: bool
replacements: comictaggerlib.defaults.Replacements
class Auto_Tag(typing.TypedDict):
+ online: bool
save_on_low_confidence: bool
- dont_use_year_when_identifying: bool
+ dont_use_year_when_auto_tagging: bool
assume_issue_one: bool
ignore_leading_numbers_in_filename: bool
remove_archive_after_successful_match: bool
+ parse_filename: bool
+ issue_id: str | None
+ metadata: comicapi.genericmetadata.GenericMetadata
+ clear_metadata: bool
+ publisher_filter: list[str]
+ use_publisher_filter: bool
+ auto_imprint: bool
class General(typing.TypedDict):
diff --git a/comictaggerlib/issueidentifier.py b/comictaggerlib/issueidentifier.py
index 34a0735..d360187 100644
--- a/comictaggerlib/issueidentifier.py
+++ b/comictaggerlib/issueidentifier.py
@@ -111,7 +111,7 @@ class IssueIdentifier:
self.series_match_thresh = config.Issue_Identifier__series_match_identify_thresh
# used to eliminate unlikely publishers
- self.publisher_filter = [s.strip().casefold() for s in config.Issue_Identifier__publisher_filter]
+ self.publisher_filter = [s.strip().casefold() for s in config.Auto_Tag__publisher_filter]
self.additional_metadata = GenericMetadata()
self.output_function: Callable[[str], None] = print
diff --git a/comictaggerlib/main.py b/comictaggerlib/main.py
index 3534384..212674b 100644
--- a/comictaggerlib/main.py
+++ b/comictaggerlib/main.py
@@ -252,7 +252,7 @@ class App:
# config already loaded
error = None
- if self.config[0].Metadata_Options__disable_cr:
+ if not self.config[0].Metadata_Options__cr:
if "cr" in comicapi.comicarchive.metadata_styles:
del comicapi.comicarchive.metadata_styles["cr"]
diff --git a/comictaggerlib/md.py b/comictaggerlib/md.py
index bc4070c..33b00d9 100644
--- a/comictaggerlib/md.py
+++ b/comictaggerlib/md.py
@@ -11,11 +11,11 @@ from comictalker.talker_utils import cleanup_html
def prepare_metadata(md: GenericMetadata, new_md: GenericMetadata, opts: SettngsNS) -> GenericMetadata:
- if opts.Metadata_Options__cbl_apply_transform_on_import:
+ if opts.Metadata_Options__apply_transform_on_import:
new_md = CBLTransformer(new_md, opts).apply()
final_md = md.copy()
- if opts.Issue_Identifier__clear_metadata:
+ if opts.Auto_Tag__clear_metadata:
final_md = GenericMetadata()
final_md.overlay(new_md)
@@ -31,7 +31,7 @@ def prepare_metadata(md: GenericMetadata, new_md: GenericMetadata, opts: Settngs
+ (f"[Issue ID {final_md.issue_id}]" if final_md.issue_id else "")
)
- if opts.Issue_Identifier__auto_imprint:
+ if opts.Auto_Tag__auto_imprint:
final_md.fix_publisher()
return final_md.replace(
diff --git a/comictaggerlib/renamewindow.py b/comictaggerlib/renamewindow.py
index 62e6be0..f232ed2 100644
--- a/comictaggerlib/renamewindow.py
+++ b/comictaggerlib/renamewindow.py
@@ -67,7 +67,7 @@ class RenameWindow(QtWidgets.QDialog):
self.rename_list: list[str] = []
self.btnSettings.clicked.connect(self.modify_settings)
- platform = "universal" if self.config[0].File_Rename__strict else "auto"
+ platform = "universal" if self.config[0].File_Rename__strict_filenames else "auto"
self.renamer = FileRenamer(None, platform=platform, replacements=self.config[0].File_Rename__replacements)
self.do_preview()
diff --git a/comictaggerlib/seriesselectionwindow.py b/comictaggerlib/seriesselectionwindow.py
index 2bab075..ab88ed5 100644
--- a/comictaggerlib/seriesselectionwindow.py
+++ b/comictaggerlib/seriesselectionwindow.py
@@ -160,7 +160,7 @@ class SeriesSelectionWindow(QtWidgets.QDialog):
self.progdialog: QtWidgets.QProgressDialog | None = None
self.search_thread: SearchThread | None = None
- self.use_filter = self.config.Issue_Identifier__always_use_publisher_filter
+ self.use_filter = self.config.Auto_Tag__use_publisher_filter
# Load to retrieve settings
self.talker = talker
@@ -407,7 +407,7 @@ class SeriesSelectionWindow(QtWidgets.QDialog):
# filter the publishers if enabled set
if self.use_filter:
try:
- publisher_filter = {s.strip().casefold() for s in self.config.Issue_Identifier__publisher_filter}
+ publisher_filter = {s.strip().casefold() for s in self.config.Auto_Tag__publisher_filter}
# use '' as publisher name if None
self.series_list = dict(
filter(
diff --git a/comictaggerlib/settingswindow.py b/comictaggerlib/settingswindow.py
index 2e5d621..c5ba6df 100644
--- a/comictaggerlib/settingswindow.py
+++ b/comictaggerlib/settingswindow.py
@@ -334,9 +334,9 @@ class SettingsWindow(QtWidgets.QDialog):
table.setItem(row, 1, QtWidgets.QTableWidgetItem(replace))
tmp = QtWidgets.QTableWidgetItem()
if strict_only:
- tmp.setCheckState(QtCore.Qt.Checked)
+ tmp.setCheckState(QtCore.Qt.CheckState.Checked)
else:
- tmp.setCheckState(QtCore.Qt.Unchecked)
+ tmp.setCheckState(QtCore.Qt.CheckState.Unchecked)
table.setItem(row, 2, tmp)
def rename_test(self, *args: Any, **kwargs: Any) -> None:
@@ -399,7 +399,7 @@ class SettingsWindow(QtWidgets.QDialog):
self.leRarExePath.setEnabled(False)
self.sbNameMatchIdentifyThresh.setValue(self.config[0].Issue_Identifier__series_match_identify_thresh)
self.sbNameMatchSearchThresh.setValue(self.config[0].Issue_Identifier__series_match_search_thresh)
- self.tePublisherFilter.setPlainText("\n".join(self.config[0].Issue_Identifier__publisher_filter))
+ self.tePublisherFilter.setPlainText("\n".join(self.config[0].Auto_Tag__publisher_filter))
self.cbxCheckForNewVersion.setChecked(self.config[0].General__check_for_new_version)
@@ -414,21 +414,21 @@ class SettingsWindow(QtWidgets.QDialog):
self.switch_parser()
- self.cbxUseFilter.setChecked(self.config[0].Issue_Identifier__always_use_publisher_filter)
+ self.cbxUseFilter.setChecked(self.config[0].Auto_Tag__use_publisher_filter)
self.cbxSortByYear.setChecked(self.config[0].Issue_Identifier__sort_series_by_year)
self.cbxExactMatches.setChecked(self.config[0].Issue_Identifier__exact_series_matches_first)
- self.cbxClearFormBeforePopulating.setChecked(self.config[0].Issue_Identifier__clear_metadata)
+ self.cbxClearFormBeforePopulating.setChecked(self.config[0].Auto_Tag__clear_metadata)
- self.cbxAssumeLoneCreditIsPrimary.setChecked(self.config[0].Metadata_Options__cbl_assume_lone_credit_is_primary)
- self.cbxCopyCharactersToTags.setChecked(self.config[0].Metadata_Options__cbl_copy_characters_to_tags)
- self.cbxCopyTeamsToTags.setChecked(self.config[0].Metadata_Options__cbl_copy_teams_to_tags)
- self.cbxCopyLocationsToTags.setChecked(self.config[0].Metadata_Options__cbl_copy_locations_to_tags)
- self.cbxCopyStoryArcsToTags.setChecked(self.config[0].Metadata_Options__cbl_copy_storyarcs_to_tags)
- self.cbxCopyNotesToComments.setChecked(self.config[0].Metadata_Options__cbl_copy_notes_to_comments)
- self.cbxCopyWebLinkToComments.setChecked(self.config[0].Metadata_Options__cbl_copy_weblink_to_comments)
- self.cbxApplyCBLTransformOnCVIMport.setChecked(self.config[0].Metadata_Options__cbl_apply_transform_on_import)
+ self.cbxAssumeLoneCreditIsPrimary.setChecked(self.config[0].Metadata_Options__assume_lone_credit_is_primary)
+ self.cbxCopyCharactersToTags.setChecked(self.config[0].Metadata_Options__copy_characters_to_tags)
+ self.cbxCopyTeamsToTags.setChecked(self.config[0].Metadata_Options__copy_teams_to_tags)
+ self.cbxCopyLocationsToTags.setChecked(self.config[0].Metadata_Options__copy_locations_to_tags)
+ self.cbxCopyStoryArcsToTags.setChecked(self.config[0].Metadata_Options__copy_storyarcs_to_tags)
+ self.cbxCopyNotesToComments.setChecked(self.config[0].Metadata_Options__copy_notes_to_comments)
+ self.cbxCopyWebLinkToComments.setChecked(self.config[0].Metadata_Options__copy_weblink_to_comments)
+ self.cbxApplyCBLTransformOnCVIMport.setChecked(self.config[0].Metadata_Options__apply_transform_on_import)
self.cbxApplyCBLTransformOnBatchOperation.setChecked(
- self.config[0].Metadata_Options__cbl_apply_transform_on_bulk_operation
+ self.config[0].Metadata_Options__apply_transform_on_bulk_operation
)
self.cbxOverlayReadStyle.setCurrentIndex(
self.cbxOverlayReadStyle.findData(self.config[0].internal__load_data_overlay.value)
@@ -438,7 +438,7 @@ class SettingsWindow(QtWidgets.QDialog):
)
self.cbxOverlayMergeLists.setChecked(self.config[0].internal__overlay_merge_lists)
self.cbxShortMetadataNames.setChecked(self.config[0].Metadata_Options__use_short_metadata_names)
- self.cbxDisableCR.setChecked(self.config[0].Metadata_Options__disable_cr)
+ self.cbxEnableCR.setChecked(self.config[0].Metadata_Options__cr)
self.leRenameTemplate.setText(self.config[0].File_Rename__template)
self.leIssueNumPadding.setText(str(self.config[0].File_Rename__issue_number_padding))
@@ -447,7 +447,7 @@ class SettingsWindow(QtWidgets.QDialog):
self.cbxMoveFiles.setChecked(self.config[0].File_Rename__move)
self.cbxMoveOnly.setChecked(self.config[0].File_Rename__only_move)
self.leDirectory.setText(self.config[0].File_Rename__dir)
- self.cbxRenameStrict.setChecked(self.config[0].File_Rename__strict)
+ self.cbxRenameStrict.setChecked(self.config[0].File_Rename__strict_filenames)
for table, replacments in zip(
(self.twLiteralReplacements, self.twValueReplacements), self.config[0].File_Rename__replacements
@@ -472,7 +472,7 @@ class SettingsWindow(QtWidgets.QDialog):
Replacement(
self.twLiteralReplacements.item(row, 0).text(),
self.twLiteralReplacements.item(row, 1).text(),
- self.twLiteralReplacements.item(row, 2).checkState() == QtCore.Qt.Checked,
+ self.twLiteralReplacements.item(row, 2).checkState() == QtCore.Qt.CheckState.Checked,
)
)
for row in range(self.twValueReplacements.rowCount()):
@@ -481,7 +481,7 @@ class SettingsWindow(QtWidgets.QDialog):
Replacement(
self.twValueReplacements.item(row, 0).text(),
self.twValueReplacements.item(row, 1).text(),
- self.twValueReplacements.item(row, 2).checkState() == QtCore.Qt.Checked,
+ self.twValueReplacements.item(row, 2).checkState() == QtCore.Qt.CheckState.Checked,
)
)
return Replacements(literal_replacements, value_replacements)
@@ -532,7 +532,7 @@ class SettingsWindow(QtWidgets.QDialog):
self.config[0].Issue_Identifier__series_match_identify_thresh = self.sbNameMatchIdentifyThresh.value()
self.config[0].Issue_Identifier__series_match_search_thresh = self.sbNameMatchSearchThresh.value()
- self.config[0].Issue_Identifier__publisher_filter = utils.split(self.tePublisherFilter.toPlainText(), "\n")
+ self.config[0].Auto_Tag__publisher_filter = utils.split(self.tePublisherFilter.toPlainText(), "\n")
self.config[0].Filename_Parsing__filename_parser = utils.Parser(self.cbFilenameParser.currentText())
self.config[0].Filename_Parsing__remove_c2c = self.cbxRemoveC2C.isChecked()
@@ -543,29 +543,27 @@ class SettingsWindow(QtWidgets.QDialog):
self.cbxProtofoliusIssueNumberScheme.isChecked()
)
- self.config[0].Issue_Identifier__always_use_publisher_filter = self.cbxUseFilter.isChecked()
+ self.config[0].Auto_Tag__use_publisher_filter = self.cbxUseFilter.isChecked()
self.config[0].Issue_Identifier__sort_series_by_year = self.cbxSortByYear.isChecked()
self.config[0].Issue_Identifier__exact_series_matches_first = self.cbxExactMatches.isChecked()
- self.config[0].Issue_Identifier__clear_metadata = self.cbxClearFormBeforePopulating.isChecked()
+ self.config[0].Auto_Tag__clear_metadata = self.cbxClearFormBeforePopulating.isChecked()
- self.config[0].Metadata_Options__cbl_assume_lone_credit_is_primary = (
- self.cbxAssumeLoneCreditIsPrimary.isChecked()
- )
- self.config[0].Metadata_Options__cbl_copy_characters_to_tags = self.cbxCopyCharactersToTags.isChecked()
- self.config[0].Metadata_Options__cbl_copy_teams_to_tags = self.cbxCopyTeamsToTags.isChecked()
- self.config[0].Metadata_Options__cbl_copy_locations_to_tags = self.cbxCopyLocationsToTags.isChecked()
- self.config[0].Metadata_Options__cbl_copy_storyarcs_to_tags = self.cbxCopyStoryArcsToTags.isChecked()
- self.config[0].Metadata_Options__cbl_copy_notes_to_comments = self.cbxCopyNotesToComments.isChecked()
- self.config[0].Metadata_Options__cbl_copy_weblink_to_comments = self.cbxCopyWebLinkToComments.isChecked()
- self.config[0].Metadata_Options__cbl_apply_transform_on_import = self.cbxApplyCBLTransformOnCVIMport.isChecked()
- self.config.values.Metadata_Options__cbl_apply_transform_on_bulk_operation = (
+ self.config[0].Metadata_Options__assume_lone_credit_is_primary = self.cbxAssumeLoneCreditIsPrimary.isChecked()
+ self.config[0].Metadata_Options__copy_characters_to_tags = self.cbxCopyCharactersToTags.isChecked()
+ self.config[0].Metadata_Options__copy_teams_to_tags = self.cbxCopyTeamsToTags.isChecked()
+ self.config[0].Metadata_Options__copy_locations_to_tags = self.cbxCopyLocationsToTags.isChecked()
+ self.config[0].Metadata_Options__copy_storyarcs_to_tags = self.cbxCopyStoryArcsToTags.isChecked()
+ self.config[0].Metadata_Options__copy_notes_to_comments = self.cbxCopyNotesToComments.isChecked()
+ self.config[0].Metadata_Options__copy_weblink_to_comments = self.cbxCopyWebLinkToComments.isChecked()
+ self.config[0].Metadata_Options__apply_transform_on_import = self.cbxApplyCBLTransformOnCVIMport.isChecked()
+ self.config.values.Metadata_Options__apply_transform_on_bulk_operation = (
self.cbxApplyCBLTransformOnBatchOperation.isChecked()
)
self.config[0].internal__load_data_overlay = merge.Mode[self.cbxOverlayReadStyle.currentData().upper()]
self.config[0].internal__source_data_overlay = merge.Mode[self.cbxOverlaySource.currentData().upper()]
self.config[0].internal__overlay_merge_lists = self.cbxOverlayMergeLists.isChecked()
- self.config[0].Metadata_Options__disable_cr = self.cbxDisableCR.isChecked()
+ self.config[0].Metadata_Options__cr = self.cbxEnableCR.isChecked()
# Update metadata style names if required
if self.config[0].Metadata_Options__use_short_metadata_names != self.cbxShortMetadataNames.isChecked():
self.config[0].Metadata_Options__use_short_metadata_names = self.cbxShortMetadataNames.isChecked()
@@ -580,7 +578,7 @@ class SettingsWindow(QtWidgets.QDialog):
self.config[0].File_Rename__only_move = self.cbxMoveOnly.isChecked()
self.config[0].File_Rename__dir = self.leDirectory.text()
- self.config[0].File_Rename__strict = self.cbxRenameStrict.isChecked()
+ self.config[0].File_Rename__strict_filenames = self.cbxRenameStrict.isChecked()
self.config[0].File_Rename__replacements = self.get_replacements()
# Read settings from talker tabs
diff --git a/comictaggerlib/taggerwindow.py b/comictaggerlib/taggerwindow.py
index 8c8f0a3..78d014a 100644
--- a/comictaggerlib/taggerwindow.py
+++ b/comictaggerlib/taggerwindow.py
@@ -1708,7 +1708,7 @@ class TaggerWindow(QtWidgets.QMainWindow):
center_window_on_parent(prog_dialog)
QtCore.QCoreApplication.processEvents()
- if style == "cbi" and self.config[0].Metadata_Options__cbl_apply_transform_on_bulk_operation:
+ if style == "cbi" and self.config[0].Metadata_Options__apply_transform_on_bulk_operation:
md = CBLTransformer(md, self.config[0]).apply()
if ca.write_metadata(md, style):
@@ -1905,7 +1905,7 @@ class TaggerWindow(QtWidgets.QMainWindow):
if ct_md is not None:
temp_opts = cast(ct_ns, settngs.get_namespace(self.config, True, True, True, False)[0])
if dlg.cbxRemoveMetadata.isChecked():
- temp_opts.Issue_Identifier__clear_metadata
+ temp_opts.Auto_Tag__clear_metadata
md = prepare_metadata(md, ct_md, temp_opts)
diff --git a/comictaggerlib/ui/settingswindow.ui b/comictaggerlib/ui/settingswindow.ui
index 1a9a2af..8a32df5 100644
--- a/comictaggerlib/ui/settingswindow.ui
+++ b/comictaggerlib/ui/settingswindow.ui
@@ -472,12 +472,12 @@
-
-
+
- Useful if you use the CIX metadata type
+ Turn off to only use the CIX metadata type
- Disable ComicRack Metadata Type
+ Enable ComicRack Metadata Type (needs a restart)
diff --git a/tests/integration_test.py b/tests/integration_test.py
index bf5bf9f..2018f1e 100644
--- a/tests/integration_test.py
+++ b/tests/integration_test.py
@@ -36,14 +36,14 @@ def test_save(
config[0].Commands__command = comictaggerlib.resulttypes.Action.save
# Check online, should be intercepted by comicvine_api
- config[0].Runtime_Options__online = True
+ config[0].Auto_Tag__online = True
# Use the temporary comic we created
config[0].Runtime_Options__files = [tmp_comic.path]
# Read and save ComicRack tags
config[0].Runtime_Options__type_read = ["cr"]
config[0].Runtime_Options__type_modify = ["cr"]
# Search using the correct series since we just put the wrong series name in the CBZ
- config[0].Runtime_Options__metadata = comicapi.genericmetadata.GenericMetadata(series=md_saved.series)
+ config[0].Auto_Tag__metadata = comicapi.genericmetadata.GenericMetadata(series=md_saved.series)
# Run ComicTagger
CLI(config[0], talkers).run()