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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 | """Metadata sources definitions."""
from dataclasses import dataclass
from enum import Enum
from comicbox.formats import MetadataFormats
@dataclass
class MetadataSource:
"""Metadata source attributes."""
label: str
path: bool = False
formats: tuple[MetadataFormats, ...] = tuple(
fmt for fmt in MetadataFormats if fmt.value.enabled
)
from_archive: bool = False
class MetadataSources(Enum):
"""Metadata sources."""
# Source order declares masking precedence
# Format tuples declare masking precedence under each source
CONFIG = MetadataSource(
"Config",
formats=(
MetadataFormats.COMICBOX_YAML,
MetadataFormats.METRON_INFO,
MetadataFormats.COMIC_INFO,
MetadataFormats.COMIC_BOOK_INFO,
MetadataFormats.COMET,
MetadataFormats.PDF,
MetadataFormats.COMICTAGGER,
MetadataFormats.FILENAME,
),
)
ARCHIVE_FILENAME = MetadataSource(
"Filename", path=True, formats=(MetadataFormats.FILENAME,), from_archive=True
)
ARCHIVE_PDF = MetadataSource(
"Archive Header", path=True, formats=(MetadataFormats.PDF,), from_archive=True
)
ARCHIVE_COMMENT = MetadataSource(
"Archive Comment",
path=True,
formats=(MetadataFormats.COMIC_BOOK_INFO,),
from_archive=True,
)
ARCHIVE_FILE = MetadataSource(
"Archive File",
path=True,
formats=(
MetadataFormats.COMICBOX_YAML,
MetadataFormats.COMICBOX_JSON,
MetadataFormats.COMICBOX_CLI_YAML,
MetadataFormats.METRON_INFO,
MetadataFormats.COMIC_INFO,
MetadataFormats.COMET,
MetadataFormats.COMIC_BOOK_INFO,
MetadataFormats.COMICTAGGER,
),
from_archive=True,
)
IMPORT_FILE = MetadataSource("Imported File", path=True)
CLI = MetadataSource(
"Comicbox CLI",
formats=(
MetadataFormats.COMICBOX_CLI_YAML,
MetadataFormats.METRON_INFO,
MetadataFormats.COMIC_INFO,
MetadataFormats.COMIC_BOOK_INFO,
MetadataFormats.PDF,
MetadataFormats.COMET,
MetadataFormats.COMICTAGGER,
),
)
API = MetadataSource(
"API",
formats=(
MetadataFormats.COMICBOX_CLI_YAML,
MetadataFormats.COMICBOX_YAML,
MetadataFormats.COMICBOX_JSON,
MetadataFormats.METRON_INFO,
MetadataFormats.COMIC_INFO,
MetadataFormats.COMIC_BOOK_INFO,
MetadataFormats.COMET,
MetadataFormats.PDF,
MetadataFormats.PDF_XML,
MetadataFormats.COMICTAGGER,
MetadataFormats.FILENAME,
),
)
LEGACY_NESTED = MetadataSource(
"Nested in Other Metadata",
path=True,
formats=(
MetadataFormats.COMICBOX_CLI_YAML,
MetadataFormats.COMICBOX_JSON,
MetadataFormats.METRON_INFO,
MetadataFormats.COMIC_INFO,
MetadataFormats.FILENAME,
),
from_archive=True,
)
|