move custom types to own file
All checks were successful
ci/woodpecker/push/tests Pipeline was successful
All checks were successful
ci/woodpecker/push/tests Pipeline was successful
This commit is contained in:
parent
bde2b9ebe9
commit
9935c97f6c
5 changed files with 59 additions and 55 deletions
|
@ -1,6 +1,6 @@
|
||||||
from typing import Dict, List, Union
|
from typing import Dict, List, Union
|
||||||
|
|
||||||
from mangadlp.metadata import ChapterData
|
from mangadlp.types import ChapterData,ComicInfo
|
||||||
|
|
||||||
# api template for manga-dlp
|
# api template for manga-dlp
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class YourAPI:
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
# or with --forcevol
|
# or with --forcevol
|
||||||
self.manga_chapter_data: Dict[str, Dict[str, Union[str, int]]] = {
|
self.manga_chapter_data: Dict[str, ChapterData] = {
|
||||||
"1:1": {
|
"1:1": {
|
||||||
"uuid": "abc",
|
"uuid": "abc",
|
||||||
"volume": "1",
|
"volume": "1",
|
||||||
|
@ -157,7 +157,7 @@ class YourAPI:
|
||||||
|
|
||||||
# example
|
# example
|
||||||
return {
|
return {
|
||||||
"Volume": "abc",
|
"Volume": 1,
|
||||||
"LanguageISO": "en",
|
"LanguageISO": "en",
|
||||||
"Title": "test",
|
"Title": "test",
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import requests
|
||||||
from loguru import logger as log
|
from loguru import logger as log
|
||||||
|
|
||||||
from mangadlp import utils
|
from mangadlp import utils
|
||||||
from mangadlp.metadata import ChapterData, ComicInfo
|
from mangadlp.types import ChapterData, ComicInfo
|
||||||
|
|
||||||
|
|
||||||
class Mangadex:
|
class Mangadex:
|
||||||
|
|
|
@ -9,7 +9,8 @@ from mangadlp import downloader, utils
|
||||||
from mangadlp.api.mangadex import Mangadex
|
from mangadlp.api.mangadex import Mangadex
|
||||||
from mangadlp.cache import CacheDB
|
from mangadlp.cache import CacheDB
|
||||||
from mangadlp.hooks import run_hook
|
from mangadlp.hooks import run_hook
|
||||||
from mangadlp.metadata import ChapterData, write_metadata
|
from mangadlp.metadata import write_metadata
|
||||||
|
from mangadlp.types import ChapterData
|
||||||
from mangadlp.utils import get_file_format
|
from mangadlp.utils import get_file_format
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, Optional, Tuple, TypedDict, Union
|
from typing import Any, Dict, Tuple, Union
|
||||||
|
|
||||||
import xmltodict
|
import xmltodict
|
||||||
from loguru import logger as log
|
from loguru import logger as log
|
||||||
|
|
||||||
|
from mangadlp.types import ComicInfo
|
||||||
|
|
||||||
METADATA_FILENAME = "ComicInfo.xml"
|
METADATA_FILENAME = "ComicInfo.xml"
|
||||||
METADATA_TEMPLATE = Path("mangadlp/metadata/ComicInfo_v2.0.xml")
|
METADATA_TEMPLATE = Path("mangadlp/metadata/ComicInfo_v2.0.xml")
|
||||||
# define metadata types, defaults and valid values. an empty list means no value check
|
# define metadata types, defaults and valid values. an empty list means no value check
|
||||||
|
@ -59,55 +61,6 @@ METADATA_TYPES: Dict[str, Tuple[type, Any, list[Union[str, int]]]] = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ComicInfo(TypedDict, total=False):
|
|
||||||
"""ComicInfo.xml basic types.
|
|
||||||
|
|
||||||
Validation is done via metadata.validate_metadata()
|
|
||||||
All valid types and values are specified in metadata.METADATA_TYPES
|
|
||||||
"""
|
|
||||||
|
|
||||||
Title: Optional[str]
|
|
||||||
Series: Optional[str]
|
|
||||||
Number: Optional[str]
|
|
||||||
Count: Optional[int]
|
|
||||||
Volume: Optional[int]
|
|
||||||
AlternateSeries: Optional[str]
|
|
||||||
AlternateNumber: Optional[str]
|
|
||||||
AlternateCount: Optional[int]
|
|
||||||
Summary: Optional[str]
|
|
||||||
Notes: Optional[str]
|
|
||||||
Year: Optional[int]
|
|
||||||
Month: Optional[int]
|
|
||||||
Day: Optional[int]
|
|
||||||
Writer: Optional[str]
|
|
||||||
Colorist: Optional[str]
|
|
||||||
Publisher: Optional[str]
|
|
||||||
Genre: Optional[str]
|
|
||||||
Web: Optional[str]
|
|
||||||
PageCount: Optional[int]
|
|
||||||
LanguageISO: Optional[str]
|
|
||||||
Format: Optional[str]
|
|
||||||
BlackAndWhite: Optional[str]
|
|
||||||
Manga: Optional[str]
|
|
||||||
ScanInformation: Optional[str]
|
|
||||||
SeriesGroup: Optional[str]
|
|
||||||
AgeRating: Optional[str]
|
|
||||||
CommunityRating: Optional[int]
|
|
||||||
|
|
||||||
|
|
||||||
class ChapterData(TypedDict):
|
|
||||||
"""Basic chapter-data types.
|
|
||||||
|
|
||||||
All values have to be provided.
|
|
||||||
"""
|
|
||||||
|
|
||||||
uuid: str
|
|
||||||
volume: str
|
|
||||||
chapter: str
|
|
||||||
name: str
|
|
||||||
pages: int
|
|
||||||
|
|
||||||
|
|
||||||
def validate_metadata(metadata_in: ComicInfo) -> Dict[str, ComicInfo]:
|
def validate_metadata(metadata_in: ComicInfo) -> Dict[str, ComicInfo]:
|
||||||
log.info("Validating metadata")
|
log.info("Validating metadata")
|
||||||
|
|
||||||
|
|
50
mangadlp/types.py
Normal file
50
mangadlp/types.py
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
from typing import Optional, TypedDict
|
||||||
|
|
||||||
|
|
||||||
|
class ComicInfo(TypedDict, total=False):
|
||||||
|
"""ComicInfo.xml basic types.
|
||||||
|
|
||||||
|
Validation is done via metadata.validate_metadata()
|
||||||
|
All valid types and values are specified in metadata.METADATA_TYPES
|
||||||
|
"""
|
||||||
|
|
||||||
|
Title: Optional[str]
|
||||||
|
Series: Optional[str]
|
||||||
|
Number: Optional[str]
|
||||||
|
Count: Optional[int]
|
||||||
|
Volume: Optional[int]
|
||||||
|
AlternateSeries: Optional[str]
|
||||||
|
AlternateNumber: Optional[str]
|
||||||
|
AlternateCount: Optional[int]
|
||||||
|
Summary: Optional[str]
|
||||||
|
Notes: Optional[str]
|
||||||
|
Year: Optional[int]
|
||||||
|
Month: Optional[int]
|
||||||
|
Day: Optional[int]
|
||||||
|
Writer: Optional[str]
|
||||||
|
Colorist: Optional[str]
|
||||||
|
Publisher: Optional[str]
|
||||||
|
Genre: Optional[str]
|
||||||
|
Web: Optional[str]
|
||||||
|
PageCount: Optional[int]
|
||||||
|
LanguageISO: Optional[str]
|
||||||
|
Format: Optional[str]
|
||||||
|
BlackAndWhite: Optional[str]
|
||||||
|
Manga: Optional[str]
|
||||||
|
ScanInformation: Optional[str]
|
||||||
|
SeriesGroup: Optional[str]
|
||||||
|
AgeRating: Optional[str]
|
||||||
|
CommunityRating: Optional[int]
|
||||||
|
|
||||||
|
|
||||||
|
class ChapterData(TypedDict):
|
||||||
|
"""Basic chapter-data types.
|
||||||
|
|
||||||
|
All values have to be provided.
|
||||||
|
"""
|
||||||
|
|
||||||
|
uuid: str
|
||||||
|
volume: str
|
||||||
|
chapter: str
|
||||||
|
name: str
|
||||||
|
pages: int
|
Loading…
Reference in a new issue