easyrip 4.11.2__py3-none-any.whl → 4.12.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- easyrip/__init__.py +1 -10
- easyrip/easyrip_command.py +18 -16
- easyrip/easyrip_main.py +33 -34
- easyrip/easyrip_mlang/__init__.py +2 -11
- easyrip/easyrip_mlang/global_lang_val.py +26 -164
- easyrip/easyrip_mlang/lang_en.py +2 -2
- easyrip/easyrip_mlang/lang_tag_val.py +145 -0
- easyrip/easyrip_mlang/lang_zh_Hans_CN.py +12 -12
- easyrip/easyrip_mlang/translator.py +24 -29
- easyrip/easyrip_prompt.py +104 -26
- easyrip/global_val.py +1 -1
- easyrip/ripper/param.py +66 -17
- easyrip/ripper/ripper.py +278 -203
- {easyrip-4.11.2.dist-info → easyrip-4.12.0.dist-info}/METADATA +1 -1
- easyrip-4.12.0.dist-info/RECORD +32 -0
- easyrip-4.11.2.dist-info/RECORD +0 -31
- {easyrip-4.11.2.dist-info → easyrip-4.12.0.dist-info}/WHEEL +0 -0
- {easyrip-4.11.2.dist-info → easyrip-4.12.0.dist-info}/entry_points.txt +0 -0
- {easyrip-4.11.2.dist-info → easyrip-4.12.0.dist-info}/licenses/LICENSE +0 -0
- {easyrip-4.11.2.dist-info → easyrip-4.12.0.dist-info}/top_level.txt +0 -0
easyrip/__init__.py
CHANGED
|
@@ -7,13 +7,7 @@ from .easyrip_main import (
|
|
|
7
7
|
init,
|
|
8
8
|
run_command,
|
|
9
9
|
)
|
|
10
|
-
from .easyrip_mlang import
|
|
11
|
-
Global_lang_val,
|
|
12
|
-
Lang_tag,
|
|
13
|
-
Lang_tag_language,
|
|
14
|
-
Lang_tag_region,
|
|
15
|
-
Lang_tag_script,
|
|
16
|
-
)
|
|
10
|
+
from .easyrip_mlang import Global_lang_val, Lang_tag
|
|
17
11
|
from .ripper.media_info import Media_info
|
|
18
12
|
from .ripper.ripper import Ripper
|
|
19
13
|
from .ripper.sub_and_font import Ass, Font, load_fonts
|
|
@@ -23,9 +17,6 @@ __all__ = [
|
|
|
23
17
|
"Font",
|
|
24
18
|
"Global_lang_val",
|
|
25
19
|
"Lang_tag",
|
|
26
|
-
"Lang_tag_language",
|
|
27
|
-
"Lang_tag_region",
|
|
28
|
-
"Lang_tag_script",
|
|
29
20
|
"Media_info",
|
|
30
21
|
"Ripper",
|
|
31
22
|
"check_env",
|
easyrip/easyrip_command.py
CHANGED
|
@@ -7,7 +7,6 @@ from typing import Final, Self, final
|
|
|
7
7
|
|
|
8
8
|
from prompt_toolkit.completion import (
|
|
9
9
|
Completer,
|
|
10
|
-
DeduplicateCompleter,
|
|
11
10
|
FuzzyCompleter,
|
|
12
11
|
FuzzyWordCompleter,
|
|
13
12
|
NestedCompleter,
|
|
@@ -19,7 +18,7 @@ from prompt_toolkit.document import Document
|
|
|
19
18
|
|
|
20
19
|
from . import global_val
|
|
21
20
|
from .easyrip_config.config_key import Config_key
|
|
22
|
-
from .ripper.param import
|
|
21
|
+
from .ripper.param import Audio_codec, Muxer, Preset_name
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
@final
|
|
@@ -354,7 +353,8 @@ class Opt_type(enum.Enum):
|
|
|
354
353
|
param="<string>",
|
|
355
354
|
description=(
|
|
356
355
|
"Setting preset\n"
|
|
357
|
-
"
|
|
356
|
+
"\n" # .
|
|
357
|
+
"Preset name:\n"
|
|
358
358
|
f"{Preset_name.to_help_string(' ')}"
|
|
359
359
|
),
|
|
360
360
|
childs=(Cmd_type_val(tuple(Preset_name._value2member_map_)),),
|
|
@@ -487,7 +487,8 @@ class Opt_type(enum.Enum):
|
|
|
487
487
|
param="<string>",
|
|
488
488
|
description=(
|
|
489
489
|
"Setting audio encoder\n"
|
|
490
|
-
"
|
|
490
|
+
"\n" # .
|
|
491
|
+
"Audio encoder:\n"
|
|
491
492
|
f"{Audio_codec.to_help_string(' ')}"
|
|
492
493
|
),
|
|
493
494
|
childs=(Cmd_type_val(tuple(Audio_codec._value2member_map_)),),
|
|
@@ -502,11 +503,11 @@ class Opt_type(enum.Enum):
|
|
|
502
503
|
param="<string>",
|
|
503
504
|
description=(
|
|
504
505
|
"Setting muxer\n"
|
|
505
|
-
"
|
|
506
|
+
"\n" # .
|
|
506
507
|
"Muxer:\n"
|
|
507
|
-
"
|
|
508
|
-
" mkv\n"
|
|
508
|
+
f"{Audio_codec.to_help_string(' ')}"
|
|
509
509
|
),
|
|
510
|
+
childs=(Cmd_type_val(tuple(Muxer._value2member_map_)),),
|
|
510
511
|
)
|
|
511
512
|
_r = _fps = Cmd_type_val(
|
|
512
513
|
("-r", "-fps"),
|
|
@@ -790,8 +791,10 @@ class OptCompleter(Completer):
|
|
|
790
791
|
_preset_name = None
|
|
791
792
|
if _preset in Preset_name._member_map_:
|
|
792
793
|
_preset_name = Preset_name[_preset]
|
|
793
|
-
if _preset_name is not None
|
|
794
|
-
add_set: set[str] = {
|
|
794
|
+
if _preset_name is not None:
|
|
795
|
+
add_set: set[str] = {
|
|
796
|
+
f"-{n}" for n in _preset_name.get_param_name_set(set())
|
|
797
|
+
}
|
|
795
798
|
add_comp_words |= add_set
|
|
796
799
|
add_comp_meta_dict |= dict.fromkeys(add_set, f"{_preset} param")
|
|
797
800
|
|
|
@@ -860,13 +863,12 @@ class OptCompleter(Completer):
|
|
|
860
863
|
|
|
861
864
|
yield from merge_completers(
|
|
862
865
|
(
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
(
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
)
|
|
866
|
+
merge_completers(
|
|
867
|
+
(
|
|
868
|
+
_nested_dict_to_nc(new_nd),
|
|
869
|
+
FuzzyCompleter(_nested_dict_to_nc(new_nd), WORD=True),
|
|
870
|
+
),
|
|
871
|
+
deduplicate=True,
|
|
870
872
|
),
|
|
871
873
|
FuzzyCompleter(
|
|
872
874
|
WordCompleter(
|
easyrip/easyrip_main.py
CHANGED
|
@@ -30,14 +30,12 @@ from .easyrip_log import log
|
|
|
30
30
|
from .easyrip_mlang import (
|
|
31
31
|
Global_lang_val,
|
|
32
32
|
Lang_tag,
|
|
33
|
-
Lang_tag_language,
|
|
34
33
|
get_system_language,
|
|
35
34
|
gettext,
|
|
36
35
|
translate_subtitles,
|
|
37
36
|
)
|
|
38
37
|
from .easyrip_prompt import easyrip_prompt
|
|
39
38
|
from .ripper.media_info import Media_info
|
|
40
|
-
from .ripper.param import DEFAULT_PRESET_PARAMS, PRESET_OPT_NAME
|
|
41
39
|
from .ripper.ripper import Ripper
|
|
42
40
|
from .ripper.sub_and_font import load_fonts
|
|
43
41
|
from .utils import change_title, check_ver, read_text
|
|
@@ -419,40 +417,41 @@ def run_command(command: Iterable[str] | str) -> bool:
|
|
|
419
417
|
log.send(_want_doc_cmd_type.value.to_doc(), is_format=False)
|
|
420
418
|
elif cmd_list[2] in Ripper.Preset_name._value2member_map_:
|
|
421
419
|
_preset = Ripper.Preset_name(cmd_list[2])
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
):
|
|
426
|
-
if _preset in PRESET_OPT_NAME:
|
|
427
|
-
log.send(
|
|
428
|
-
"Params that can be directly used:\n{}",
|
|
429
|
-
textwrap.indent(
|
|
430
|
-
"\n".join(
|
|
431
|
-
f"-{n}"
|
|
432
|
-
for n in PRESET_OPT_NAME[_preset]
|
|
433
|
-
),
|
|
434
|
-
prefix=" ",
|
|
435
|
-
),
|
|
436
|
-
)
|
|
437
|
-
if _preset in DEFAULT_PRESET_PARAMS:
|
|
438
|
-
_default_params = DEFAULT_PRESET_PARAMS[_preset]
|
|
439
|
-
max_name_len = (
|
|
440
|
-
max(len(str(n)) for n in _default_params) + 1
|
|
441
|
-
)
|
|
442
|
-
log.send(
|
|
443
|
-
"Default val:\n{}",
|
|
444
|
-
textwrap.indent(
|
|
445
|
-
"\n".join(
|
|
446
|
-
f"{f'-{n}':>{max_name_len}} {v}"
|
|
447
|
-
for n, v in _default_params.items()
|
|
448
|
-
),
|
|
449
|
-
prefix=" ",
|
|
450
|
-
),
|
|
451
|
-
)
|
|
452
|
-
else:
|
|
420
|
+
_param_default_dict = _preset.get_param_default_dict()
|
|
421
|
+
_param_name_set = _preset.get_param_name_set()
|
|
422
|
+
if not any((_param_default_dict, _param_name_set)):
|
|
453
423
|
log.send(
|
|
454
424
|
"The preset '{}' has no separate help", cmd_list[2]
|
|
455
425
|
)
|
|
426
|
+
if _param_name_set:
|
|
427
|
+
log.send(
|
|
428
|
+
"Params that can be directly used:\n{}",
|
|
429
|
+
textwrap.indent(
|
|
430
|
+
"\n".join(f"-{n}" for n in _param_name_set),
|
|
431
|
+
prefix=" ",
|
|
432
|
+
),
|
|
433
|
+
)
|
|
434
|
+
if _param_default_dict:
|
|
435
|
+
max_name_len = (
|
|
436
|
+
max(len(str(n)) for n in _param_default_dict) + 1
|
|
437
|
+
)
|
|
438
|
+
log.send(
|
|
439
|
+
"Default val:\n{}",
|
|
440
|
+
textwrap.indent(
|
|
441
|
+
"\n".join(
|
|
442
|
+
f"{f'-{n}':>{max_name_len}} {v}"
|
|
443
|
+
for n, v in _param_default_dict.items()
|
|
444
|
+
),
|
|
445
|
+
prefix=" ",
|
|
446
|
+
),
|
|
447
|
+
)
|
|
448
|
+
log.send(
|
|
449
|
+
" FFmpeg format:\n {}",
|
|
450
|
+
":".join(
|
|
451
|
+
f"{n}={v}"
|
|
452
|
+
for n, v in _param_default_dict.items()
|
|
453
|
+
),
|
|
454
|
+
)
|
|
456
455
|
else:
|
|
457
456
|
log.error("'{}' is not a member of preset", cmd_list[2])
|
|
458
457
|
|
|
@@ -1156,7 +1155,7 @@ def init(is_first_run: bool = False) -> None:
|
|
|
1156
1155
|
|
|
1157
1156
|
if (
|
|
1158
1157
|
lang_tag := Lang_tag.from_str(file.stem[5:])
|
|
1159
|
-
).language is not
|
|
1158
|
+
).language is not Lang_tag.Language.Unknown:
|
|
1160
1159
|
easyrip_mlang.all_supported_lang_map[lang_tag] = lang_map
|
|
1161
1160
|
|
|
1162
1161
|
log.debug("Loading \"{}\" as '{}' language successfully", file, lang_tag)
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import locale
|
|
2
2
|
|
|
3
3
|
from . import lang_en, lang_zh_Hans_CN
|
|
4
|
-
from .global_lang_val import
|
|
5
|
-
|
|
6
|
-
Lang_tag,
|
|
7
|
-
Lang_tag_language,
|
|
8
|
-
Lang_tag_region,
|
|
9
|
-
Lang_tag_script,
|
|
10
|
-
Lang_tag_val,
|
|
11
|
-
)
|
|
4
|
+
from .global_lang_val import Global_lang_val, Lang_tag
|
|
5
|
+
from .lang_tag_val import Lang_tag_val
|
|
12
6
|
from .translator import translate_subtitles
|
|
13
7
|
|
|
14
8
|
__all__ = [
|
|
15
9
|
"Global_lang_val",
|
|
16
10
|
"Lang_tag",
|
|
17
|
-
"Lang_tag_language",
|
|
18
|
-
"Lang_tag_region",
|
|
19
|
-
"Lang_tag_script",
|
|
20
11
|
"Lang_tag_val",
|
|
21
12
|
"Mlang_exception",
|
|
22
13
|
"get_system_language",
|
|
@@ -4,154 +4,16 @@ from dataclasses import dataclass
|
|
|
4
4
|
from typing import Self, final
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
@final
|
|
8
|
-
@dataclass(slots=True, init=False, eq=False)
|
|
9
|
-
class Lang_tag_val:
|
|
10
|
-
en_name: str
|
|
11
|
-
_local_name: str | None
|
|
12
|
-
|
|
13
|
-
@property
|
|
14
|
-
def local_name(self) -> str:
|
|
15
|
-
return self.en_name if self._local_name is None else self._local_name
|
|
16
|
-
|
|
17
|
-
@local_name.setter
|
|
18
|
-
def local_name(self, val: str | None) -> None:
|
|
19
|
-
if val is not None and len(val) == 0:
|
|
20
|
-
raise ValueError("The length of the name cannot be 0")
|
|
21
|
-
|
|
22
|
-
self._local_name = val
|
|
23
|
-
|
|
24
|
-
def __init__(self, *, en_name: str, local_name: str | None = None) -> None:
|
|
25
|
-
if len(en_name) == 0:
|
|
26
|
-
raise ValueError("The length of the name cannot be 0")
|
|
27
|
-
|
|
28
|
-
self.en_name = en_name
|
|
29
|
-
self.local_name = local_name
|
|
30
|
-
|
|
31
|
-
def __str__(self) -> str:
|
|
32
|
-
return f"{self.__class__.__name__}(en_name={self.en_name}, local_name={self._local_name})"
|
|
33
|
-
|
|
34
|
-
def __eq__(self, other: object) -> bool:
|
|
35
|
-
if isinstance(other, Lang_tag_val):
|
|
36
|
-
return self.en_name == other.en_name
|
|
37
|
-
return False
|
|
38
|
-
|
|
39
|
-
def __hash__(self) -> int:
|
|
40
|
-
return hash(self.en_name)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
class Lang_tag_language(enum.Enum):
|
|
44
|
-
Unknown = Lang_tag_val(en_name="Unknown")
|
|
45
|
-
|
|
46
|
-
# ISO 639-1
|
|
47
|
-
en = Lang_tag_val(en_name="English", local_name="English")
|
|
48
|
-
zh = Lang_tag_val(en_name="Chinese", local_name="中文")
|
|
49
|
-
fr = Lang_tag_val(en_name="French", local_name="Français")
|
|
50
|
-
de = Lang_tag_val(en_name="German", local_name="Deutsch")
|
|
51
|
-
es = Lang_tag_val(en_name="Spanish", local_name="Español")
|
|
52
|
-
it = Lang_tag_val(en_name="Italian", local_name="Italiano")
|
|
53
|
-
ja = Lang_tag_val(en_name="Japanese", local_name="日本語")
|
|
54
|
-
ko = Lang_tag_val(en_name="Korean", local_name="한국어")
|
|
55
|
-
ru = Lang_tag_val(en_name="Russian", local_name="Русский")
|
|
56
|
-
ar = Lang_tag_val(en_name="Arabic", local_name="العربية")
|
|
57
|
-
|
|
58
|
-
# ISO 639-2
|
|
59
|
-
eng = en
|
|
60
|
-
zho = chi = zh
|
|
61
|
-
fra = fre = fr
|
|
62
|
-
deu = ger = de
|
|
63
|
-
spa = es
|
|
64
|
-
ita = it
|
|
65
|
-
jpn = ja
|
|
66
|
-
kor = ko
|
|
67
|
-
rus = ru
|
|
68
|
-
ara = ar
|
|
69
|
-
|
|
70
|
-
# ISO 639-3
|
|
71
|
-
# 与 p2 重叠的放在 p2
|
|
72
|
-
cdo = Lang_tag_val(en_name="Min Dong Chinese", local_name="闽东语")
|
|
73
|
-
cjy = Lang_tag_val(en_name="Jinyu Chinese", local_name="晋语")
|
|
74
|
-
cmn = Lang_tag_val(en_name="Mandarin Chinese", local_name="普通话")
|
|
75
|
-
cnp = Lang_tag_val(en_name="Northern Ping Chinese", local_name="北平语")
|
|
76
|
-
wuu = Lang_tag_val(en_name="Wu Chinese", local_name="吴语")
|
|
77
|
-
yue = Lang_tag_val(en_name="Yue Chinese", local_name="粤语")
|
|
78
|
-
hak = Lang_tag_val(en_name="Hakka Chinese", local_name="客家话")
|
|
79
|
-
nan = Lang_tag_val(en_name="Min Nan Chinese", local_name="闽南语")
|
|
80
|
-
och = Lang_tag_val(en_name="Old Chinese", local_name="古汉语")
|
|
81
|
-
|
|
82
|
-
@classmethod
|
|
83
|
-
def _missing_(cls, value: object):
|
|
84
|
-
return cls.Unknown
|
|
85
|
-
|
|
86
|
-
@classmethod
|
|
87
|
-
def from_name(cls, name: str):
|
|
88
|
-
try:
|
|
89
|
-
return cls[name]
|
|
90
|
-
except KeyError:
|
|
91
|
-
return cls.Unknown
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
class Lang_tag_script(enum.Enum):
|
|
95
|
-
Unknown = Lang_tag_val(en_name="Unknown")
|
|
96
|
-
|
|
97
|
-
Hans = Lang_tag_val(en_name="Simplified Chinese", local_name="简体")
|
|
98
|
-
Hant = Lang_tag_val(en_name="Traditional Chinese", local_name="繁體")
|
|
99
|
-
Latn = Lang_tag_val(en_name="Latin", local_name="Latina")
|
|
100
|
-
Cyrl = Lang_tag_val(en_name="Cyrillic", local_name="Кириллица")
|
|
101
|
-
Arab = Lang_tag_val(en_name="Arabic", local_name="العربية")
|
|
102
|
-
|
|
103
|
-
@classmethod
|
|
104
|
-
def _missing_(cls, value: object):
|
|
105
|
-
return cls.Unknown
|
|
106
|
-
|
|
107
|
-
@classmethod
|
|
108
|
-
def from_name(cls, name: str):
|
|
109
|
-
try:
|
|
110
|
-
return cls[name]
|
|
111
|
-
except KeyError:
|
|
112
|
-
return cls.Unknown
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
class Lang_tag_region(enum.Enum):
|
|
116
|
-
Unknown = Lang_tag_val(en_name="Unknown")
|
|
117
|
-
|
|
118
|
-
US = Lang_tag_val(en_name="United States", local_name="United States")
|
|
119
|
-
GB = Lang_tag_val(en_name="United Kingdom", local_name="United Kingdom")
|
|
120
|
-
AU = Lang_tag_val(en_name="Australia", local_name="Australia")
|
|
121
|
-
CA = Lang_tag_val(en_name="Canada", local_name="Canada")
|
|
122
|
-
NZ = Lang_tag_val(en_name="New Zealand", local_name="New Zealand")
|
|
123
|
-
IE = Lang_tag_val(en_name="Ireland", local_name="Éire")
|
|
124
|
-
ZA = Lang_tag_val(en_name="South Africa", local_name="South Africa")
|
|
125
|
-
JM = Lang_tag_val(en_name="Jamaica", local_name="Jamaica")
|
|
126
|
-
TT = Lang_tag_val(en_name="Caribbean", local_name="Caribbean")
|
|
127
|
-
BZ = Lang_tag_val(en_name="Belize", local_name="Belize")
|
|
128
|
-
PH = Lang_tag_val(en_name="Philippines", local_name="Pilipinas")
|
|
129
|
-
IN = Lang_tag_val(en_name="India", local_name="भारत")
|
|
130
|
-
MY = Lang_tag_val(en_name="Malaysia", local_name="Malaysia")
|
|
131
|
-
SG = Lang_tag_val(en_name="Singapore", local_name="Singapura")
|
|
132
|
-
MO = Lang_tag_val(en_name="Macau SAR", local_name="澳門")
|
|
133
|
-
HK = Lang_tag_val(en_name="Hong Kong SAR", local_name="香港")
|
|
134
|
-
TW = Lang_tag_val(en_name="Taiwan", local_name="台灣")
|
|
135
|
-
CN = Lang_tag_val(en_name="China", local_name="中国大陆")
|
|
136
|
-
|
|
137
|
-
@classmethod
|
|
138
|
-
def _missing_(cls, value: object):
|
|
139
|
-
return cls.Unknown
|
|
140
|
-
|
|
141
|
-
@classmethod
|
|
142
|
-
def from_name(cls, name: str):
|
|
143
|
-
try:
|
|
144
|
-
return cls[name]
|
|
145
|
-
except KeyError:
|
|
146
|
-
return cls.Unknown
|
|
147
|
-
|
|
148
|
-
|
|
149
7
|
@final
|
|
150
8
|
@dataclass(slots=True, kw_only=True)
|
|
151
9
|
class Lang_tag:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
10
|
+
from .lang_tag_val import Lang_tag_language as Language
|
|
11
|
+
from .lang_tag_val import Lang_tag_region as Region
|
|
12
|
+
from .lang_tag_val import Lang_tag_script as Script
|
|
13
|
+
|
|
14
|
+
language: Language = Language.Unknown
|
|
15
|
+
script: Script = Script.Unknown
|
|
16
|
+
region: Region = Region.Unknown
|
|
155
17
|
|
|
156
18
|
class Match_priority(enum.Enum):
|
|
157
19
|
script = enum.auto()
|
|
@@ -193,7 +55,7 @@ class Lang_tag:
|
|
|
193
55
|
|
|
194
56
|
if priority_same_tuple := (
|
|
195
57
|
same_script_tuple + same_region_tuple
|
|
196
|
-
if priority is
|
|
58
|
+
if priority is self.__class__.Match_priority.script
|
|
197
59
|
else same_region_tuple + same_script_tuple
|
|
198
60
|
):
|
|
199
61
|
return priority_same_tuple[0]
|
|
@@ -214,19 +76,19 @@ class Lang_tag:
|
|
|
214
76
|
|
|
215
77
|
str_tag_list = str_tag.split("-")
|
|
216
78
|
|
|
217
|
-
language =
|
|
218
|
-
script:
|
|
219
|
-
region:
|
|
79
|
+
language: Lang_tag.Language = cls.Language.from_name(str_tag_list[0])
|
|
80
|
+
script: Lang_tag.Script = cls.Script.Unknown
|
|
81
|
+
region: Lang_tag.Region = cls.Region.Unknown
|
|
220
82
|
|
|
221
83
|
for i, s in enumerate(str_tag_list[1:]):
|
|
222
|
-
if s in
|
|
84
|
+
if s in cls.Script._member_map_:
|
|
223
85
|
if i != 0:
|
|
224
86
|
raise ValueError(
|
|
225
87
|
gettext("The input language tag string format is illegal")
|
|
226
88
|
)
|
|
227
|
-
script =
|
|
228
|
-
elif s in
|
|
229
|
-
region =
|
|
89
|
+
script = cls.Script[s]
|
|
90
|
+
elif s in cls.Region._member_map_:
|
|
91
|
+
region = cls.Region[s]
|
|
230
92
|
|
|
231
93
|
return cls(
|
|
232
94
|
language=language,
|
|
@@ -236,13 +98,13 @@ class Lang_tag:
|
|
|
236
98
|
|
|
237
99
|
def __str__(self) -> str:
|
|
238
100
|
"""返回语言标签字符串"""
|
|
239
|
-
if self.language ==
|
|
101
|
+
if self.language == self.__class__.Language.Unknown:
|
|
240
102
|
raise Exception("The Language is Unknown")
|
|
241
103
|
|
|
242
104
|
res_str: str = self.language.name
|
|
243
|
-
if self.script !=
|
|
105
|
+
if self.script != self.__class__.Script.Unknown:
|
|
244
106
|
res_str += f"-{self.script.name}"
|
|
245
|
-
if self.region !=
|
|
107
|
+
if self.region != self.__class__.Region.Unknown:
|
|
246
108
|
res_str += f"-{self.region.name}"
|
|
247
109
|
|
|
248
110
|
return res_str
|
|
@@ -266,18 +128,18 @@ class Global_lang_val:
|
|
|
266
128
|
|
|
267
129
|
res_str_list: list[str] = [
|
|
268
130
|
_local_name
|
|
269
|
-
if (_org_name := tag_list[0]) in
|
|
270
|
-
and (_local_name :=
|
|
131
|
+
if (_org_name := tag_list[0]) in Lang_tag.Language._member_map_
|
|
132
|
+
and (_local_name := Lang_tag.Language[_org_name].value.local_name)
|
|
271
133
|
else _org_name
|
|
272
134
|
]
|
|
273
135
|
|
|
274
136
|
if tag_list_len >= 2:
|
|
275
137
|
_org_name = tag_list[1]
|
|
276
138
|
|
|
277
|
-
if _org_name in
|
|
278
|
-
_local_name =
|
|
279
|
-
elif _org_name in
|
|
280
|
-
_local_name =
|
|
139
|
+
if _org_name in Lang_tag.Script.__members__:
|
|
140
|
+
_local_name = Lang_tag.Script[_org_name].value.local_name
|
|
141
|
+
elif _org_name in Lang_tag.Region._member_map_:
|
|
142
|
+
_local_name = Lang_tag.Region[_org_name].value.local_name
|
|
281
143
|
else:
|
|
282
144
|
_local_name = _org_name
|
|
283
145
|
|
|
@@ -286,8 +148,8 @@ class Global_lang_val:
|
|
|
286
148
|
if tag_list_len >= 3:
|
|
287
149
|
_org_name = tag_list[2]
|
|
288
150
|
|
|
289
|
-
if _org_name in
|
|
290
|
-
_local_name =
|
|
151
|
+
if _org_name in Lang_tag.Region._member_map_:
|
|
152
|
+
_local_name = Lang_tag.Region[_org_name].value.local_name
|
|
291
153
|
else:
|
|
292
154
|
_local_name = _org_name
|
|
293
155
|
|
easyrip/easyrip_mlang/lang_en.py
CHANGED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import enum
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from typing import final
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@final
|
|
7
|
+
@dataclass(slots=True, init=False, eq=False)
|
|
8
|
+
class Lang_tag_val:
|
|
9
|
+
en_name: str
|
|
10
|
+
_local_name: str | None
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def local_name(self) -> str:
|
|
14
|
+
return self.en_name if self._local_name is None else self._local_name
|
|
15
|
+
|
|
16
|
+
@local_name.setter
|
|
17
|
+
def local_name(self, val: str | None) -> None:
|
|
18
|
+
if val is not None and len(val) == 0:
|
|
19
|
+
raise ValueError("The length of the name cannot be 0")
|
|
20
|
+
|
|
21
|
+
self._local_name = val
|
|
22
|
+
|
|
23
|
+
def __init__(self, *, en_name: str, local_name: str | None = None) -> None:
|
|
24
|
+
if len(en_name) == 0:
|
|
25
|
+
raise ValueError("The length of the name cannot be 0")
|
|
26
|
+
|
|
27
|
+
self.en_name = en_name
|
|
28
|
+
self.local_name = local_name
|
|
29
|
+
|
|
30
|
+
def __str__(self) -> str:
|
|
31
|
+
return f"{self.__class__.__name__}(en_name={self.en_name}, local_name={self._local_name})"
|
|
32
|
+
|
|
33
|
+
def __eq__(self, other: object) -> bool:
|
|
34
|
+
if isinstance(other, Lang_tag_val):
|
|
35
|
+
return self.en_name == other.en_name
|
|
36
|
+
return False
|
|
37
|
+
|
|
38
|
+
def __hash__(self) -> int:
|
|
39
|
+
return hash(self.en_name)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class Lang_tag_language(enum.Enum):
|
|
43
|
+
Unknown = Lang_tag_val(en_name="Unknown")
|
|
44
|
+
|
|
45
|
+
# ISO 639-1
|
|
46
|
+
en = Lang_tag_val(en_name="English", local_name="English")
|
|
47
|
+
zh = Lang_tag_val(en_name="Chinese", local_name="中文")
|
|
48
|
+
fr = Lang_tag_val(en_name="French", local_name="Français")
|
|
49
|
+
de = Lang_tag_val(en_name="German", local_name="Deutsch")
|
|
50
|
+
es = Lang_tag_val(en_name="Spanish", local_name="Español")
|
|
51
|
+
it = Lang_tag_val(en_name="Italian", local_name="Italiano")
|
|
52
|
+
ja = Lang_tag_val(en_name="Japanese", local_name="日本語")
|
|
53
|
+
ko = Lang_tag_val(en_name="Korean", local_name="한국어")
|
|
54
|
+
ru = Lang_tag_val(en_name="Russian", local_name="Русский")
|
|
55
|
+
ar = Lang_tag_val(en_name="Arabic", local_name="العربية")
|
|
56
|
+
|
|
57
|
+
# ISO 639-2
|
|
58
|
+
eng = en
|
|
59
|
+
zho = chi = zh
|
|
60
|
+
fra = fre = fr
|
|
61
|
+
deu = ger = de
|
|
62
|
+
spa = es
|
|
63
|
+
ita = it
|
|
64
|
+
jpn = ja
|
|
65
|
+
kor = ko
|
|
66
|
+
rus = ru
|
|
67
|
+
ara = ar
|
|
68
|
+
|
|
69
|
+
# ISO 639-3
|
|
70
|
+
# 与 p2 重叠的放在 p2
|
|
71
|
+
cdo = Lang_tag_val(en_name="Min Dong Chinese", local_name="闽东语")
|
|
72
|
+
cjy = Lang_tag_val(en_name="Jinyu Chinese", local_name="晋语")
|
|
73
|
+
cmn = Lang_tag_val(en_name="Mandarin Chinese", local_name="普通话")
|
|
74
|
+
cnp = Lang_tag_val(en_name="Northern Ping Chinese", local_name="北平语")
|
|
75
|
+
wuu = Lang_tag_val(en_name="Wu Chinese", local_name="吴语")
|
|
76
|
+
yue = Lang_tag_val(en_name="Yue Chinese", local_name="粤语")
|
|
77
|
+
hak = Lang_tag_val(en_name="Hakka Chinese", local_name="客家话")
|
|
78
|
+
nan = Lang_tag_val(en_name="Min Nan Chinese", local_name="闽南语")
|
|
79
|
+
och = Lang_tag_val(en_name="Old Chinese", local_name="古汉语")
|
|
80
|
+
|
|
81
|
+
@classmethod
|
|
82
|
+
def _missing_(cls, value: object):
|
|
83
|
+
return cls.Unknown
|
|
84
|
+
|
|
85
|
+
@classmethod
|
|
86
|
+
def from_name(cls, name: str):
|
|
87
|
+
try:
|
|
88
|
+
return cls[name]
|
|
89
|
+
except KeyError:
|
|
90
|
+
return cls.Unknown
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class Lang_tag_script(enum.Enum):
|
|
94
|
+
Unknown = Lang_tag_val(en_name="Unknown")
|
|
95
|
+
|
|
96
|
+
Hans = Lang_tag_val(en_name="Simplified Chinese", local_name="简体")
|
|
97
|
+
Hant = Lang_tag_val(en_name="Traditional Chinese", local_name="繁體")
|
|
98
|
+
Latn = Lang_tag_val(en_name="Latin", local_name="Latina")
|
|
99
|
+
Cyrl = Lang_tag_val(en_name="Cyrillic", local_name="Кириллица")
|
|
100
|
+
Arab = Lang_tag_val(en_name="Arabic", local_name="العربية")
|
|
101
|
+
|
|
102
|
+
@classmethod
|
|
103
|
+
def _missing_(cls, value: object):
|
|
104
|
+
return cls.Unknown
|
|
105
|
+
|
|
106
|
+
@classmethod
|
|
107
|
+
def from_name(cls, name: str):
|
|
108
|
+
try:
|
|
109
|
+
return cls[name]
|
|
110
|
+
except KeyError:
|
|
111
|
+
return cls.Unknown
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class Lang_tag_region(enum.Enum):
|
|
115
|
+
Unknown = Lang_tag_val(en_name="Unknown")
|
|
116
|
+
|
|
117
|
+
US = Lang_tag_val(en_name="United States", local_name="United States")
|
|
118
|
+
GB = Lang_tag_val(en_name="United Kingdom", local_name="United Kingdom")
|
|
119
|
+
AU = Lang_tag_val(en_name="Australia", local_name="Australia")
|
|
120
|
+
CA = Lang_tag_val(en_name="Canada", local_name="Canada")
|
|
121
|
+
NZ = Lang_tag_val(en_name="New Zealand", local_name="New Zealand")
|
|
122
|
+
IE = Lang_tag_val(en_name="Ireland", local_name="Éire")
|
|
123
|
+
ZA = Lang_tag_val(en_name="South Africa", local_name="South Africa")
|
|
124
|
+
JM = Lang_tag_val(en_name="Jamaica", local_name="Jamaica")
|
|
125
|
+
TT = Lang_tag_val(en_name="Caribbean", local_name="Caribbean")
|
|
126
|
+
BZ = Lang_tag_val(en_name="Belize", local_name="Belize")
|
|
127
|
+
PH = Lang_tag_val(en_name="Philippines", local_name="Pilipinas")
|
|
128
|
+
IN = Lang_tag_val(en_name="India", local_name="भारत")
|
|
129
|
+
MY = Lang_tag_val(en_name="Malaysia", local_name="Malaysia")
|
|
130
|
+
SG = Lang_tag_val(en_name="Singapore", local_name="Singapura")
|
|
131
|
+
MO = Lang_tag_val(en_name="Macau SAR", local_name="澳門")
|
|
132
|
+
HK = Lang_tag_val(en_name="Hong Kong SAR", local_name="香港")
|
|
133
|
+
TW = Lang_tag_val(en_name="Taiwan", local_name="台灣")
|
|
134
|
+
CN = Lang_tag_val(en_name="China", local_name="中国大陆")
|
|
135
|
+
|
|
136
|
+
@classmethod
|
|
137
|
+
def _missing_(cls, value: object):
|
|
138
|
+
return cls.Unknown
|
|
139
|
+
|
|
140
|
+
@classmethod
|
|
141
|
+
def from_name(cls, name: str):
|
|
142
|
+
try:
|
|
143
|
+
return cls[name]
|
|
144
|
+
except KeyError:
|
|
145
|
+
return cls.Unknown
|