-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmain.py
155 lines (125 loc) · 4.02 KB
/
main.py
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
"""
基本种类:
:: EVENT [WIDGET] | 一般在文件开头
<<WIDGET_1>>ANY<</WIDGET_1>> | 有闭合的
<<WIDGET_0>> | 无闭合的
<<WIDGET "TAG">> | 特殊名称
<<WIDGET COND>> | 条件,如 if / link 等
特殊:
<<if>>ANY<<elseif>>ANY<<else>>ANY<</if>>
<<switch>>ANY<<case>>ANY<</switch>>
<<link [[TEXT]]>></link<>>
<<link [[TEXT|EVENT]]>></link<>>
<<set $VAR to KEYWORD>>
<<set $VAR to "VAR">>
<<set $VAR to "STRING">>
$VAR | 变量
$VAR.FUNC(PARAM) | 调用函数
$VAR.PROP | 属性
STRING | 文本
<CHAR_1>ANY</CHAR_1> | 有闭合的
<CHAR_0> | 无闭合的
<span class="VAR">TEXT</span>
//COMMENT | 注释
/*COMMENT*/ | 注释(可跨行)
/* COMMENT
* COMMENT
* COMMENT */
<!--COMMENT--> | 注释(可跨行)
<!-- COMMENT
COMMENT -->
要翻译的:
TEXT, STRING
"""
import asyncio
import time
from src import (
logger,
Paratranz,
ProjectDOL,
PARATRANZ_TOKEN,
CHINESE_VERSION,
SOURCE_TYPE,
)
from src.tools.process_variables import VariablesProcess as VP
async def process_common(dol_common: ProjectDOL, pt: Paratranz, chs_version: str):
"""
原版处理流程
1. 下载源码
2. 创建生肉词典
3. 下载汉化词典
4. 替换生肉词典
5. 替换游戏原文
"""
""" 删库跑路 """
await dol_common.drop_all_dirs()
""" 下载源码 """
await dol_common.download_from_gitgud()
# await dol_common.patch_format_js()
""" 预处理所有的 <<set>> """
var = VP()
var.fetch_all_file_paths()
var.fetch_all_set_content()
""" 创建生肉词典 """
await dol_common.create_dicts()
""" 下载汉化词典 成品在 `raw_dicts` 文件夹里 """
download_flag = (
await pt.download_from_paratranz()
) # 如果下载,需要在 consts 里填上管理员的 token, 在网站个人设置里找
if not download_flag:
return
""" 替换生肉词典 """
await dol_common.update_dicts()
""" 替换游戏原文 用的是 `paratranz` 文件夹里的内容覆写 """
blacklist_dirs = [
# "00-framework-tools",
# "01-config",
# "03-JavaScript",
# "04-Variables",
# "base-clothing",
# "base-combat",
# "base-debug",
# "base-system",
# "flavour-text-generators",
# "fonts",
# "overworld-forest",
# "overworld-plains",
# "overworld-town",
# "overworld-underground",
# "special-dance",
# "special-exhibition",
# "special-masturbation",
# "special-templates"
]
blacklist_files = []
await dol_common.apply_dicts(blacklist_dirs, blacklist_files, debug_flag=False)
# """ 有些额外需要更改的 """
dol_common.change_css() # 更换一些样式和硬编码文本
dol_common.replace_banner() # 更换游戏头图
dol_common.change_version(chs_version) # 更换游戏版本号
""" 编译成游戏 """
dol_common.compile(chs_version)
dol_common.package_zip(chs_version) # 自动打包成 zip
dol_common.run() # 运行
async def main():
start = time.time()
# =====
dol_common = ProjectDOL(
type_=SOURCE_TYPE
) # 改成 “dev” 则下载最新开发版分支的内容 common原版
pt_common = Paratranz(type_=SOURCE_TYPE)
if not PARATRANZ_TOKEN:
logger.error("未填写 PARATRANZ_TOKEN, 汉化包下载可能失败,请前往 https://paratranz.cn/users/my 的设置栏中查看自己的 token, 并在 .env 中填写\n")
return
await process_common(dol_common, pt_common, chs_version=CHINESE_VERSION)
end = time.time()
return end - start
if __name__ == "__main__":
last = asyncio.run(main())
logger.info(f"===== 总耗时 {last or -1:.2f}s =====")
try:
from win10toast import ToastNotifier
except ImportError:
pass
else:
ToastNotifier().show_toast(title="dol脚本运行完啦", msg=f"总耗时 {last or -1:.2f}s")