Append notes instead of overwriting them
Add issue_id to GenericMetadata
This commit is contained in:
parent
70293a0819
commit
d55d75cd79
@ -137,17 +137,11 @@ class ComicInfoXml:
|
||||
|
||||
# second, convert each list to string, and add to XML struct
|
||||
assign("Writer", ", ".join(credit_writer_list))
|
||||
|
||||
assign("Penciller", ", ".join(credit_penciller_list))
|
||||
|
||||
assign("Inker", ", ".join(credit_inker_list))
|
||||
|
||||
assign("Colorist", ", ".join(credit_colorist_list))
|
||||
|
||||
assign("Letterer", ", ".join(credit_letterer_list))
|
||||
|
||||
assign("CoverArtist", ", ".join(credit_cover_list))
|
||||
|
||||
assign("Editor", ", ".join(credit_editor_list))
|
||||
|
||||
assign("Publisher", md.publisher)
|
||||
|
@ -78,6 +78,7 @@ class GenericMetadata:
|
||||
|
||||
is_empty: bool = True
|
||||
tag_origin: str | None = None
|
||||
issue_id: int | None = None
|
||||
|
||||
series: str | None = None
|
||||
issue: str | None = None
|
||||
|
@ -37,6 +37,14 @@ class UtilsVars:
|
||||
already_fixed_encoding = False
|
||||
|
||||
|
||||
def combine_notes(existing_notes: str | None, new_notes: str | None, split: str) -> str:
|
||||
split_notes, _, untouched_notes = (existing_notes or "").rpartition(split)
|
||||
if split_notes:
|
||||
return (split_notes + (new_notes or "")).strip()
|
||||
else:
|
||||
return (untouched_notes + "\n" + (new_notes or "")).strip()
|
||||
|
||||
|
||||
def parse_date_str(date_str: str) -> tuple[int | None, int | None, int | None]:
|
||||
day = None
|
||||
month = None
|
||||
|
@ -22,11 +22,13 @@ import logging
|
||||
import os
|
||||
import pathlib
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from pprint import pprint
|
||||
|
||||
from comicapi import utils
|
||||
from comicapi.comicarchive import ComicArchive, MetaDataStyle
|
||||
from comicapi.genericmetadata import GenericMetadata
|
||||
from comictaggerlib import ctversion
|
||||
from comictaggerlib.cbltransformer import CBLTransformer
|
||||
from comictaggerlib.comicvinetalker import ComicVineTalker, ComicVineTalkerException
|
||||
from comictaggerlib.filerenamer import FileRenamer, get_rename_dir
|
||||
@ -112,7 +114,11 @@ def display_match_set_for_choice(
|
||||
if opts.overwrite:
|
||||
md = cv_md
|
||||
else:
|
||||
md.overlay(cv_md)
|
||||
notes = (
|
||||
f"Tagged with ComicTagger {ctversion.version} using info from Comic Vine on"
|
||||
f" {datetime.now():%Y-%m-%d %H:%M:%S}. [Issue ID {cv_md.issue_id}]"
|
||||
)
|
||||
md.overlay(cv_md.replace(notes=utils.combine_notes(md.notes, notes, "Tagged with ComicTagger")))
|
||||
|
||||
if opts.auto_imprint:
|
||||
md.fix_publisher()
|
||||
@ -461,7 +467,11 @@ def process_file_cli(
|
||||
if opts.overwrite:
|
||||
md = cv_md
|
||||
else:
|
||||
md.overlay(cv_md)
|
||||
notes = (
|
||||
f"Tagged with ComicTagger {ctversion.version} using info from Comic Vine on"
|
||||
f" {datetime.now():%Y-%m-%d %H:%M:%S}. [Issue ID {cv_md.issue_id}]"
|
||||
)
|
||||
md.overlay(cv_md.replace(notes=utils.combine_notes(md.notes, notes, "Tagged with ComicTagger")))
|
||||
|
||||
if opts.auto_imprint:
|
||||
md.fix_publisher()
|
||||
|
@ -19,7 +19,6 @@ import json
|
||||
import logging
|
||||
import re
|
||||
import time
|
||||
from datetime import datetime
|
||||
from typing import Any, Callable, cast
|
||||
from urllib.parse import urlencode, urljoin, urlsplit
|
||||
|
||||
@ -466,6 +465,8 @@ class ComicVineTalker:
|
||||
# Now, map the Comic Vine data to generic metadata
|
||||
metadata = GenericMetadata()
|
||||
metadata.is_empty = False
|
||||
metadata.tag_origin = "Comic Vine"
|
||||
metadata.issue_id = issue_results["id"]
|
||||
|
||||
metadata.series = utils.xlate(issue_results["volume"]["name"])
|
||||
metadata.issue = IssueString(issue_results["issue_number"]).as_string()
|
||||
@ -479,10 +480,6 @@ class ComicVineTalker:
|
||||
if settings.use_series_start_as_volume:
|
||||
metadata.volume = int(volume_results["start_year"])
|
||||
|
||||
metadata.notes = (
|
||||
f"Tagged with ComicTagger {ctversion.version} using info from Comic Vine on"
|
||||
f" {datetime.now():%Y-%m-%d %H:%M:%S}. [Issue ID {issue_results['id']}]"
|
||||
)
|
||||
metadata.web_link = issue_results["site_detail_url"]
|
||||
|
||||
person_credits = issue_results["person_credits"]
|
||||
|
@ -27,6 +27,7 @@ import re
|
||||
import sys
|
||||
import webbrowser
|
||||
from collections.abc import Iterable
|
||||
from datetime import datetime
|
||||
from typing import Any, Callable, cast
|
||||
from urllib.parse import urlparse
|
||||
|
||||
@ -1090,7 +1091,15 @@ Have fun!
|
||||
if self.settings.clear_form_before_populating_from_cv:
|
||||
self.clear_form()
|
||||
|
||||
self.metadata.overlay(new_metadata)
|
||||
notes = (
|
||||
f"Tagged with ComicTagger {ctversion.version} using info from Comic Vine on"
|
||||
f" {datetime.now():%Y-%m-%d %H:%M:%S}. [Issue ID {new_metadata.issue_id}]"
|
||||
)
|
||||
self.metadata.overlay(
|
||||
new_metadata.replace(
|
||||
notes=utils.combine_notes(self.metadata.notes, notes, "Tagged with ComicTagger")
|
||||
)
|
||||
)
|
||||
# Now push the new combined data into the edit controls
|
||||
self.metadata_to_form()
|
||||
else:
|
||||
@ -1794,7 +1803,11 @@ Have fun!
|
||||
if dlg.cbxRemoveMetadata.isChecked():
|
||||
md = cv_md
|
||||
else:
|
||||
md.overlay(cv_md)
|
||||
notes = (
|
||||
f"Tagged with ComicTagger {ctversion.version} using info from Comic Vine on"
|
||||
f" {datetime.now():%Y-%m-%d %H:%M:%S}. [Issue ID {cv_md.issue_id}]"
|
||||
)
|
||||
md.overlay(cv_md.replace(notes=utils.combine_notes(md.notes, notes, "Tagged with ComicTagger")))
|
||||
|
||||
if self.settings.auto_imprint:
|
||||
md.fix_publisher()
|
||||
|
@ -77,6 +77,23 @@ def test_get_language_iso(value, result):
|
||||
assert result == comicapi.utils.get_language_iso(value)
|
||||
|
||||
|
||||
combine_values = [
|
||||
("hello", "english", "en", "hello\nenglish"),
|
||||
("hello en", "english", "en", "hello english"),
|
||||
("hello en goodbye", "english", "en", "hello english"),
|
||||
("hello en en goodbye", "english", "en", "hello en english"),
|
||||
("", "english", "en", "english"),
|
||||
(None, "english", "en", "english"),
|
||||
("hello", "", "en", "hello"),
|
||||
("hello", None, "en", "hello"),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("existing_notes, new_notes, split, result", combine_values)
|
||||
def test_combine_notes(existing_notes, new_notes, split, result):
|
||||
assert result == comicapi.utils.combine_notes(existing_notes, new_notes, split)
|
||||
|
||||
|
||||
def test_unique_file(tmp_path):
|
||||
file = tmp_path / "test.cbz"
|
||||
assert file == comicapi.utils.unique_file(file)
|
||||
|
Loading…
Reference in New Issue
Block a user