This commit is contained in:
parent
a7b5c0b786
commit
796aeb8aa7
4 changed files with 52 additions and 8 deletions
|
@ -97,6 +97,23 @@ class YourAPI:
|
|||
The metadata as a dict
|
||||
"""
|
||||
|
||||
# metadata types. have to be correct to be valid
|
||||
{
|
||||
"Title": str,
|
||||
"Series": str,
|
||||
"Number": str,
|
||||
"Count": int,
|
||||
"Volume": int,
|
||||
"Summary": str,
|
||||
"Genre": str,
|
||||
"Web": str,
|
||||
"PageCount": int,
|
||||
"LanguageISO": str,
|
||||
"Format": str,
|
||||
"ScanInformation": str,
|
||||
"SeriesGroup": str,
|
||||
}
|
||||
|
||||
# example
|
||||
return {
|
||||
"Volume": "abc",
|
||||
|
|
|
@ -163,12 +163,12 @@ class Mangadex:
|
|||
for chapter in r.json()["data"]:
|
||||
attributes: dict = chapter["attributes"]
|
||||
# chapter infos from feed
|
||||
chapter_num = attributes.get("chapter") or ""
|
||||
chapter_vol = attributes.get("volume") or ""
|
||||
chapter_uuid = chapter.get("id") or ""
|
||||
chapter_name = attributes.get("title") or ""
|
||||
chapter_external = attributes.get("externalUrl") or ""
|
||||
chapter_pages = attributes.get("pages") or ""
|
||||
chapter_num: str = attributes.get("chapter") or ""
|
||||
chapter_vol: str = attributes.get("volume") or ""
|
||||
chapter_uuid: str = chapter.get("id") or ""
|
||||
chapter_name: str = attributes.get("title") or ""
|
||||
chapter_external: str = attributes.get("externalUrl") or ""
|
||||
chapter_pages: int = attributes.get("pages") or 0
|
||||
|
||||
# check for chapter title and fix it
|
||||
if chapter_name:
|
||||
|
@ -268,7 +268,7 @@ class Mangadex:
|
|||
|
||||
chapter_data = self.manga_chapter_data[chapter]
|
||||
metadata = {
|
||||
"Volume": chapter_data["volume"],
|
||||
"Volume": int(chapter_data["volume"]),
|
||||
"Number": chapter_data["chapter"],
|
||||
"PageCount": chapter_data["pages"],
|
||||
"Title": chapter_data["name"],
|
||||
|
|
|
@ -9,6 +9,23 @@ def write_metadata(chapter_path: Path, metadata: dict) -> None:
|
|||
log.warning("Can't add metadata for pdf format. Skipping")
|
||||
return
|
||||
|
||||
# define metadata types
|
||||
metadata_types: dict[str, type] = {
|
||||
"Title": str,
|
||||
"Series": str,
|
||||
"Number": str,
|
||||
"Count": int,
|
||||
"Volume": int,
|
||||
"Summary": str,
|
||||
"Genre": str,
|
||||
"Web": str,
|
||||
"PageCount": int,
|
||||
"LanguageISO": str,
|
||||
"Format": str,
|
||||
"ScanInformation": str,
|
||||
"SeriesGroup": str,
|
||||
}
|
||||
|
||||
try:
|
||||
metadata_template = Path("mangadlp/metadata/ComicInfo.xml").read_text(
|
||||
encoding="utf8"
|
||||
|
@ -22,12 +39,22 @@ def write_metadata(chapter_path: Path, metadata: dict) -> None:
|
|||
log.info(f"Writing metadata to: '{metadata_file}'")
|
||||
log.debug(f"Metadata items: {metadata}")
|
||||
for key, value in metadata.items():
|
||||
# check if metadata is empty
|
||||
if not value:
|
||||
continue
|
||||
# try to match with template
|
||||
try:
|
||||
metadata_empty["ComicInfo"][key]
|
||||
except KeyError:
|
||||
continue
|
||||
# check if metadata type is correct
|
||||
log.debug(f"Key:{key} -> value={type(value)} -> check={metadata_types[key]}")
|
||||
if not isinstance(value, metadata_types[key]): # noqa
|
||||
log.warning(
|
||||
f"Metadata has wrong type: {key}:{metadata_types[key]} -> {value}"
|
||||
)
|
||||
continue
|
||||
|
||||
log.debug(f"Updating metadata: '{key}' = '{value}'")
|
||||
metadata_empty["ComicInfo"][key] = value
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<ScanInformation></ScanInformation>
|
||||
<SeriesGroup></SeriesGroup>
|
||||
<BlackAndWhite>Unknown</BlackAndWhite>
|
||||
<Manga>Yes</Manga>
|
||||
<AgeRating>Unknown</AgeRating>
|
||||
<Manga>Yes</Manga>
|
||||
<Notes>Downloaded with https://github.com/olofvndrhr/manga-dlp</Notes>
|
||||
</ComicInfo>
|
||||
|
|
Loading…
Reference in a new issue