easyrip 4.11.3__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 +19 -9
- 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/global_val.py +1 -1
- easyrip/ripper/param.py +57 -17
- easyrip/ripper/ripper.py +278 -203
- {easyrip-4.11.3.dist-info → easyrip-4.12.0.dist-info}/METADATA +1 -1
- easyrip-4.12.0.dist-info/RECORD +32 -0
- easyrip-4.11.3.dist-info/RECORD +0 -31
- {easyrip-4.11.3.dist-info → easyrip-4.12.0.dist-info}/WHEEL +0 -0
- {easyrip-4.11.3.dist-info → easyrip-4.12.0.dist-info}/entry_points.txt +0 -0
- {easyrip-4.11.3.dist-info → easyrip-4.12.0.dist-info}/licenses/LICENSE +0 -0
- {easyrip-4.11.3.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
|
@@ -18,7 +18,7 @@ from prompt_toolkit.document import Document
|
|
|
18
18
|
|
|
19
19
|
from . import global_val
|
|
20
20
|
from .easyrip_config.config_key import Config_key
|
|
21
|
-
from .ripper.param import
|
|
21
|
+
from .ripper.param import Audio_codec, Muxer, Preset_name
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
@final
|
|
@@ -353,7 +353,8 @@ class Opt_type(enum.Enum):
|
|
|
353
353
|
param="<string>",
|
|
354
354
|
description=(
|
|
355
355
|
"Setting preset\n"
|
|
356
|
-
"
|
|
356
|
+
"\n" # .
|
|
357
|
+
"Preset name:\n"
|
|
357
358
|
f"{Preset_name.to_help_string(' ')}"
|
|
358
359
|
),
|
|
359
360
|
childs=(Cmd_type_val(tuple(Preset_name._value2member_map_)),),
|
|
@@ -486,7 +487,8 @@ class Opt_type(enum.Enum):
|
|
|
486
487
|
param="<string>",
|
|
487
488
|
description=(
|
|
488
489
|
"Setting audio encoder\n"
|
|
489
|
-
"
|
|
490
|
+
"\n" # .
|
|
491
|
+
"Audio encoder:\n"
|
|
490
492
|
f"{Audio_codec.to_help_string(' ')}"
|
|
491
493
|
),
|
|
492
494
|
childs=(Cmd_type_val(tuple(Audio_codec._value2member_map_)),),
|
|
@@ -501,11 +503,11 @@ class Opt_type(enum.Enum):
|
|
|
501
503
|
param="<string>",
|
|
502
504
|
description=(
|
|
503
505
|
"Setting muxer\n"
|
|
504
|
-
"
|
|
506
|
+
"\n" # .
|
|
505
507
|
"Muxer:\n"
|
|
506
|
-
"
|
|
507
|
-
" mkv\n"
|
|
508
|
+
f"{Audio_codec.to_help_string(' ')}"
|
|
508
509
|
),
|
|
510
|
+
childs=(Cmd_type_val(tuple(Muxer._value2member_map_)),),
|
|
509
511
|
)
|
|
510
512
|
_r = _fps = Cmd_type_val(
|
|
511
513
|
("-r", "-fps"),
|
|
@@ -789,8 +791,10 @@ class OptCompleter(Completer):
|
|
|
789
791
|
_preset_name = None
|
|
790
792
|
if _preset in Preset_name._member_map_:
|
|
791
793
|
_preset_name = Preset_name[_preset]
|
|
792
|
-
if _preset_name is not None
|
|
793
|
-
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
|
+
}
|
|
794
798
|
add_comp_words |= add_set
|
|
795
799
|
add_comp_meta_dict |= dict.fromkeys(add_set, f"{_preset} param")
|
|
796
800
|
|
|
@@ -859,7 +863,13 @@ class OptCompleter(Completer):
|
|
|
859
863
|
|
|
860
864
|
yield from merge_completers(
|
|
861
865
|
(
|
|
862
|
-
|
|
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,
|
|
872
|
+
),
|
|
863
873
|
FuzzyCompleter(
|
|
864
874
|
WordCompleter(
|
|
865
875
|
words=tuple(opt_tree_pos_list[-1]),
|
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
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
from ..easyrip_command import Audio_codec, Cmd_type, Opt_type, Preset_name
|
|
2
|
-
from .global_lang_val import
|
|
3
|
-
Lang_tag,
|
|
4
|
-
Lang_tag_language,
|
|
5
|
-
Lang_tag_region,
|
|
6
|
-
Lang_tag_script,
|
|
7
|
-
)
|
|
2
|
+
from .global_lang_val import Lang_tag
|
|
8
3
|
|
|
9
4
|
LANG_TAG = Lang_tag(
|
|
10
|
-
language=
|
|
11
|
-
script=
|
|
12
|
-
region=
|
|
5
|
+
language=Lang_tag.Language.zh,
|
|
6
|
+
script=Lang_tag.Script.Hans,
|
|
7
|
+
region=Lang_tag.Region.CN,
|
|
13
8
|
)
|
|
14
9
|
|
|
15
10
|
LANG_MAP: dict[str, str] = {
|
|
@@ -135,7 +130,8 @@ LANG_MAP: dict[str, str] = {
|
|
|
135
130
|
),
|
|
136
131
|
Opt_type._preset.value.description: (
|
|
137
132
|
"设置预设\n"
|
|
138
|
-
"
|
|
133
|
+
"\n" # .
|
|
134
|
+
"预设名:\n"
|
|
139
135
|
f"{Preset_name.to_help_string(' ')}"
|
|
140
136
|
),
|
|
141
137
|
Opt_type._pipe.value.description: (
|
|
@@ -199,13 +195,14 @@ LANG_MAP: dict[str, str] = {
|
|
|
199
195
|
),
|
|
200
196
|
Opt_type._c_a.value.description: (
|
|
201
197
|
"设置音频编码器\n"
|
|
202
|
-
"
|
|
198
|
+
"\n" # .
|
|
199
|
+
"音频编码器:\n"
|
|
203
200
|
f"{Audio_codec.to_help_string(' ')}"
|
|
204
201
|
),
|
|
205
202
|
Opt_type._b_a.value.description: "设置音频码率。默认值 '160k'",
|
|
206
203
|
Opt_type._muxer.value.description: (
|
|
207
204
|
"设置复用器\n"
|
|
208
|
-
"
|
|
205
|
+
"\n" # .
|
|
209
206
|
"可用的复用器:\n"
|
|
210
207
|
" mp4\n"
|
|
211
208
|
" mkv"
|
|
@@ -323,6 +320,9 @@ LANG_MAP: dict[str, str] = {
|
|
|
323
320
|
"Failed to add Ripper: {}": "添加 Ripper 失败: {}",
|
|
324
321
|
"'{}' is not a valid '{}', set to default value '{}'. Valid options are: {}": "'{}' 不存在于 '{}', 已设为默认值 '{}'。有以下值可用: {}",
|
|
325
322
|
"The preset custom must have custom:format or custom:template": "custom 预设必须要有 custom:format 或 custom:template",
|
|
323
|
+
"Run the following commands in order:\n{}": "按顺序执行以下命令:\n{}",
|
|
324
|
+
"Run the command {}": "执行命令 {}",
|
|
325
|
+
"Command run failed: status code {}\n Failed command: {}": "命令执行失败: 状态码 {}\n 失败的命令: {}",
|
|
326
326
|
"There have error in running": "执行时出错",
|
|
327
327
|
"{} param illegal": "{} 参数非法",
|
|
328
328
|
'The file "{}" already exists, skip translating it': '文件 "{}" 已存在, 跳过翻译',
|