comicbox.enums.maps.formats

[docs] module comicbox.enums.maps.formats

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
"""Original Format enum maps."""

from enum import Enum
from types import MappingProxyType

from comicbox.enums.generic import GenericFormatEnum
from comicbox.enums.metroninfo import MetronFormatEnum


def _variants(enum: GenericFormatEnum, *, dashed_canon: bool = False) -> dict:
    space = " " if not dashed_canon else "-"
    dash = "-" if not dashed_canon else " "
    return {
        enum.value.replace(space, dash): enum,
        enum.value.replace(space, ""): enum,
        enum.value.replace("'", ""): enum,
        enum.value.replace("'", "").replace(space, dash): enum,
    }


def _all_variants(enums: type[GenericFormatEnum]) -> dict:
    variant_map = {}
    for enum in enums:
        variants = _variants(enum)
        variant_map.update(variants)
    return variant_map


GENERIC_FORMAT_MAP: MappingProxyType[Enum | str, Enum] = MappingProxyType(
    {
        **_all_variants(GenericFormatEnum),
        "Boxed Set": GenericFormatEnum.BOX_SET,
        "Boxed-Set": GenericFormatEnum.BOX_SET,
        "GN": GenericFormatEnum.GRAPHIC_NOVEL,
        "Hard-Cover": GenericFormatEnum.HARD_COVER,
        "Hard Cover": GenericFormatEnum.HARD_COVER,
        "HC": GenericFormatEnum.HARD_COVER,
        **_variants(GenericFormatEnum.ONE_SHOT, dashed_canon=True),
        "Trade Paper Back": GenericFormatEnum.TRADE_PAPERBACK,
        "TPB": GenericFormatEnum.TRADE_PAPERBACK,
        "TBP": GenericFormatEnum.TRADE_PAPERBACK,
        "TP": GenericFormatEnum.TRADE_PAPERBACK,
    }
)


def _translate_generic_to(
    generic_enum: GenericFormatEnum, metron_enum: MetronFormatEnum
) -> dict:
    multi_map = {}
    for key, value in GENERIC_FORMAT_MAP.items():
        if value == generic_enum:
            multi_map[key] = metron_enum

    return multi_map


METRON_FORMAT_MAP: MappingProxyType[Enum, Enum] = MappingProxyType(
    {
        # GenericFormatEnum.ANTHOLOGY: MetronFormatEnum.,
        # GenericFormatEnum.ANNOTATION: MetronFormatEnum.,
        **_translate_generic_to(GenericFormatEnum.BOX_SET, MetronFormatEnum.OMNIBUS),
        GenericFormatEnum.DIGITAL: MetronFormatEnum.DIGITAL_CHAPTER,
        # GenericFormatEnum.DIRECTORS_CUT: MetronFormatEnum.,
        # GenericFormatEnum.DIRECTOR_S_CUT: MetronFormatEnum.,
        GenericFormatEnum.GIANT_SIZED: MetronFormatEnum.ANNUAL,
        **_translate_generic_to(
            GenericFormatEnum.GRAPHIC_NOVEL, MetronFormatEnum.GRAPHIC_NOVEL
        ),
        **_translate_generic_to(
            GenericFormatEnum.HARD_COVER, MetronFormatEnum.HARDCOVER
        ),
        GenericFormatEnum.HD_UPSCALED: MetronFormatEnum.DIGITAL_CHAPTER,
        **_translate_generic_to(GenericFormatEnum.KING_SIZED, MetronFormatEnum.ANNUAL),
        # GenericFormatEnum.MAGAZINE: MetronFormatEnum.,
        # GenericFormatEnum.MANGA: MetronFormatEnum.,
        **_translate_generic_to(GenericFormatEnum.ONE_SHOT, MetronFormatEnum.ONE_SHOT),
        # GenericFormatEnum.PDF_RIP: MetronFormatEnum.,
        # GenericFormatEnum.PREVIEW: MetronFormatEnum.,
        # GenericFormatEnum.PROLOGUE: MetronFormatEnum.,
        # GenericFormatEnum.SCANLATION: MetronFormatEnum.,
        # GenericFormatEnum.SCRIPT: MetronFormatEnum.,
        **_translate_generic_to(
            GenericFormatEnum.TRADE_PAPERBACK, MetronFormatEnum.TRADE_PAPERBACK
        ),
        # GenericFormatsEnum.WEB_COMIC: MetronFormatEnum.,
        # GenericFormatsEnum.WEB_RIP: MetronFormatEnum.,
    }
)