├── .gitignore ├── .vscode └── settings.json ├── Collaboration.MD ├── README.MD ├── app.py ├── asset ├── Haruhi.gif ├── background.gif └── sos.ico ├── const ├── __init__.py ├── converter_setting.py ├── parser_setting.py ├── render_setting.py └── tts_setting.py ├── corelib ├── __init__.py └── exception.py ├── dist ├── Excel2RpyScript 0.3.1.exe └── 凉宫春日AVG开发套装v1.0.zip ├── handler ├── __init__.py ├── converter.py ├── parser.py ├── tts.py └── writer.py ├── model ├── __init__.py ├── element.py └── process.py ├── predef_ref └── 01_有希_平静.wav ├── test └── 剧本空表格.xlsx └── tools ├── __init__.py ├── excel.py ├── image_data.py └── img.py /.gitignore: -------------------------------------------------------------------------------- 1 | /output 2 | /.idea 3 | *.pyc 4 | /build 5 | *.spec 6 | /.vscode -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "**/*.rpyc": true, 4 | "**/*.rpa": true, 5 | "**/*.rpymc": true, 6 | "**/cache/": true 7 | } 8 | } -------------------------------------------------------------------------------- /Collaboration.MD: -------------------------------------------------------------------------------- 1 | ## Git 2 | - 基本操作教程:https://www.liaoxuefeng.com/wiki/896043488029600 3 | 4 | ### 开发流程: 5 | - 从主分支将项目fork一份到自己的仓库 6 | - 在本地将项目clone下来,并添加远程分支: 7 | - 例子: 8 | `git clone 项目地址` 9 | `git remote add develop git@github.com:HaruhiFanClub/Excel2RpyScript.git` 10 | 11 | - 完成功能开发之后,拉取主项目最新的改动: 12 | `git pull --rebase develop develop` 13 | - 在本地解决冲突之后将改动推到自己项目的分支: 14 | `git push origin develop` 15 | - 在github上提交pull request 16 | 17 | - 以上流程仅供参考(慎用rebase命令) -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # Excel文件转Rpy脚本(0.3.0) 2 | 3 | ## 开发环境 4 | - Python 3.8 5 | 6 | ## 模块划分 7 | ``` 8 | | 9 | |-const 配置项 10 | |-corelib 基础依赖 11 | |-- exception 自定义的异常 12 | |-dist 打包的exe文件 13 | |-handler 14 | |-- converter 将Excel中的数据转化为rpy中的对象 15 | |-- parser 解析Excel中的数据 16 | |-- writer 将转化后的数据写入rpy文件 17 | |-- tts 语音合成功能的实现 18 | |-model 19 | |-- element Rpy游戏的基本元素 20 | |-- process Rpy游戏的进程控制 21 | |--tools 工具类 22 | |--app.py 程序入口 23 | ``` 24 | ## 语音合成使用说明 25 | 目前仅支持通过API方式调用[GPT-SoVITS-V2](https://github.com/RVC-Boss/GPT-SoVITS),可在本地部署此项目或使用他人的在线服务。 26 | 27 | 28 | ## 打包程序 29 | - 工具: pyinstaller 30 | - CMD: `pyinstaller -F -w -i .\asset\sos.ico .\app.py -n Excel2RpyScript` 31 | 32 | ## relase notes 33 | - 0.1.1 34 | - fix [立绘回收 #20](https://github.com/HaruhiFanClub/Excel2RpyScript/issues/20) 35 | - fix [Nvl模式与adv模式的切换 #19](https://github.com/HaruhiFanClub/Excel2RpyScript/issues/19) 36 | - 去掉Exe文件的外部依赖 37 | 38 | - 0.2.4 39 | - fix 条件选择在最后一行时无法读取 40 | - 支持对话框头像 41 | 42 | - 0.3.0 43 | - 支持语音合成功能 44 | - 支持将待合成的中文自动翻译为日语 45 | 46 | ## TODO 47 | ~~- 支持在GUI界面中直接修改配置项~~ 48 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | import base64 4 | import webbrowser 5 | from tkinter import Tk, Text, PhotoImage, Menu, messagebox, END 6 | from tkinter.messagebox import showerror, showinfo 7 | from tkinter.ttk import Frame, Style, Entry, Combobox, Button, Label 8 | from tkinter import filedialog 9 | from tkinter.ttk import Notebook 10 | from tkinter import Listbox, END 11 | from tkinter import simpledialog 12 | 13 | import requests 14 | 15 | 16 | from const.tts_setting import TTSConfig 17 | from const import CURRENT_VERSION 18 | from corelib.exception import ConvertException, SaveFileException, VoiceException 19 | from handler.converter import Converter 20 | from handler.parser import Parser 21 | from handler.writer import RpyFileWriter 22 | from tools.image_data import * 23 | from handler.tts import TTS 24 | 25 | 26 | 27 | class Application_ui(Frame): 28 | # 这个类仅实现界面生成功能,具体事件处理代码在子类Application中。 29 | 30 | def __init__(self, master=None): 31 | Frame.__init__(self, master) 32 | self.master.title('Excel转化Rpy工具') 33 | self.master.geometry('1280x720') 34 | self.style = Style() 35 | self.style.configure('TLabel', font=('宋体', 12)) 36 | self.style.configure('TButton', font=('宋体', 12)) 37 | tts_config = TTSConfig() 38 | self.role_model_mapping = tts_config.role_model_mapping 39 | self.API_BASE_URL = tts_config.api_base_url 40 | self.voice_cmd_mapping = tts_config.voice_cmd_mapping 41 | self.default_prompt_text = tts_config.default_prompt_text 42 | self.default_prompt_audio = tts_config.default_prompt_audio 43 | self.deepL_api_key = tts_config.deepL_api_key 44 | self.save_config_gui = tts_config.save_config_gui 45 | self.delete_role_gui = tts_config.delete_role 46 | self.delete_voice_cmd_gui = tts_config.delete_voice_cmd 47 | self.last_selected_role = None 48 | self.last_selected_cmd = None 49 | self.createWidgets() 50 | 51 | def createWidgets(self): 52 | self.top = self.winfo_toplevel() 53 | self.bkg_gif = PhotoImage(data=base64.b64decode(back_ground_gif_data)) 54 | self.background_label = Label(self.top, image=self.bkg_gif) 55 | self.background_label.place(x=0, y=0, relwidth=1, relheight=1) 56 | 57 | # 创建 Notebook 以支持多个标签页 58 | self.notebook = Notebook(self.top) 59 | self.notebook.pack(fill='both', expand=True) 60 | 61 | # 创建主功能标签页 62 | self.main_tab = Frame(self.notebook) 63 | self.notebook.add(self.main_tab, text='主功能') 64 | self.createMainWidgets() 65 | 66 | # 创建配置标签页 67 | self.config_tab = Frame(self.notebook) 68 | self.notebook.add(self.config_tab, text='配置项') 69 | self.createConfigWidgets() 70 | 71 | 72 | 73 | def createConfigWidgets(self): 74 | # 角色列表 75 | self.role_listbox = Listbox(self.config_tab, height=10, width=30) 76 | self.role_listbox.place(relx=0.05, rely=0.05, relwidth=0.13, relheight=0.25) 77 | self.role_listbox.bind('<>', self.update_model_paths) 78 | 79 | for role in self.role_model_mapping.keys(): 80 | self.role_listbox.insert(END, role) 81 | 82 | 83 | 84 | self.gpt_label = Label(self.config_tab, text='GPT 模型路径:', style='TLabel') 85 | self.gpt_label.place(relx=0.20, rely=0.05, relwidth=0.2, relheight=0.05) 86 | self.gpt_entry = Entry(self.config_tab) 87 | self.gpt_entry.place(relx=0.32, rely=0.05, relwidth=0.4, relheight=0.05) 88 | self.gpt_entry.insert(0, "选择角色并键入模型路径") 89 | 90 | self.sovits_label = Label(self.config_tab, text='SoVITS 模型路径:', style='TLabel') 91 | self.sovits_label.place(relx=0.20, rely=0.1, relwidth=0.2, relheight=0.05) 92 | self.sovits_entry = Entry(self.config_tab) 93 | self.sovits_entry.place(relx=0.32, rely=0.1, relwidth=0.4, relheight=0.05) 94 | self.sovits_entry.insert(0, "选择角色并键入模型路径") 95 | 96 | # 语音指令列表 97 | self.voice_cmd_listbox = Listbox(self.config_tab, height=10, width=30) 98 | self.voice_cmd_listbox.place(relx=0.05, rely=0.35, relwidth=0.13, relheight=0.25) 99 | self.voice_cmd_listbox.bind('<>', self.update_voice_cmd_params) 100 | 101 | for cmd in self.voice_cmd_mapping.keys(): 102 | self.voice_cmd_listbox.insert(END, cmd) 103 | 104 | self.ref_audio_label = Label(self.config_tab, text='参考音频路径:', style='TLabel') 105 | self.ref_audio_label.place(relx=0.20, rely=0.35, relwidth=0.2, relheight=0.05) 106 | self.ref_audio_entry = Entry(self.config_tab) 107 | self.ref_audio_entry.place(relx=0.32, rely=0.35, relwidth=0.4, relheight=0.05) 108 | self.ref_audio_entry.insert(0, "选择命令并键入参考音频路径") 109 | 110 | self.prompt_text_label = Label(self.config_tab, text='提示文本:', style='TLabel') 111 | self.prompt_text_label.place(relx=0.20, rely=0.40, relwidth=0.2, relheight=0.05) 112 | self.prompt_text_entry = Entry(self.config_tab) 113 | self.prompt_text_entry.place(relx=0.32, rely=0.40, relwidth=0.4, relheight=0.05) 114 | self.prompt_text_entry.insert(0, "选择命令并键入参考音频文本") 115 | 116 | # 保存配置按钮 117 | self.save_config_button = Button(self.config_tab, text='保存配置', command=self.save_config_try, style='TButton') 118 | self.save_config_button.place(relx=0.75, rely=0.05, relwidth=0.15, relheight=0.25) 119 | 120 | # 新增、删除角色按钮 121 | self.add_role_button = Button(self.config_tab, text='新增角色', command=self.add_role) 122 | self.add_role_button.place(relx=0.20, rely=0.20, relwidth=0.1, relheight=0.05) 123 | 124 | self.delete_role_button = Button(self.config_tab, text='删除角色', command=self.delete_role) 125 | self.delete_role_button.place(relx=0.32, rely=0.20, relwidth=0.1, relheight=0.05) 126 | 127 | # 新增、删除语音指令按钮 128 | self.add_voice_cmd_button = Button(self.config_tab, text='新增指令', command=self.add_voice_cmd) 129 | self.add_voice_cmd_button.place(relx=0.20, rely=0.50, relwidth=0.1, relheight=0.05) 130 | 131 | self.delete_voice_cmd_button = Button(self.config_tab, text='删除指令', command=self.delete_voice_cmd) 132 | self.delete_voice_cmd_button.place(relx=0.32, rely=0.50, relwidth=0.1, relheight=0.05) 133 | 134 | self.default_audio_label = Label(self.config_tab, text='默认参考音频:', style='TLabel') 135 | self.default_audio_label.place(relx=0.20, rely=0.65, relwidth=0.2, relheight=0.05) 136 | self.default_audio_entry = Entry(self.config_tab) 137 | self.default_audio_entry.place(relx=0.32, rely=0.65, relwidth=0.4, relheight=0.05) 138 | self.default_audio_entry.insert(0, self.default_prompt_audio) 139 | 140 | self.default_text_label = Label(self.config_tab, text='默认文本:', style='TLabel') 141 | self.default_text_label.place(relx=0.20, rely=0.7, relwidth=0.2, relheight=0.05) 142 | self.default_text_entry = Entry(self.config_tab) 143 | self.default_text_entry.place(relx=0.32, rely=0.7, relwidth=0.4, relheight=0.05) 144 | self.default_text_entry.insert(0, self.default_prompt_text) 145 | 146 | # API 基础 URL 147 | self.api_base_label = Label(self.config_tab, text='API 基础 URL:', style='TLabel') 148 | self.api_base_label.place(relx=0.20, rely=0.75, relwidth=0.2, relheight=0.05) 149 | self.api_base_entry = Entry(self.config_tab) 150 | self.api_base_entry.place(relx=0.32, rely=0.75, relwidth=0.4, relheight=0.05) 151 | self.api_base_entry.insert(0, self.API_BASE_URL['base']) 152 | 153 | self.deepL_api_label = Label(self.config_tab, text='DeepL API_KEY:', style='TLabel') 154 | self.deepL_api_label.place(relx=0.20, rely=0.80, relwidth=0.2, relheight=0.05) 155 | self.deepL_api_entry = Entry(self.config_tab) 156 | self.deepL_api_entry.place(relx=0.32, rely=0.80, relwidth=0.4, relheight=0.05) 157 | self.deepL_api_entry.insert(0, self.deepL_api_key) 158 | 159 | def save_config_try(self): 160 | 161 | self.default_prompt_audio = self.default_audio_entry.get() 162 | self.default_prompt_text = self.default_text_entry.get() 163 | self.api_base_url = {'base': self.api_base_entry.get()} 164 | self.deepL_api_key = self.deepL_api_entry.get() 165 | 166 | # 更新角色模型映射 167 | if self.last_selected_role: 168 | self.role_model_mapping[self.last_selected_role] = { 169 | 'gpt': self.gpt_entry.get(), 170 | 'sovits': self.sovits_entry.get() 171 | } 172 | # 更新语音指令映射 173 | if self.last_selected_cmd: 174 | self.voice_cmd_mapping[self.last_selected_cmd] = { 175 | 'ref_audio_path': self.ref_audio_entry.get(), 176 | 'prompt_text':self.prompt_text_entry.get() 177 | } 178 | 179 | self.save_config_gui(self.default_prompt_text, self.default_prompt_audio, self.api_base_url, self.role_model_mapping, self.voice_cmd_mapping, self.deepL_api_key) 180 | 181 | def add_role(self): 182 | new_role = simpledialog.askstring("新增角色", "请输入角色名:") 183 | if new_role and new_role not in self.role_model_mapping: 184 | self.role_model_mapping[new_role] = {"gpt": "", "sovits": ""} 185 | self.role_listbox.insert(END, new_role) 186 | 187 | def delete_role(self): 188 | selected_index = self.role_listbox.curselection() 189 | if selected_index: 190 | selected_role = self.role_listbox.get(selected_index) 191 | self.delete_role_gui(selected_role) 192 | self.role_listbox.delete(selected_index) 193 | self.gpt_entry.delete(0, END) 194 | self.sovits_entry.delete(0, END) 195 | 196 | def add_voice_cmd(self): 197 | new_cmd = simpledialog.askstring("新增指令", "请输入指令名:") 198 | if new_cmd and new_cmd not in self.voice_cmd_mapping: 199 | self.voice_cmd_mapping[new_cmd] = {"ref_audio_path": "", "prompt_text": ""} 200 | self.voice_cmd_listbox.insert(END, new_cmd) 201 | 202 | def delete_voice_cmd(self): 203 | selected_index = self.voice_cmd_listbox.curselection() 204 | if selected_index: 205 | selected_cmd = self.voice_cmd_listbox.get(selected_index) 206 | self.delete_voice_cmd_gui(selected_cmd) 207 | self.voice_cmd_listbox.delete(selected_index) 208 | self.ref_audio_entry.delete(0, END) 209 | self.prompt_text_entry.delete(0, END) 210 | 211 | def update_model_paths(self, event): 212 | selected_index = self.role_listbox.curselection() 213 | if selected_index: 214 | self.last_selected_role = self.role_listbox.get(selected_index) 215 | gpt = self.role_model_mapping[self.last_selected_role].get('gpt', '') 216 | sovits = self.role_model_mapping[self.last_selected_role].get('sovits', '') 217 | 218 | self.gpt_entry.delete(0, END) 219 | self.gpt_entry.insert(0, gpt) 220 | self.sovits_entry.delete(0, END) 221 | self.sovits_entry.insert(0, sovits) 222 | 223 | def update_voice_cmd_params(self, event): 224 | selected_index = self.voice_cmd_listbox.curselection() 225 | if selected_index: 226 | self.last_selected_cmd = self.voice_cmd_listbox.get(selected_index) 227 | ref_audio_path = self.voice_cmd_mapping[self.last_selected_cmd].get('ref_audio_path', '') 228 | prompt_text = self.voice_cmd_mapping[self.last_selected_cmd].get('prompt_text', '') 229 | 230 | self.ref_audio_entry.delete(0, END) 231 | self.ref_audio_entry.insert(0, ref_audio_path) 232 | self.prompt_text_entry.delete(0, END) 233 | self.prompt_text_entry.insert(0, prompt_text) 234 | 235 | def createMainWidgets(self): 236 | self.Text = Text(self.main_tab, font=('宋体', 12)) 237 | self.Text.place(relx=0.066, rely=0.07, relwidth=0.869, relheight=0.563) 238 | 239 | self.saveAddr = Entry(self.main_tab, font=('宋体', 12)) 240 | self.saveAddr.place(relx=0.355, rely=0.84, relwidth=0.409, relheight=0.052) 241 | 242 | self.ComboList = ['源文件目录', '自定义目录'] 243 | self.Combo = Combobox(self.main_tab, values=self.ComboList, font=('宋体', 12), state='readonly') 244 | self.Combo.place(relx=0.184, rely=0.84, relwidth=0.146, relheight=0.058) 245 | self.Combo.set(self.ComboList[0]) 246 | self.Combo.bind('<>', self.comboEvent) 247 | 248 | self.style.configure('InputButton.TButton', font=('宋体', 12)) 249 | self.InputButton = Button(self.main_tab, text='浏览', command=self.InputButton_Cmd, style='InputButton.TButton') 250 | self.InputButton.place(relx=0.184, rely=0.7, relwidth=0.133, relheight=0.073) 251 | 252 | self.Haruhi_gif = PhotoImage(data=base64.b64decode(haruhi_gif_data)) 253 | self.style.configure('ConvertButton.TButton', font=('宋体', 12)) 254 | self.ConvertButton = Button(self.main_tab, image=self.Haruhi_gif, command=self.ConvertButton_Cmd, 255 | style='ConvertButton.TButton') 256 | self.ConvertButton.place(relx=0.788, rely=0.7, relwidth=0.146, relheight=0.236) 257 | 258 | self.style.configure('SynthesizeButton.TButton', font=('宋体', 12)) 259 | self.SynthesizeButton = Button(self.main_tab, text='按源语言合成音频', command=self.synthesize_audio, style='SynthesizeButton.TButton') 260 | self.SynthesizeButton.place(relx=0.35, rely=0.7, relwidth=0.180, relheight=0.073) 261 | 262 | self.style.configure('SynthesizeJapaneseButton.TButton', font=('宋体', 12)) 263 | self.SynthesizeJapaneseButton = Button(self.main_tab, text='按中译日合成音频', command=self.synthesize_japanese_audio, style='SynthesizeJapaneseButton.TButton') 264 | self.SynthesizeJapaneseButton.place(relx=0.55, rely=0.7, relwidth=0.180, relheight=0.073) 265 | 266 | self.style.configure('OutputLabel.TLabel', anchor='w', font=('宋体', 12)) 267 | self.OutputLabel = Label(self.main_tab, text='保存目录:', style='OutputLabel.TLabel') 268 | self.OutputLabel.place(relx=0.066, rely=0.84, relwidth=0.107, relheight=0.05) 269 | 270 | self.style.configure('InputLabel.TLabel', anchor='w', font=('宋体', 12)) 271 | self.InputLabel = Label(self.main_tab, text='输入设置:', style='InputLabel.TLabel') 272 | self.InputLabel.place(relx=0.066, rely=0.723, relwidth=0.107, relheight=0.05) 273 | 274 | menubar = Menu(self.top) 275 | filemenu = Menu(menubar, tearoff=0) # tearoff意为下拉 276 | menubar.add_cascade(label='帮助', menu=filemenu) 277 | filemenu.add_command(label='视频教程', command=self.open_help_url) 278 | filemenu.add_command(label='检查更新', command=self.check_for_update) 279 | 280 | self.top.config(menu=menubar) 281 | 282 | 283 | 284 | class Application(Application_ui): 285 | # 这个类实现具体的事件处理回调函数。界面生成代码在Application_ui中。 286 | 287 | def __init__(self, master=None): 288 | Application_ui.__init__(self, master) 289 | 290 | def convert(self, output_dir, res, role_name_mapping, role_side_character_mapping): 291 | try: 292 | RpyFileWriter.write_file(output_dir, res, role_name_mapping, role_side_character_mapping) 293 | except FileNotFoundError: 294 | raise SaveFileException("保存目录不存在") 295 | 296 | def checkEqual(self, iterator): 297 | iterator = iter(iterator) 298 | try: 299 | first = next(iterator) 300 | except StopIteration: 301 | return False 302 | return all(first == rest for rest in iterator) 303 | 304 | def getFileName(self, path): 305 | return path.split('/')[-1].split('.')[0] 306 | 307 | def getTlist(self): 308 | Tlist = self.Text.get('1.0', 'end').split('\n') 309 | Tlist = [value.strip() for value in Tlist] 310 | Tlist = [value for value in Tlist if value] 311 | return Tlist 312 | 313 | def getOriPath(self): 314 | paths = list() 315 | for path in self.getTlist(): 316 | paths.append('/'.join(path.split('/')[0:-1])) 317 | if self.checkEqual(paths): 318 | return paths[0] 319 | else: 320 | showerror("获取错误", "未设置输入或源文件不在同一目录下!") 321 | return '' 322 | 323 | def comboEvent(self, *arg): 324 | if self.Combo.get() == '源文件目录': 325 | if self.saveAddr.get(): 326 | self.saveAddr.delete('0', 'end') 327 | self.saveAddr.insert('0', self.getOriPath()) 328 | elif self.Combo.get() == '自定义目录': 329 | file_path = filedialog.askdirectory(title=u'保存文件到文件夹') 330 | if self.saveAddr.get(): 331 | self.saveAddr.delete('0', 'end') 332 | self.saveAddr.insert('0', file_path) 333 | 334 | def InputButton_Cmd(self, event=None): 335 | file_paths = filedialog.askopenfilenames(title=u'选择文件', 336 | filetypes=[("Excel-2007 file", "*.xlsx"), ("Excel-2003 file", "*.xls"), 337 | ("all", "*.*")]) 338 | for line in file_paths: 339 | self.Text.insert(END, line + '\n') 340 | self.comboEvent() 341 | 342 | def ConvertButton_Cmd(self, event=None): 343 | success_flag = True 344 | for path in self.getTlist(): 345 | try: 346 | parser = Parser(path) 347 | conveter = Converter(parser) 348 | convert_results = conveter.generate_rpy_elements() 349 | 350 | print(conveter.side_characters) 351 | for res in convert_results: 352 | self.convert(self.saveAddr.get(), res, conveter.role_name_mapping, conveter.side_characters) 353 | except ConvertException as err: 354 | success_flag = False 355 | showerror("转换错误", err.msg) 356 | if success_flag: 357 | showinfo("转换成功", "转换完成") 358 | self.saveAddr.delete('0', 'end') 359 | self.Text.delete('0.0', 'end') 360 | 361 | def synthesize_audio(self, event=None): 362 | success_flag = True 363 | for path in self.getTlist(): 364 | try: 365 | parser = Parser(path) 366 | conveter = Converter(parser) 367 | convert_results = conveter.generate_rpy_elements() 368 | tts = TTS(conveter) 369 | parsed_sheets_tts = tts.filter_parsed_sheets_tts() 370 | tts.synthesize_voice(parsed_sheets_tts,'auto') 371 | except VoiceException as err: 372 | success_flag = False 373 | showerror("合成错误", err.msg) 374 | if success_flag: 375 | showinfo("合成成功", "合成完成") 376 | self.saveAddr.delete('0', 'end') 377 | self.Text.delete('0.0', 'end') 378 | 379 | def synthesize_japanese_audio(self, event=None): 380 | success_flag = True 381 | for path in self.getTlist(): 382 | try: 383 | parser = Parser(path) 384 | conveter = Converter(parser) 385 | convert_results = conveter.generate_rpy_elements() 386 | tts = TTS(conveter) 387 | parsed_sheets_tts = tts.filter_parsed_sheets_tts() 388 | tts.synthesize_voice(parsed_sheets_tts,'JA') 389 | except VoiceException as err: 390 | success_flag = False 391 | showerror("合成错误", err.msg) 392 | if success_flag: 393 | showinfo("合成成功", "合成完成") 394 | self.saveAddr.delete('0', 'end') 395 | self.Text.delete('0.0', 'end') 396 | 397 | def open_url(self, url): 398 | webbrowser.open(url, new=0) 399 | 400 | def open_help_url(self, event=None): 401 | self.open_url("https://www.bilibili.com/video/BV1gZ4y1K7Y9") 402 | 403 | def check_for_update(self, event=None): 404 | try: 405 | resp = requests.get("https://api.github.com/repos/HaruhiFanClub/Excel2RpyScript/releases/latest", timeout=2).json() 406 | except Exception as ex: 407 | self.Text.insert(END, "检查更新失败:{}\n请直接到https://github.com/HaruhiFanClub/Excel2RpyScript/releases查看最新版本\n") 408 | showinfo("网络连接失败", "\n检查新版本信息失败!\n".format(ex)) 409 | return 410 | if resp['tag_name'] == CURRENT_VERSION: 411 | showinfo("检测成功", "当前已经是最新版本!") 412 | else: 413 | confirm_download = self.showConfirmModal("检查到新版本", "当前版本:{0} 最新版本:{1}, 是否前往{2}下载?" 414 | .format(CURRENT_VERSION, resp['tag_name'], resp['html_url'])) 415 | if confirm_download: 416 | self.open_url(resp['html_url']) 417 | 418 | def showConfirmModal(self, title, message): 419 | return messagebox.askokcancel(title, message) 420 | 421 | 422 | if __name__ == "__main__": 423 | top = Tk() 424 | top.iconphoto(False, PhotoImage(data=base64.b64decode(haruhi_gif_data))) 425 | Application(top).mainloop() 426 | try: 427 | top.destroy() 428 | except: 429 | pass 430 | -------------------------------------------------------------------------------- /asset/Haruhi.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HaruhiFanClub/Excel2RpyScript/262c8b64cb9a2a929d9d798cc6ca17dbd02236a5/asset/Haruhi.gif -------------------------------------------------------------------------------- /asset/background.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HaruhiFanClub/Excel2RpyScript/262c8b64cb9a2a929d9d798cc6ca17dbd02236a5/asset/background.gif -------------------------------------------------------------------------------- /asset/sos.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HaruhiFanClub/Excel2RpyScript/262c8b64cb9a2a929d9d798cc6ca17dbd02236a5/asset/sos.ico -------------------------------------------------------------------------------- /const/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | CURRENT_VERSION = "v0.2.4" 3 | -------------------------------------------------------------------------------- /const/converter_setting.py: -------------------------------------------------------------------------------- 1 | # RPY元素与sheet中每列的对应关系 2 | from model.element import Text, Image, Transition, Audio 3 | 4 | ElementColNumMapping = { 5 | 'role_name': 0, 6 | 'text': 1, 7 | 'character': 18, 8 | 'background': 19, 9 | 'transition': 20, 10 | 'music': 21, 11 | 'voice': 22, 12 | 'voice_cmd':23, 13 | 'mode': 24, 14 | 'change_page': 25, 15 | 'sound': 26, 16 | 'side_character': 27, 17 | 'menu': 28, 18 | 'remark': 29, 19 | } 20 | 21 | # 元素映射 22 | ElementMapping = { 23 | "文本": Text, 24 | "立绘": Image, 25 | "背景": Image, 26 | "转场": Transition, 27 | "音效": Audio, 28 | } 29 | 30 | # 位置映射 31 | PositionMapping = { 32 | "left": "left", 33 | "right": "right", 34 | "mid": "center", 35 | "truecenter": "truecenter", 36 | } 37 | 38 | # 图片指令 39 | ImageCmdMapping = { 40 | "hide": "hide", 41 | } 42 | 43 | # 转场指令 44 | TransitionMapping = { 45 | "溶解": "dissolve", 46 | "褪色": "fade", 47 | "闪白": "Fade(0.1,0.0,0.5,color=\"#FFFFFF\")", 48 | "像素化": "pixellate", 49 | "横向振动": "hpunch", 50 | "纵向振动": "vpunch", 51 | "百叶窗": "blinds", 52 | "网格覆盖": "squares", 53 | "擦除": "wipeleft", 54 | "滑入": "slideleft", 55 | "滑出": "slideawayleft", 56 | "推出": "pushright", 57 | } 58 | 59 | # 音效指令 60 | SoundCmdMapping = { 61 | "循环": "loop" 62 | } 63 | 64 | ReplaceCharacterMapping = { 65 | "%": "\\%", # % --> \% 66 | "\"": "\\\"", # " -> \" 67 | "\'": "\\\'", # ' -> \' 68 | "{": "{{", # { -> {{ 69 | "[": "[[", # [ -> [[ 70 | } 71 | -------------------------------------------------------------------------------- /const/parser_setting.py: -------------------------------------------------------------------------------- 1 | 2 | # excel开始解析行数 3 | EXCEL_PARSE_START_ROW = 7 4 | 5 | # excel解析列数 6 | EXCEL_PARSE_START_COL = 31 7 | -------------------------------------------------------------------------------- /const/render_setting.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HaruhiFanClub/Excel2RpyScript/262c8b64cb9a2a929d9d798cc6ca17dbd02236a5/const/render_setting.py -------------------------------------------------------------------------------- /const/tts_setting.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | 4 | class TTSConfig: 5 | def __init__(self, config_file='config.json'): 6 | self.config_file = config_file 7 | self.role_model_mapping = { 8 | "长门有希": { 9 | "gpt": "GPT_weights_v2/nagato_yuki-e15.ckpt", 10 | "sovits": "SoVITS_weights_v2/nagato_yuki_e15_s2160.pth" 11 | }, 12 | "your_first_character": { 13 | "gpt": "角色名应与你在表格中填写的角色名相同,熟悉后请新建角色使用", 14 | "sovits": "如果你在本地运行API,请填写本地模型位置,否则请咨询在线服务的提供者" 15 | }, 16 | # 添加更多角色... 17 | } 18 | self.voice_cmd_mapping = { 19 | "voice_cmd_1": { 20 | "ref_audio_path": "仅当你使用表格中的语音指令列时,才需要用到此项", 21 | "prompt_text": "否则仅需配置默认参考音频及文本便可" 22 | }, 23 | "voice_cmd_2": { 24 | "ref_audio_path": "这一额外参数可帮助你针对不同情况使用不同的参考音频与文本", 25 | "prompt_text": "熟悉后请新建指令使用,选择你需要的命名方式" 26 | }, 27 | # 添加更多映射... 28 | } 29 | self.default_prompt_audio = "./predef_ref/正常有希/01_有希_平静.wav" 30 | self.default_prompt_text = "私が再び異常動作を起こさないという確証はない。" 31 | self.api_base_url = {'base': 'http://127.0.0.1:9880/'} 32 | self.deepL_api_key = "YOUR_DEEPL_API_KEY" 33 | 34 | if os.path.exists(self.config_file): 35 | self.load_config() 36 | else: 37 | self.save_config() # 创建配置文件并保存默认内容 38 | 39 | def load_config(self): 40 | with open(self.config_file, 'r', encoding='utf-8') as f: 41 | config = json.load(f) 42 | self.role_model_mapping = config['role_model_mapping'] 43 | self.voice_cmd_mapping = config['voice_cmd_mapping'] 44 | self.default_prompt_audio = config['default_prompt_audio'] 45 | self.default_prompt_text = config['default_prompt_text'] 46 | self.api_base_url = config['API_BASE_URL'] 47 | self.deepL_api_key = config['deepL_api_key'] 48 | 49 | def save_config(self): 50 | config = { 51 | 'role_model_mapping': self.role_model_mapping, 52 | 'voice_cmd_mapping': self.voice_cmd_mapping, 53 | 'default_prompt_audio': self.default_prompt_audio, 54 | 'default_prompt_text': self.default_prompt_text, 55 | 'API_BASE_URL': self.api_base_url, 56 | 'deepL_api_key': self.deepL_api_key 57 | } 58 | with open(self.config_file, 'w', encoding='utf-8') as f: 59 | json.dump(config, f, indent=4, ensure_ascii=False) 60 | 61 | def save_config_gui(self, default_prompt_text, default_prompt_audio, api_base_url, role_model_mapping, voice_cmd_mapping, deepL_api_key): 62 | config = { 63 | 'role_model_mapping': role_model_mapping, 64 | 'voice_cmd_mapping': voice_cmd_mapping, 65 | 'default_prompt_audio': default_prompt_audio, 66 | 'default_prompt_text': default_prompt_text, 67 | 'API_BASE_URL': api_base_url, 68 | 'deepL_api_key': deepL_api_key 69 | } 70 | with open(self.config_file, 'w', encoding='utf-8') as f: 71 | json.dump(config, f, indent=4, ensure_ascii=False) 72 | 73 | def delete_role(self, role_name): 74 | if role_name in self.role_model_mapping: 75 | del self.role_model_mapping[role_name] 76 | self.save_config() # 保存更改后的配置 77 | 78 | def delete_voice_cmd(self, cmd_name): 79 | if cmd_name in self.voice_cmd_mapping: 80 | del self.voice_cmd_mapping[cmd_name] 81 | self.save_config() # 保存更改后的配置 -------------------------------------------------------------------------------- /corelib/__init__.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 -------------------------------------------------------------------------------- /corelib/exception.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | """ 3 | 一些自定义的异常,方便排查问题 4 | """ 5 | 6 | 7 | class ParseFileException(Exception): 8 | """ 9 | 解析文件出现问题,读取Excel时出现 10 | """ 11 | 12 | def __init__(self, msg): 13 | super(ParseFileException, self).__init__(msg) 14 | self.msg = msg 15 | 16 | 17 | class RenderException(Exception): 18 | """ 19 | 渲染Rpy对象时出现的异常 20 | """ 21 | 22 | def __init__(self, msg): 23 | super(RenderException, self).__init__(msg) 24 | self.msg = msg 25 | 26 | 27 | class ConvertException(Exception): 28 | 29 | def __init__(self, msg): 30 | super(ConvertException, self).__init__(msg) 31 | self.msg = msg 32 | 33 | 34 | class SaveFileException(Exception): 35 | 36 | def __init__(self, msg): 37 | super(SaveFileException, self).__init__(msg) 38 | self.msg = msg 39 | 40 | class VoiceException(Exception): 41 | def __init__(self, msg): 42 | super(VoiceException, self).__init__(msg) 43 | self.msg = msg -------------------------------------------------------------------------------- /dist/Excel2RpyScript 0.3.1.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HaruhiFanClub/Excel2RpyScript/262c8b64cb9a2a929d9d798cc6ca17dbd02236a5/dist/Excel2RpyScript 0.3.1.exe -------------------------------------------------------------------------------- /dist/凉宫春日AVG开发套装v1.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HaruhiFanClub/Excel2RpyScript/262c8b64cb9a2a929d9d798cc6ca17dbd02236a5/dist/凉宫春日AVG开发套装v1.0.zip -------------------------------------------------------------------------------- /handler/__init__.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | -------------------------------------------------------------------------------- /handler/converter.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | """ 4 | 将Excel中的数据转化为rpy中的对象 5 | """ 6 | from collections import namedtuple 7 | 8 | from const.converter_setting import ElementColNumMapping, PositionMapping, ImageCmdMapping, TransitionMapping, \ 9 | ReplaceCharacterMapping 10 | from model.element import Text, Image, Transition, Audio, Role, Command, Voice, Menu 11 | 12 | SheetConvertResult = namedtuple('SheetConvertResult', ['label', 'data']) 13 | 14 | RowConvertResult = namedtuple('RowConvertResult', 15 | ['role', # 角色 16 | 'mode', # 模式 17 | 'text', # 文本 18 | 'music', # 音乐 19 | 'character', # 立绘 20 | 'change_page', # 换页 21 | 'background', # 背景 22 | 'remark', # 备注 23 | 'sound', # 音效 24 | 'transition', # 转场 25 | 'voice', # 语音 26 | 'menu', # 条件跳转 27 | 'side_character' # 头像 28 | ]) 29 | 30 | 31 | class Converter(object): 32 | 33 | def __init__(self, parser): 34 | self.parser = parser 35 | self.roles = list() 36 | self.role_name_mapping = dict() 37 | self.current_mode = 'nvl' 38 | self.current_role = Role("narrator_nvl", "None") 39 | self.characters = list() 40 | self.side_characters = dict() 41 | 42 | def add_role(self, name): 43 | role = self.role_name_mapping.get(name) 44 | if not role: 45 | role = Role("role{}".format(len(self.role_name_mapping.keys()) + 1), name) 46 | self.role_name_mapping[name] = role 47 | return role 48 | 49 | #创建一个元组,存有工作表标签及对应工作表下的多行转换后数据 50 | def generate_rpy_elements(self): 51 | result = [] 52 | parsed_sheets = self.parser.get_parsed_sheets() 53 | for idx, parsed_sheet in enumerate(parsed_sheets): 54 | if idx == 0: 55 | label = 'start' 56 | else: 57 | label = parsed_sheet.name 58 | result.append(SheetConvertResult(label=label, data=self.parse_by_sheet(parsed_sheet.row_values, idx))) 59 | return result 60 | 61 | @classmethod 62 | def generate_character(cls, img_str): 63 | last_word = img_str.split(" ")[-1] 64 | position = PositionMapping.get(last_word) 65 | if position: 66 | return Image(img_str.replace(last_word, "").strip(), "show", position) 67 | else: 68 | return Image(img_str.replace(last_word, "").strip(), ImageCmdMapping.get(last_word, "hide")) 69 | 70 | #循环调用parse_by_row_value方法,返回拼接多行转换后信息的列表 71 | def parse_by_sheet(self, values, sheet_index): 72 | result = [] 73 | current_role_name = None # 用于跟踪最近的有效 role_name 74 | for row_index, row_value in enumerate(values): 75 | role_name = row_value[ElementColNumMapping.get('role_name')] 76 | if role_name.strip(): 77 | current_role_name = role_name # 更新最近的有效 role_name 78 | else: 79 | role_name = current_role_name # 如果当前 role_name 为空,使用最近的有效值 80 | result.append(self.parse_by_row_value(row_value, role_name, sheet_index, row_index)) 81 | return result 82 | 83 | #调用RowConverter的convert方法,返回存有单行转换后信息的元组 84 | def parse_by_row_value(self, row, role_name, sheet_index, row_index): 85 | row_converter = RowConverter(row, self, role_name, sheet_index, row_index) 86 | return row_converter.convert() 87 | 88 | 89 | class RowConverter(object): 90 | 91 | def __init__(self, row, converter, role_name, sheet_index, row_index): 92 | self.row = row 93 | self.converter = converter 94 | self.role_name = role_name 95 | self.row_index = row_index 96 | self.sheet_index = sheet_index 97 | 98 | #该方法返回存有单行转换后信息的元组 99 | def convert(self): 100 | return RowConvertResult( 101 | mode=self._converter_mode(), 102 | role=self._converter_role(), 103 | text=self._converter_text(), 104 | music=self._converter_music(), 105 | character=self._converter_character(), 106 | change_page=self._converter_change_page(), 107 | background=self._converter_background(), 108 | remark=self._converter_remark(), 109 | sound=self._converter_sound(), 110 | transition=self._converter_transition(), 111 | voice=self._converter_voice(), 112 | menu=self._converter_menu(), 113 | side_character=self._converter_side_character(), 114 | ) 115 | 116 | def _converter_mode(self): 117 | # 模式 118 | mode = self.row[ElementColNumMapping.get('mode')] 119 | if mode: 120 | self.converter.current_mode = mode 121 | return mode 122 | 123 | def _converter_role(self): 124 | # 角色 125 | role_name = self.row[ElementColNumMapping.get('role_name')] 126 | if role_name and role_name != "旁白": 127 | # 当新的角色名出现时,切换到该角色 128 | self.converter.current_role = self.converter.add_role(role_name) 129 | #self.converter.current_mode = "nvl" # 可选:根据需要设置当前模式 130 | elif role_name == "": 131 | # 空角色名时,保持当前角色不变 132 | return self.converter.current_role 133 | else: 134 | # 处理旁白角色或其他情况 135 | self.converter.current_role = Role("narrator_{}".format(self.converter.current_mode), "None") 136 | 137 | return self.converter.current_role 138 | 139 | def _converter_text(self): 140 | # 文本 141 | text = str(self.row[ElementColNumMapping.get('text')]).replace("\n", "\\n") 142 | if not text: 143 | return None 144 | replace_index_char = [] 145 | for idx, t in enumerate(text): 146 | if ReplaceCharacterMapping.get(t): 147 | replace_index_char.append((idx, t)) 148 | 149 | if replace_index_char: 150 | new_text_list = list(text) 151 | for idx, char in replace_index_char: 152 | new_text_list[idx] = ReplaceCharacterMapping.get(char) 153 | text = ''.join(new_text_list) 154 | return Text(text, self.converter.current_role) 155 | 156 | def _converter_music(self): 157 | # 音乐 158 | music = self.row[ElementColNumMapping.get('music')] 159 | if not music: 160 | return None 161 | cmd = "stop" if music == "none" else "play" 162 | return Audio(music, cmd) 163 | 164 | def _converter_background(self): 165 | # 背景 166 | background = self.row[ElementColNumMapping.get('background')] 167 | if not background: 168 | return None 169 | return Image(background, "scene") 170 | 171 | def _converter_character(self): 172 | # 立绘 173 | character_str = str(self.row[ElementColNumMapping.get('character')]).strip() 174 | if not character_str: 175 | return [] 176 | characters = [] 177 | # 新立绘出现时回收旧立绘 178 | for character in self.converter.characters: 179 | characters.append(Image(character.name, 'hide')) 180 | new_characters = [Converter.generate_character(ch) for ch in character_str.split(";")] 181 | self.converter.characters = new_characters 182 | characters.extend(new_characters) 183 | return characters 184 | 185 | def _converter_remark(self): 186 | pass 187 | 188 | def _converter_sound(self): 189 | # 音效 190 | sound = self.row[ElementColNumMapping.get('sound')] 191 | if not sound: 192 | return None 193 | if sound.startswith('循环'): 194 | return Audio(sound.replace('循环', ''), 'loop') 195 | else: 196 | cmd = "stop" if sound == "stop" else "sound" 197 | return Audio(sound, cmd) 198 | 199 | def _converter_transition(self): 200 | # 转场 201 | transition = self.row[ElementColNumMapping.get('transition')] 202 | if not transition: 203 | return None 204 | t_style = TransitionMapping.get(transition, "") 205 | return Transition(t_style) 206 | 207 | def _converter_change_page(self): 208 | # 换页 209 | change_page = self.row[ElementColNumMapping.get('change_page')] 210 | if not change_page: 211 | return None 212 | return Command("nvl clear") 213 | 214 | def _converter_voice(self): 215 | voice_str = str(self.row[ElementColNumMapping.get('voice')]).strip() 216 | if not voice_str: 217 | return None 218 | 219 | # 检查是否包含 "tts" 220 | if voice_str.lower().strip() == "tts": 221 | return Voice(f"{self.role_name}_sheet{self.sheet_index+1}_row{self.row_index+8}_synthesized.wav") 222 | 223 | if voice_str.split(" ")[-1] == "sustain": 224 | voice_name = voice_str.split(" ")[0] 225 | return Voice(voice_name, sustain=True) 226 | else: 227 | return Voice(voice_str) 228 | 229 | def _converter_menu(self): 230 | # 分支条件的label写在对话文本列 231 | menu = self.row[ElementColNumMapping.get('menu')] 232 | if not menu: 233 | return None 234 | text = str(self.row[ElementColNumMapping.get('text')]).replace("\n", "\\n") 235 | if not text: 236 | return None 237 | replace_index_char = [] 238 | for idx, t in enumerate(text): 239 | if ReplaceCharacterMapping.get(t): 240 | replace_index_char.append((idx, t)) 241 | 242 | if replace_index_char: 243 | new_text_list = list(text) 244 | for idx, char in replace_index_char: 245 | new_text_list[idx] = ReplaceCharacterMapping.get(char) 246 | text = ''.join(new_text_list) 247 | return Menu(label=text, target=menu) 248 | 249 | def _converter_side_character(self): 250 | # 对话框头像 251 | character_str = str(self.row[ElementColNumMapping.get('side_character')]).strip() 252 | if not character_str: 253 | return None 254 | self.converter.side_characters[self.converter.current_role.pronoun] = character_str 255 | return None 256 | 257 | def _converter_voice_cmd(self): 258 | pass -------------------------------------------------------------------------------- /handler/parser.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | from collections import namedtuple 4 | 5 | from const.parser_setting import EXCEL_PARSE_START_ROW, EXCEL_PARSE_START_COL 6 | from corelib.exception import ParseFileException 7 | from tools.excel import read_excel 8 | 9 | # 解析结果(sheet粒度),包含sheet和数据 10 | SheetParseResult = namedtuple('ParseResult', ['name', 'row_values']) 11 | 12 | 13 | class Parser(object): 14 | """ 15 | Excel解析器 16 | """ 17 | 18 | def __init__(self, file_path): 19 | self.file_path = file_path 20 | 21 | def get_excel_wb(self): 22 | """ 23 | 解析文件 24 | :return RpyElement列表 25 | """ 26 | try: 27 | wb = read_excel(self.file_path) 28 | except ParseFileException as err: 29 | raise err 30 | return wb 31 | 32 | def get_parsed_sheets(self): 33 | """ 34 | 解析文件 35 | :return RpyElement列表 36 | """ 37 | wb = self.get_excel_wb() 38 | result = [] 39 | for sheet in wb.sheets(): 40 | result.append(SheetParseResult(name=sheet.name, row_values=self.parse_sheet(sheet))) 41 | return result 42 | 43 | def parse_sheet(self, sheet): 44 | result = [] 45 | for i in range(EXCEL_PARSE_START_ROW, sheet.nrows): 46 | data = [r.value for r in sheet.row(i)] 47 | if not any(data): 48 | continue 49 | if len(data) < EXCEL_PARSE_START_COL: 50 | # 补全数据 51 | data.extend(["" for i in range(EXCEL_PARSE_START_COL - len(data))]) 52 | assert len(data) == EXCEL_PARSE_START_COL 53 | result.append(data) 54 | return result 55 | -------------------------------------------------------------------------------- /handler/tts.py: -------------------------------------------------------------------------------- 1 | from collections import namedtuple 2 | 3 | from const.converter_setting import ElementColNumMapping, PositionMapping, ImageCmdMapping, TransitionMapping, \ 4 | ReplaceCharacterMapping 5 | 6 | from const.tts_setting import TTSConfig 7 | 8 | import requests, os 9 | 10 | class TTS(object): 11 | def __init__(self,conveter): 12 | self.conveter = conveter 13 | self.parser = conveter.parser 14 | self.last_role_name = None 15 | tts_config = TTSConfig() 16 | self.role_model_mapping = tts_config.role_model_mapping 17 | self.API_BASE_URL = tts_config.api_base_url 18 | self.voice_cmd_mapping = tts_config.voice_cmd_mapping 19 | self.default_prompt_text = tts_config.default_prompt_text 20 | self.default_prompt_audio = tts_config.default_prompt_audio 21 | self.deepL_api_key = tts_config.deepL_api_key 22 | 23 | 24 | 25 | def filter_parsed_sheets_tts(self): 26 | parsed_sheets = self.parser.get_parsed_sheets() 27 | parsed_sheets_tts = [] 28 | 29 | current_role_name = None # 用于跟踪最近的有效 role_name 30 | 31 | for parsed_sheet in parsed_sheets: 32 | filtered_rows = [] 33 | for original_row_index, row in enumerate(parsed_sheet.row_values): 34 | # 检查当前行的 role_name 35 | role_name = row[ElementColNumMapping.get('role_name')] 36 | if role_name.strip(): 37 | current_role_name = role_name # 更新最近的有效 role_name 38 | else: 39 | role_name = current_role_name # 如果当前 role_name 为空,使用最近的有效值 40 | 41 | if row[ElementColNumMapping.get('voice')].strip().lower() == 'tts': 42 | # 只保留 role_name, text, 和 voice_cmd 列 43 | filtered_row = { 44 | 'role_name': role_name, 45 | 'text': row[ElementColNumMapping.get('text')], 46 | 'voice_cmd': row[ElementColNumMapping.get('voice_cmd')], 47 | 'original_row_index': original_row_index 48 | } 49 | filtered_rows.append(filtered_row) 50 | 51 | filtered_rows.sort(key=lambda x: x['role_name']) 52 | 53 | if filtered_rows: 54 | parsed_sheets_tts.append({ 55 | 'name': parsed_sheet.name, 56 | 'rows': filtered_rows 57 | }) 58 | 59 | return parsed_sheets_tts 60 | 61 | 62 | def switch_models(self, role_name): 63 | 64 | # 切换到对应的GPT和SoVITS模型 65 | 66 | if role_name == self.last_role_name: 67 | return # 如果角色名相同,则无需切换 68 | 69 | models = self.role_model_mapping.get(role_name) 70 | 71 | if models: 72 | gpt_model = models['gpt'] 73 | sovits_model = models['sovits'] 74 | 75 | # 切换到对应的GPT模型 76 | requests.get(f"{self.API_BASE_URL['base']}set_gpt_weights?weights_path={gpt_model}") 77 | 78 | # 切换到对应的SoVITS模型 79 | requests.get(f"{self.API_BASE_URL['base']}set_sovits_weights?weights_path={sovits_model}") 80 | 81 | self.last_role_name = role_name # 更新上一个角色名 82 | else: 83 | print(f"No model found for role: {role_name}") 84 | 85 | def translate_text(self, text, target_lang): 86 | # DeepL API翻译方法 87 | api_url = "https://api-free.deepl.com/v2/translate" 88 | params = { 89 | "auth_key": self.deepL_api_key, # 替换为你的API密钥 90 | "text": text, 91 | "target_lang": target_lang, 92 | } 93 | response = requests.post(api_url, data=params) 94 | if response.status_code == 200: 95 | return response.json()['translations'][0]['text'] 96 | else: 97 | print(f"Translation error: {response.json()}") 98 | return text # 返回原文本以防止错误中断 99 | 100 | 101 | def synthesize_voice(self,voice_tts_sheets,language): 102 | for sheet_index, sheet in enumerate(voice_tts_sheets): 103 | for row_index, row in enumerate(sheet['rows']): 104 | role_name = row['role_name'] # 获取角色名 105 | text = row['text'] # 获取文本 106 | voice_cmd = row['voice_cmd'] # 获取语音指令 107 | original_row_index = row['original_row_index'] 108 | 109 | # 获取对应的 ref_audio_path 和 prompt_text 110 | audio_params = self.voice_cmd_mapping.get(voice_cmd, {}) 111 | ref_audio_path = audio_params.get("ref_audio_path", f"{self.default_prompt_audio}") # 默认值 112 | prompt_text = audio_params.get("prompt_text", f"{self.default_prompt_text}") # 默认值 113 | 114 | # 使用DeepL翻译中文文本为日文 115 | if language == 'JA': 116 | text = self.translate_text(text, target_lang='JA') 117 | 118 | self.switch_models(role_name) 119 | 120 | # 发送合成请求 121 | response = requests.post( 122 | f"{self.API_BASE_URL['base']}tts", 123 | json={ 124 | "text": text, 125 | "text_lang": "auto", 126 | "ref_audio_path": ref_audio_path, # 参考音频路径 127 | "prompt_text": prompt_text, # 参考音频文本 128 | "prompt_lang": "auto", 129 | "text_split_method": "cut0", # 可选的文本分割方法 130 | "batch_size": 1, # 每次请求一行 131 | } 132 | ) 133 | # 确保audio文件夹存在 134 | audio_folder = "audio" 135 | os.makedirs(audio_folder, exist_ok=True) 136 | # 处理响应 137 | if response.status_code == 200: 138 | # 处理成功的音频流 139 | audio_stream = response.content 140 | audio_file_path = os.path.join(audio_folder, f"{role_name}_sheet{sheet_index+1}_row{original_row_index+8}_synthesized.wav") 141 | with open(audio_file_path, "wb") as f: 142 | f.write(audio_stream) 143 | else: 144 | print(f"Error for {role_name}: {response.json()}") 145 | 146 | -------------------------------------------------------------------------------- /handler/writer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | MENU_TEMPLATE = " \"{label}\":\n jump {target}\n" 4 | SIDE_CHARACTER_TEMPLATE = "image side {role_name} = \"{path}\"\n" 5 | 6 | 7 | class RpyFileWriter(object): 8 | 9 | @classmethod 10 | def write_file(cls, output_dir, res, role_name_mapping, role_side_character_mapping): 11 | output_path = output_dir + "/" + res.label + '.rpy' 12 | with open(output_path, 'w', encoding='utf-8') as f: 13 | for k, v in role_name_mapping.items(): 14 | f.write(v.render() + "\n") 15 | f.write("define narrator_nvl = Character(None, kind=nvl)\n") 16 | f.write("define narrator_adv = Character(None, kind=adv)\n") 17 | f.write("define config.voice_filename_format = \"audio/{filename}\"\n") 18 | for k, v in role_side_character_mapping.items(): 19 | f.write(SIDE_CHARACTER_TEMPLATE.format(role_name=k, path=v)) 20 | f.write("\nlabel {}:\n".format(res.label)) 21 | last_voice = None 22 | current_menus = [] 23 | for rpy_element in res.data: 24 | if rpy_element.menu: 25 | current_menus.append(rpy_element.menu) 26 | continue 27 | if current_menus: 28 | f.write("menu:\n" + "\n".join( 29 | [MENU_TEMPLATE.format(label=m.label, target=m.target) for m in current_menus])) 30 | current_menus.clear() 31 | continue 32 | if rpy_element.music: 33 | f.write(rpy_element.music.render() + '\n') 34 | if rpy_element.character: 35 | for ch in rpy_element.character: 36 | f.write(ch.render() + '\n') 37 | if rpy_element.background: 38 | f.write(rpy_element.background.render() + '\n') 39 | if rpy_element.sound: 40 | f.write(rpy_element.sound.render() + '\n') 41 | if rpy_element.transition: 42 | f.write(rpy_element.transition.render() + '\n') 43 | if rpy_element.voice: 44 | f.write(rpy_element.voice.render() + '\n') 45 | if rpy_element.text: 46 | if last_voice and last_voice.sustain: 47 | f.write("voice sustain\n") 48 | f.write(rpy_element.text.render() + '\n') 49 | if rpy_element.change_page: 50 | f.write(rpy_element.change_page.render() + '\n') 51 | last_voice = rpy_element.voice 52 | if current_menus: 53 | # fix menu在最后一行 54 | f.write("menu:\n" + "\n".join( 55 | [MENU_TEMPLATE.format(label=m.label, target=m.target) for m in current_menus])) -------------------------------------------------------------------------------- /model/__init__.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | 3 | 4 | class RpyElement(object): 5 | 6 | def render(self): 7 | pass 8 | 9 | -------------------------------------------------------------------------------- /model/element.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | """ 3 | Rpy游戏的基本元素 4 | """ 5 | from corelib.exception import RenderException 6 | from model import RpyElement 7 | 8 | ROLE_TEMPLATE = "define {name} = Character('{role}', color=\"{color}\", image=\"{side_character}\")" # 角色模板 9 | 10 | 11 | # 对话 12 | class Text(RpyElement): 13 | 14 | def __init__(self, text, role, triggers=None): 15 | """ 16 | :param text: 文本 17 | :param role: 角色 18 | @:param triggers: 触发器:背景、音乐等等改变 19 | """ 20 | self.text = text 21 | self.role = role 22 | self.triggers = triggers or list() 23 | 24 | def render(self, mode='nvl'): 25 | # result = [t.render() for t in self.triggers] 26 | result = [] 27 | if self.role: 28 | result.append("{character} {text}".format(character=self.role.pronoun, text="\"{}\"".format(self.text))) 29 | elif mode == 'nvl': 30 | result.append("{character} {text}".format(character="narrator_nvl", text="\"{}\"".format(self.text))) 31 | elif mode == 'adv': 32 | result.append("{character} {text}".format(character="narrator_adv", text="\"{}\"".format(self.text))) 33 | return "\n".join(result) 34 | 35 | def add_triggers(self, *triggers): 36 | if not self.triggers: 37 | self.triggers = triggers 38 | else: 39 | self.triggers += triggers 40 | 41 | 42 | # 角色 43 | class Role(RpyElement): 44 | 45 | def __init__(self, pronoun, name, color=None): 46 | """ 47 | :param pronoun: 代称 48 | :param name: 角色名 49 | :param color: 颜色 50 | """ 51 | self.pronoun = pronoun 52 | self.name = name 53 | self.color = color or "#c8c8ff" 54 | 55 | def render(self): 56 | if not self.name: 57 | return "" 58 | return ROLE_TEMPLATE.format(name=self.pronoun, role=self.name, color=self.color, side_character=self.pronoun) 59 | 60 | 61 | # 图像 62 | class Image(RpyElement): 63 | 64 | def __init__(self, name, cmd, position=""): 65 | """ 66 | :param name: 图像名 67 | :param cmd: 指令: hide、scene、show 68 | :param position: 位置:left 表示界面左端, right 表示屏幕右端, center 表示水平居中(默认位置), truecenter 表示水平和垂直同时居中。 69 | """ 70 | self.name = name 71 | self.cmd = cmd 72 | self.position = position 73 | 74 | # 当某个角色离开但场景不变化时,才需要使用hide 75 | def hide(self): 76 | if not self.name: 77 | return "" 78 | else: 79 | return "hide {name}".format(name=self.name) 80 | 81 | # 清除所有图像并显示了一个背景图像 82 | def scene(self): 83 | return "scene {name}".format(name=self.name) 84 | 85 | def show(self): 86 | if self.position: 87 | return "show {name} at {position}".format(name=self.name, position=self.position) 88 | else: 89 | return "show {name}".format(name=self.name) 90 | 91 | def render(self): 92 | if self.cmd == 'show': 93 | return self.show() 94 | elif self.cmd == 'scene': 95 | return self.scene() 96 | elif self.cmd == 'hide': 97 | return self.hide() 98 | else: 99 | raise RenderException("不存在的Image指令:{}".format(self.cmd)) 100 | 101 | 102 | # 转场 103 | class Transition(RpyElement): 104 | 105 | def __init__(self, style): 106 | """ 107 | :param style: 转场效果:dissolve (溶解)、fade (褪色)、None (标识一个特殊转场效果,不产生任何特使效果) 108 | """ 109 | self.style = style 110 | 111 | def render(self): 112 | return "with {}".format(self.style) if self.style else "" 113 | 114 | 115 | # 音效 116 | class Audio(RpyElement): 117 | 118 | def __init__(self, name, cmd, **args): 119 | """ 120 | :param name: 音效名 121 | :param cmd: 指令 122 | :param args: 参数 fadeout/fadein: 音乐的淡入淡出 next_audio:下一个音效 123 | """ 124 | if isinstance(name, float): 125 | self.name = str(int(name)) 126 | elif isinstance(name, int): 127 | self.name = str(name) 128 | else: 129 | self.name = name 130 | if self.name.split(".")[-1].lower() != 'mp3': 131 | self.name += ".mp3" 132 | self.name = "audio/" + self.name 133 | self.cmd = cmd 134 | self.fadeout = args.get("fadeout", 0.5) 135 | self.fadein = args.get("fadein", 0.5) 136 | self.next_audio = args.get("next_audio") 137 | 138 | # 循环播放音乐 139 | def play(self): 140 | return "play music \"{}\"".format(self.name) 141 | 142 | # 用于旧音乐的淡出和新音乐的淡入 143 | def fade(self): 144 | return self.play() + "fadeout {fadeout} fadein {fadein}".format(fadeout=self.fadeout, fadein=self.fadein) 145 | 146 | # 当前音乐播放完毕后播放的音频文件 147 | def queue(self): 148 | if self.next_audio: 149 | return "queue \"{audio_name}\"".format(audio_name=self.next_audio.name) 150 | else: 151 | return self.play() 152 | 153 | # 不会循环播放 154 | def sound(self): 155 | return "play sound \"{}\"".format(self.name) 156 | 157 | # 不会循环播放 158 | def loop(self): 159 | return self.sound() + " loop" 160 | 161 | # 停止播放音乐 162 | def stop(self): 163 | return "stop music" 164 | 165 | def render(self): 166 | if self.cmd == 'play': 167 | return self.play() 168 | elif self.cmd == 'fade': 169 | return self.fade() 170 | elif self.cmd == 'queue': 171 | return self.queue() 172 | elif self.cmd == 'sound': 173 | return self.sound() 174 | elif self.cmd == 'stop': 175 | return self.stop() 176 | elif self.cmd == 'loop': 177 | return self.loop() 178 | else: 179 | raise RenderException("不存在的Audio指令:{}".format(self.cmd)) 180 | 181 | 182 | class Mode(RpyElement): 183 | 184 | def __init__(self, mode): 185 | self.mode = mode 186 | 187 | def render(self): 188 | if self.mode in ['nvl', 'adv']: 189 | return '' 190 | else: 191 | return 'nvl clear' 192 | 193 | 194 | class Voice(RpyElement): 195 | def __init__(self, name, sustain=False): 196 | self.name = name 197 | self.sustain = sustain 198 | 199 | def render(self): 200 | return 'voice "{}"'.format(self.name) 201 | 202 | 203 | class Menu(RpyElement): 204 | def __init__(self, label, target): 205 | self.label = label 206 | self.target = target 207 | 208 | 209 | # 自定义指令 210 | class Command(RpyElement): 211 | def __init__(self, cmd): 212 | self.cmd = cmd 213 | 214 | def render(self): 215 | return self.cmd -------------------------------------------------------------------------------- /model/process.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | 3 | """ 4 | Rpy游戏的进程控制 5 | """ 6 | 7 | 8 | class Menu(object): 9 | pass 10 | 11 | 12 | class Label(object): 13 | pass 14 | 15 | 16 | class Jump(object): 17 | pass 18 | -------------------------------------------------------------------------------- /predef_ref/01_有希_平静.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HaruhiFanClub/Excel2RpyScript/262c8b64cb9a2a929d9d798cc6ca17dbd02236a5/predef_ref/01_有希_平静.wav -------------------------------------------------------------------------------- /test/剧本空表格.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HaruhiFanClub/Excel2RpyScript/262c8b64cb9a2a929d9d798cc6ca17dbd02236a5/test/剧本空表格.xlsx -------------------------------------------------------------------------------- /tools/__init__.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | -------------------------------------------------------------------------------- /tools/excel.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | 3 | """ 4 | 处理excel的工具 5 | """ 6 | 7 | import xlrd 8 | 9 | from corelib.exception import ParseFileException 10 | 11 | 12 | def read_excel(file_path): 13 | try: 14 | wb = xlrd.open_workbook(filename=file_path) 15 | except FileNotFoundError: 16 | raise ParseFileException("Excel文件不存在") 17 | return wb 18 | 19 | 20 | if __name__ == '__main__': 21 | try: 22 | read_excel("D:\\Rpy转换模板.xlsx") 23 | except ParseFileException as err: 24 | print(err.msg) 25 | 26 | -------------------------------------------------------------------------------- /tools/image_data.py: -------------------------------------------------------------------------------- 1 | back_ground_gif_data = b'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' 2 | haruhi_gif_data = b'R0lGODlhSgBDAPcAABoYChATECYcCi4cEBwjFysjDSYiDDcpDSwlEy0pFSwqGyUlGDMrFDMtGjksFT0zFTUxHTszHDkzGDgzEhMbKhwpKBQsOTUtIjQyIjw1Ij45JDg4Kzg6NSoyLW4aFkI2HEQ5HUs8HUc2FlU8GUstEW42GEM2I0Q6JEo7JEU8KUo8KUg1JlQ6JkU+NlQ7N3g6JGkwJFwZDzxBOlhEGlFEG2ZHGndHGXJUGEtCK0lBKFREJFxKJFxLKlZEJ0pFN1dJN11SOVlSKmNLI2VLKHpEJXhIJ2lTKntaJXRbK3tcK3VVJ2ZMOGlWNXNbM3lcNXhLNHxhLHllKHxiM3pkOWhgL31iGRgwTCk4STI8TRVMVCxHVhhYZi5PbhdmdCVtd0pIRVZLRFtVSFlZV0lMVmhZSXRbSGldUnVaUHdkSGpjVnZmWG9lSElZb1BmfHlyZ3l2dW5ra15iWIU4KIctJKU7NY5NF6hdGbhlG4NHJ4NZKJBYKoJlKoJkM4VoOZZ3K7BrKqNzH8tzGtN2Gc1tGNF5I4pxT4dsZYl1aZR6aoh7dZV6c6J+drGMGaaGJraRKZyBLdWoFM+jEsiXJ86nJ9ihF5qFWZyISqiSU4uCeZiGeZKEZ6mRbbineMSwcjZahBh1hzpojE9sjmx6i1p/pJd+hwqauwiXtxaatxSSqyqYsC2ivBSBnHyEjVyitwudwSOmxG65yZaLg4qLlZGNlpOTm5eXmIuPkaSKhKmTirmclq+VjrqhmrioipabpIyZpJinr6Wnp7ayrLe2tbGsq6Ocos6MmsqLltONncmZnNKVnsqaisilm8usk8yaodSUodebpdaPoOWbq8WrpMuoptOkpNSsrNanqcyyrcazqtSyrtmzqtqtsdWtscu4tdS0stq0s9S5ttu9u9e6uMyuseO4ueOvsdfDvcbBueHDvqS9xua7wN2+wY/H1K7O1rHT4MnIxdnJxtfTztvZ18rX2OfHxuPb2OPUzeXh3Nvj5ujo5fr69v7+/fb39fTt69bf4L/AtyH5BAQAAAAALAAAAABKAEMAAAj+APcJHEiwoEF9AvPJ6zcswYQDIaZIbEKRopQpEQ44UGCgl8J7CPXxM0iypMmT+vIJ+6HhRI4pVKggkSIlj5IkTZIkcaKTSZMwYVDwyPFh2L2RJwkiTGoypDxhQCYwkWJESQ0hRoQIGWJESpI9UJDoTAIlCQ0aQIT8ACKBQ7B48gTqW7ov5FymJenKCxZGRRkqTHYI2TFDyIwZZ7cuGaIErFcoeWZIYKGDRg8kPU5g8CEsbl2kAu2de/cu3z7QePftDQOCShAdPGggrsIoUiRGjBwBujFjR40ZNZRAkVJkxIfjH1agyAECQwYFX4TFm1uvW7dzhWY0aZCoH92mAuP+BSPzgYnh31UcTZIEqX0k97cZTdozYsSMIUimDAlxAsWKFCakgIMKOGiAwQU+tNOPISOwUMQflzxCAwHA1JXUSPKQAUEQUDBBgxCNSGIbJe9B8l6JJUKyniN4/MbDEj2A4F8OK5iwwgkpoABgAWaoYcMdjjBCySQ37FGDG6YxlSENNAkRhHomoshII1Q2MiWVjADix5R65FFDDRpEYAIKKJxwgnIhgNDfCi4gcIAdgghiYh0vDPLHAr8kpVIaIkyBxAxBMAIfJIw84sgeJExAgggHiADCBCI88MABDDBAwhJ9kMCAmSacEEIIynUaAQkXfKDHIKgGcscLdhASSAn+mtxDEkL5pGHAEIUYIVsjJprYiB8TQCoCH1FEkQQVUdCkrBABqsBAAQ+QmaaZZZpgQgQjhDCADYQIYscedsxxB6qE2EFCOyXlY0YIaETBm3qTEPqIJSRIEEVZeYxF1hFQlJUEEjWI8IEJIJDwQH8ndJqwmc4agcQHf9zxRw0sePBHnIL8sUEauxREqxkjTBFFDSM40qsfIiQgQrJIGHvETTodcUS+SeRxRBMjkBABGYWYgcMHZp4QAcI5MFBDHiRIMQIAI9ihhx512FHHAGIMUYJB8qihgxRRIHGDyYT6cYABa/TBLxJH8GGECEPw4YTMNyihxA1+VFIIGmocUon+Jjic+ekEEkRQZgMjOFFwDUyQPEIJLgwQwAh43BEIQSNlwoDIUYgARXuNfGCABEA4PLNOVGVEAxNHTFFJJZcUUskmrvO9qJlAo6CBAhDknoMENRSiBBFPdKlEHX3YwMLFcRaU9QxRTPGlI41EMUMDE6SRiw418CFWElEM8cCALFTCCyeXXKJJH03UIEECEdCQQtAp1H6CAxBkkMMENEyRBx431GFDCXXQA6sIMYg6CGQk+EhD9qIQBBo4whEHgMgByDCNaeRACFOoSh9WBwYy5OJuheiDErzEBymgYAIRSCHCarTChEHABPebAZTiNAhC3KE+ebDBDwZyjzSwAAr+zaMBEhwxgQf4QAJr2EU5cnECHlTCEpaw2yaYcIJb5EIFAujBVJIgBR6MQAK06xSZAnSCgb1PaBrAgQRmIChBoApVJEDABRQABgsB4wB8AMsObnCJKCwgCBoowCaq8YxpuMEIhbjEJvwQBSWEoABA8AYyftAAFgihCUMQARJ2IDgdBQhA1rLWjVaQgQNEIAcicKAkUOXGEijgAg642j7uoYYgeIUPItjDJUSAgRNMgAzNmAY1yJGNHsxgD0o4QhKUgIIElGEa39gFEBqwgjTxIIM5iIAGNACBlpwJBZ2yFjh9iYEYeq1VrzpaHQKBkGAcoF9HkAINRDCDA5wgAWT+QAY3qEGNbywDB0LoA1mgsB98CjMbu/iBAhpwgh7wgAk9+ECZEsCAMdGIjNYKWgPKKYEGHGAGL7DBE+5ACElMzh9pYELM9kADAUwgIjjIBDmWsYxqfKMbieiBEWiGBCAwgAzZYEYy6HGIACRgAyD4QA9wIIJsRiANJ9jUmfozJh29DwIYwAGNIOCAAczABv+zgSjIUIAmNHIn80xDJTqxBkN8o5/ksAY5pKFFPiQTCk34wAYUQY1yZEIMmcCEDxAAgpb4JwMnUEMm1IABwQVtqgHSgAM6pRwV9CADDEDAABhwgwNUIgh7qIIS0LC6Q6wBCB3oARl0EY5vkOMb1UD+hA5ygoQ9GCEHAgjDNxZBhmXQwx66SIRCN1CmHGyAAWkYxyEMRkr4JUyNF3gsCliQghywAAWSCAIzWHcJS3ACG5toqQHIgAhDpAEMYsiFOOCBDRMYQXtJEMIJEFAGcvShDPTIRjbAAY9dJMIHCsDAKzXAgDIgIxNmaAAE/PPYE2TgAgpTwQomnLAVSIgTnGAGMzJcCRpAQAZnGEc5yIELRSTiDD9IgzQyMVsnIBMFBUDDIs6gi3WowxCxWAcmyJABAyzgxwtQwAaQoQ5p3CIN3UzB+96nghNEi2A2eiwSKoHhKncYBDkoACLIgYxhqmMduFiEIdxAjBXogHtJ4MH+0MyQi294IxFqGEciDCCAFfwgAQlQwAIqcAIfoMG3t8hzBP4zVRQ0QHAgUE7QIECDDWO4dU14QDYZgAhtLIMa1fDGN9ZBD3okIg2JuMAO0maEFExwG9ZQhBqmgQkCLAAFwBMCDBYaBw4AoAAa4JgaFgCBoQEIR1HNgITNpKZTVpkTUaDCEGgQgV8uo4I23UY2xpGLcYRDGrqA5RCcUOoJH0IRYRBHJgRAAAXA4AVEwAMeVtAAHyQCDhsAQAAwkQkMaKABCehlC5TMAA2QqYxr0gQvNOGDR/SBByCggQwMcAhyJKMa2/DGNsgBDjWwGRzgwIUEmrqDIaxgAWcwhCH+6GGGL4DhAkVIebqLgAAFxMIXooADAcKQCAZEIAMpfOH7FKxk/pgpBLzY7gSaJ4QPNKcBhtgGMqYhjnBgYxrSiEUimkCGYYAjExBgAAoy04AyLGMX5qWFGEggByIQ4QV4kEMPHBCdX/RiDGTARAYygAEMpKABG82ADxiAAQ4YPQVp6sQmZIAYKKwNRwkoBJezgY1dlEEDP+hgLDCxBDJ0IxOBsxEpD0EPMowBGF9ggRxegO4XpFwAPohHPOYBBzBM4xCNbXfCFLz3BhxHRvzhBBVAMIMPdFED2czAIcpBjWykQQsOCMACALCAL4iB3mowRyxsr4IUFIAJ2VADJoT+sQERFCHdRCgCHuYwghZ0Jh+xAIM3NlEABbckByeAAN4z4IAInBEETJCBPEPQhyGoSQFmYA2YZgYEEAcp4AA/0AQ4QG5u8HXeEA71tinwhwjSAA/CIAYXMAR4cHZmlwdFQDXvwA/AYAbjoAkIsAEZAAEpMGEGwj4pIAHeZAI08ABTsAMiwG0gYAIX4AbkkAtkYABwIAYDwAJPkHIw8APvJg3h4A3ogAktgQELkAbmQA/CMAxlcABEUALoxoECwAHwkA/n0AzfEAvRZQLCViMakALsgwI2BzS+9ABmNQMhwAQhYAINoAb0oAYE8Aa10AEFUAIqVwQ9IAZw5g2G6A3+0pAIKLABCkBB9CAPZlAAS+AERUB6RGAEBvAF8iAP8UAO5KAIDvBgAvABObICOdBNQpMAVFUAE4AEfFADIdAEzNIAh9ANPxAGvWALP8ACNkAESvACclACufUOh/iA15CIK5gJ9SAPblAL/QAPxWN2TDAALfAO92AO40AOiEAA1vIDPgBsZmKKMtBrynEAJFAsn+IES/ABDGAIhyAAcNALpJADOoAHlWh2L3AALRAP4BBx3nAN3RAO3QB108Bf8SAM74AdWlgETBABZrCJ4lAN6xBqBlAG0gAGCIAjylEmZgJGOWAJE/AVQhACTjAELAABbqAGARAKxEALX/ABeUD+BDbwfUpgAmAAD+LQDeJwiN3wgOvwj90QD2+wAJiibv23AcJwD+8gDtuwDrGwABHgjj+wASagAhLGkfEHASdQCEOHBH2wAx9QCD3AAG6QCQoAB8TQDmIgAEsQk0UgB3IwAjQgDeCADW7mDfp1l95gHeHAFwJAAkrQBCggAGkgD/awk+NAD7dAAGpgCKtGBlpXTSGQAkkVAQpwAgUgAk2wB0lgg03AA860DM43DO8ABAIgBDVQAkQAl0KQAF9gDt2QacU4m9mADhW3dmyZBt1AD+OwT/8ocmpQCOWwDojAc2PyWArwAZnwAVNAOiMgAkyQAAgQWF/QDfnwBgSABoj+UAiVaANCIAAt0JOzeQ2HKA7fwA3eAA7iIA2eFwz04A3WUAzJYAzWkAmGEA28lQuYZggmgAGKhjAEFg80yAdJoDYjwAMYIABksAuHoAv58A5v8A39oAxOgHZLYABh0JPoOZvFeJfgsIQV1AzFcAwkegzOQFPUsA1qgAbZUA3XoCH/OVUN8A4TYHikkwM5wAN4lwjosAzxkA/1QAy6wJ0voARO0IXfIA4bWoxL2qLn+YDPYAwjaqIlag3W8AzeoAZnsA2+ZQYGQGEnAAJnRKM6EAFe0Zk5kAIX0HXY4A3mIA/XCQA5wAdP4AQ7MABuUIzg4A3ccA3gsA7hMA7WIKL+z8ANsOUMzlAMUvoM1pAM/EQNyUAOakAG1KAOmXAGCIAALkAwdfg+7wCdIGAESTAzM2AAvSQBigAP1WAOywgHA5BKDzAAZ7CEfPoN8OBm69ANVpqoI1oM/WSI1DCozbAN3/ANXLoM34AMZ6AJ2qALSXALiyBhTdYp1fUOEdAHPaBJNaMEBpICCHAI4UCeb0oPb0AGk+oG1wAPh1hIz8CozzCi0AANJiqf29CTxWqI5vkN2hCsuaA65bANhZAJ35ALP+AAZ0JGKPAOEjAFCOcE/lIEJ0BgmaCqe3kNrWUND5iT5ukNIloMzlCiJBqvJVoMz+Bm9goO3fAN2QCp23D+C4gAqZimDrigAinEUDpiJu9wAk7AAwzQFXmQB0KQASgAAWYgDd+gntvwDMcADY6ak5o2qB8LslK7tMdQDNuwk+KJnsxQDeVwafzkibdgCCrQAFX5AJeJIxvwDgXwlQKQPzlhktWVAJhAD8/QDFJrDNMgmx8btVM7tb+ankw5DdmQC4P0DeGgCyH3AwVgfxwJg0ETD0EQBExgAJpZFn1gBIgnsFPbZdngDeJgDXw7tSIbssdgDMRqDeMgDtOgDc1AHmrgBoYABAXAAMkRP1SlGWe7D8IQATiwM0agP0dgBJuaALFQDlNatZh2lxHZt6Q7tVYrDtmwDcGKDGRwaAz+4AAJ0ABnBEMKRwMo0BxpkAMZsA/x0D7PlwL9wkWZ1ABhgAy86gzWUKxuZp7VYAwlGrohG7rJUKzVMA3XMA1kMAFpaCNl8m8JNwEY8AAiIAMdkAZpEAH7kLM58APB8AM5IFBQoAQjYAILgAvqEEzVIA4be4j7+rHyOrLwmgwjC7/VYA3L4AZA8ABVCWwpMK0Jw00JIAM58AAVYAVjcAH7cA4MgKP48A8noAMikwRGoAMQEAa7sITbAA6dS8LhUL/Mu7QnXLXNIIbUcAYUtYJk1GA4kgMKkAUywAAb0AWn8AldsA/+sAYIoIm62wI7MAU3MQMmwABAIA3kcA36taf+2XAO2oCXUcq8x4sMxxBxsauV1RemAzNKnsIBOUADC+AFWYDAn/AKpWAKAiEMASDH5MsnhfAyOhCxKSYN+fUN5nAN2GAO2vAN9FAOxxAN0dCutUzL7eoM5VAOb3ByCQB84EQwKJAmpNQ+MoADM1ABXrAFHbAFqOAKqMAOCeEDKSArCCEMJ7ADZqMDHyB/EIADZdDK/7sMzKANtzAG6AwGYDAGX+AC7ewC7owFLgAGFHAFHXABVpkBItAfIoACpKgBptQB5aYAy5wFqHAKpsAO/jAQ8hAGaWAaIxEMR1wITRACEaCVCeAAQOBBGqYM2qAIFGAFFkABovALtOALvtD+C73gC7TQksRADF9AARVQARiwAbeTwzmwHDi6AFvwCZ+QBV7QCuygCqiQCu6w0KexD+4gC7IyENjcA9jkADIAAjjgJpsAD+awtc+QCFqABRbABr0wDMKQDsIw1mVd1r1wBVzQBlxgzwRwAWYAAQAgAAYAABBQAWqsCp8AC/OAD+2gCqagCvNwEAUhDN/IBEyQAROwAT4QAQ1QC9igDNRAy6RwBVpQz6NAC6RACrIwC6zA2Z1NCljABaHgCZ7ABVrgw2+ACZiQCKzgAwZtCqZwCu6QD/ngDqrgCqegCoQ9EBhii71RAAqgABEgA0BQzhqmDYmg1hZwBaHwC74gCyj+TQuyQAuzMAvEMApW4Amg4Amh0N1W0Ab4YCG+sAWusMm7zQ7zAAunsMmcnBRL8QsyEARZJgY5QADEqw0ahgtfoAX+zQWjII/RTQrXTd2zUAu0oAVc0N2gAAql7dz+gBCYYN7n7QqzrQrtfQqpcAp4cRe7kANBMAG1EAzMFwz2YA7moJIU8NWhQAqsQAsnbd2dfd2zYAuiYAULzt1cYAUU8Mki2AFdcN6lsMlDbgqpAAvtgC6pIRDDgAEB4Av84AuZMB1z0Q0qDQdWgAVa4AnULQqkoNIwXuCscNlWwONWwArDUAu/AAw9vQWrYOGmMOSlEM1AWg9LPhDBwAEegQbCTEAG51AX8R0AWMAKbYAFHCADoiALnL3ZvnDdokAB8TgLvdAP/aC7WJDJXaDGQ37es+0O9hAPSL3kCNEP8aAGMTAHMbCPpzESwEABYvAO89ALPgAGbHAFHIAFWZ4IJ00KHPAFYTAGPyDPMOAACHDoFuDMpeAKnJ4K7bCMnnHnI5EPPxADdOABA/AOFrIPvUABbTAPD7rWrXDaVrDlti4LooAFbWABBBADHjAH7Q4DMOABJGAFn3DQm34K7IAP9yAPAQEAOw==' 3 | sos_ico_data = b'AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAAAAAAAAAA////AP///wH///8E////Cf///wf///8A////Af///wD///8A////AJJi4gCNXN8LbyrbwqJ35v/Hru7/w6bt/4hQ3/+1k+v/k2Pi/24t2owkAL4A5tn8AP///wX///8C////Cv///wH///8AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////Df///yH///8N////DP///wD///8B////AP///wD///8Axq3vAMev7xB7Pd7KkV/i/76i7f+shuj/oHXl/7+j7P+YaeT/djfdxMew7hLLtPAA////BP///wL///8M////Av///wAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8B////Af///wP///8S////Bf///wH///8ANaGCALfV0QJ957ESlb3Ia35O2ep8P93/q4Tn/6qC6f+ecub/iVTj/3Ey2/+dcN7p8OnwLePX6QD///8C////Bf///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////A////xL///8FZcikALjl1BF807VRXsyknk+rpMtpWcv3by/Z/2wo3f9qJd//aiTf/28t1f+eY53/vId6/+a9Yvv3z1iQ88c8I/Hiogf///8B////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A6/jzAPz+/RSP2r9PVsafrEfEmfk/w5P/VXW5/28p3P92NdL/oGWe/6hulf+laZn/tHyF/+++Pv/2xzL/9cQw//XENPzzxjbf8sxSq/bim1r+//8J/PjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AKXh0QDO7uYakNrDrVXIoPk9wJL/PMGT/z/BlP9fX8L/bijc/4ZHvv/qukP/+Mkx//XHM//1xzX/+N+O//rpsv/423//98pG//XFM//0xDT/9ctO9PbPW2Hmy04C781TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB607cAq+TRH2vOrbBFw5j9O8CS/0vFm/+H2L3/Zc+p/1KAsv9vK9v/dDDV/6Flnf/Tn1//7r49//fMQP/w6r3/uduj/7LVkP/d46n/+N6H//XIRP/1xDL/9cY17PPLTIj045YU8dp1AP///wD///8A////AAAAAAAAAAAAtebTAMjt3h5rz662QcKW/zzBkv9fy6b/xOve//7///+/7Nz/TLme/1pqvP9uMdj/bijc/3Uy0/+YW6n/2KVb/7nAOP+QxWH/pM9+/4C/UP+s1Iz/7uaw//bPW//0xTP/9Mc4/fXPV5v557UQ9+GeAP///wD///8BAAAAAKzgzgD79fkEac6rh0XDmP88wZL/as6s/9zz6//y+vj/0/Lm/9Ly5v+i4cr/VMSf/06Vqv9dYML/bDHZ/24p3f9/RL7/iqZR/8nks//K47L/2+vM/53Mdf+MxWH/4ea1//bTY//1xTH/9cc5+/bSZID6//8I+fLSAP///wL7//0A////BJjcxXJIxJjxO8GT/2TOqf/M7uP/wevd/23Prv9OsaP/UrSk/2jOq/901bD/Yc+k/0K/l/9UhLH/bjHZ/2sq2P+Sjqz/rNaH/1OnCv+DvlD/0ufA/7jZm/+Jw1z/3+a1//fRXv/1xTP/9MpD9ffejGX///8A///9ALPm1ADB69srZ82p4z3Bk/9Qxp7/s+fV/3fTtP9UyJ//T4ur/2g+0f9nP9L/WGu9/0+Sq/9KtKD/QsCX/0ydpv9tNdf/bira/36Blf+73Zz/n854/1usF/9hriD/x+Kw/7/cpP+PxmX/7ei6//XKSP/zxTL/9dBf3vnuyCv25KYAK7qLAHrUtXFFxJj/PcGT/5jdxf+N2b//itq9/47Ywf9eV8T/dy/V/5NTr/95NdH/bC3b/2RE0P9gVcj/ZkDT/20o3/99PMn/op5G/3y4L/+iznz/v92n/220MP9frh7/zeW5/6nSh/+r04v/9t+W//TFM//0yD//9t2MhAAAAAB41LMIRsOYrjzAk/9izKj/uOjX/2zPrf+96dr/Vsig/1pqvP90L9b/t4CB/9SiXf+iZ5z/iUi7/4A7yv+DQsP/l1qq/9KcYP/3zVD/4+i7/5HGaP+Nw2D/yOGy/2uzLv9xtzb/1+rH/4zDXv/d5rj/989Z//XFM//zzlHI++28FmbKqDVEwpbkO8CS/5jexf+S28L/ld3F/5XbxP9UyZ//S6ui/2ZEz/94Nc//w45x/+y8QP+9h3v/mVyo/5JUsf+jaJv/v4d5/+OzT//42nz/8vLc/5DGZf+Xymz/wd+q/1eoEf+q0of/udqc/6bRg//44JT/9MQx//XJRPL23pFSV8iiij/Clf5LxZr/wuvc/3LRsf+26Nf/b9Gv/7fSxP9lrYr/Spmn/2g51f95Ns//kVKy/3Ix1v9uK9z/aynX/20p2/9tK9z/iUu6/9ejWP/43YT/5fDY/3S4O/+93KT/jMJb/2qyKv/P5bv/jMNg/+7qv//1yUL/9cY3//TTZp5s0K/kOsGS/2fOqv/B6t3/bc+u/7Pn1f931rX/07ez/6WDev9ftpP/UJGu/2s21v9uKt3/bCzV/0wljP8xHVL/PyNs/2Urwv9tKt//klSw/+m9Sv/88Mv/r9aR/4bCVP++3aT/XKsX/8rjs/+RxWf/0uS0//nSX//0xTH/9NJl3mrPrv86wJL/dtO0/63j0f+B1bn/nN/I/4fZvv/Srqv/uXd2/6e9rP9LsqP/aj/S/3As3P9SJ5j/NzM8/39/f/9NTk3/OiJi/20s1f9yLtj/yJJp//vklP/a683/Z7Eo/8fisv9ttC//qtOG/6fThf+32ZX/+dZw//TEL//202f/W8mk/zrAkf+J2L3/qePP/5Lcwv+N2r//ntzH/8+lpP/Ejoz/m8qy/0ufpf9tMtf/bizX/zYfWf9ycnL//////7Gysf8rIzv/ZSvF/24r3f+4gXv/+dlu//D25v9wtjX/staT/3m8Qf+TyGX/sNiR/7DYkf/624P/9MMw//XPVP9Tx5//O7+R/5DbwP+q5ND/md7F/4vZvv+i28f/zaOi/8ubmP+Qz7P/SZum/24x2f9tLNT/Mh9N/42Njf//////ycnJ/zEpQP9kKcT/bire/7V6hP/61Wb/+Prw/3+9SP+s1Yv/f75J/43GXv+w15H/rtiQ//vei//0wjL/9M1O/1fIof06wJH/i9m+/6vj0P+O2b//kdvB/5jaw//PpaT/w4uK/5THr/9JnqX/bTLX/20s1/8zHlT/enp6//////+vr7D/LCI8/2Yqxv9uK93/uYF8//nZbf/5+vP/frxH/6zVi/+Avkf/lcpp/6vVif+w15D/+tuF//TDMf/0zlH8Ysyp9TrAkv941LX/s+fV/3vTtf+n4s3/gNa5/9Gtq/+4dnX/rr+w/06wpP9qPNL/cCzc/0skiv87Oj7/jI2M/05OTv88Imb/bS3V/3Eu2P/IkWn/++GH/+726P9uszD/tdiW/3q6Qf+j0H7/l8lu/7LVj//51nL/9MQv//bRXfVlzavdOsGS/2fPq//N8OT/as+s/7fo1/911bP/zbi0/7uAfv/Crqf/Xcul/1dvuf9wKtz/aivP/0Ujev8wHkz/PSJp/2UrxP9wLNz/cSza/7F4if/0ylj/0dqQ/2qxLP/H4rH/bLMu/7jam/9/vUz/xN2i//nTYv/0xTL/9M1TyGbNqqk+wpX/T8ac/9Dv5P981bb/s+fV/3DSr/+31sj/xpOS/8CJh/+fyrX/SbSf/19ZxP9vLNz/cCnb/20p1v9uKtr/cCvc/2dD0P9oPtL/dC/V/7mCff+Xsx3/i8Nd/7PXlP9iriD/v92l/3m6Q//k5rb/9spG//XGNv/002WpftS2VUTDl+89wZL/oeDK/6PhzP+I2Lz/ouDM/4HXuf/Qsq//vYWD/7+Wk/+Rz7f/TLmg/1KJr/9eZr//ZE/K/2FTyf9Zc7r/R6qf/0uepP9mQtH/czPP/2uIW//B4Kb/f7xI/4O/Tv+v1ZD/kcdn//bglv/0xDL/9cpH/vfnq4mD1bcPS8SZwj3Bk/9o0Kv/0fDl/2/Qr/+66dn/cdGw/6vcyf/Mnp3/voWE/8KZlv9wx6T/QrCb/1ttu/9mSMz/ZUPQ/2RKzv9dX8P/Tpep/0+Tqf9oN9X/g1TU/6LHh/9drBf/wN2l/4S/VP/H253/+NFg//XEMv/zz1fb+vHPLP///wB61LSJRMOX/z/ClP+r49D/qePP/3rUtf+66Nj/Zs6q/77g0//Po6L/pJiM/0y2l/9eWsX/byrb/3Yx0/+JSLz/hEDF/3Mt1/9qMNr/X1fH/2k90/9tN8r/VJMn/5XKaP+v1o//jcVi//Lgmv/1xTX/9cc8//XciJj///8DnN/GAK3k0C1YyaLkPMGT/1nJo//P7uT/g9e5/5Xcw/+x5tT/Y86q/7Hi0f+czbf/RaSh/2s21f9vK9v/sXiJ/+29P//ltkz/y5Zq/6pxjP96PcL/bDDR/2Nbif+HvFz/wd+q/3m8R//W4KP/9s1O//XEMv/1zFDd+Om1L/fimgDs+/UA////A4zav4FJxZr9PMGT/3PSsf/P8OT/etW2/5Dbwv+16Nf/d9S1/1fLo/9FpaD/bDjU/24r3P+obZb/7b49//fRTf/32GP/99Jf/52pRf9Sii7/j71p/8vltv+AvU7/u9aJ//bUZ//1xTL/9cg/+vXWcmW6AAAA/vnoAAAAAADI7N8A3fLrFGvNrKNBwpX/PcGS/3vUtv/Q8OX/hNe7/3XSs/+359f/peLO/1zEp/9eW8P/cCnc/3Iv2P+XWKv/xpBw/+7BS//43ob/5+q9/4bCUf99vUn/gL5Q/7PRfv/11Gz/9sUy//TGOf/11nWy+fXiEvjvzQAAAAAAAAAAAAAAAACP2b4AoN3HH1rJo7o+wpT/PcGS/3DQr//J7eL/reTR/2zPrf+C1rn/YMyl/0etnv9cZr7/azbV/24p3f9zLtj/ml2m/+GwTf/645j/7fbp/7nan//M2Y7/89Jh//XFM//0xjf/9NVu2vrtyDT557IAAAAAAAAAAAAAAAAAAAAAAP///wBYyaYAh9m+ImfOrMZEw5f/PMGS/1TIof+i4Mz/xuzg/6/l0v+w5dP/Yc6m/z69lP9JoqL/WXC7/2s31P9tKd7/n2Oe//HHTP/47L//+uOe//bMTP/0xTL/9cc5/vTTZcf37MBCvx4AAPv//wAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wCH1boA0/DmOmfNq5RFw5jxO8CU/z7BlP9ayqP/mN7G/63k0f9SyJ3/PsKS/z/Ekv8+wpT/XGa//24p3f+AP8b/5bRK//bKPv/1xjX/88Qy//XIQ/n21G2l+ei2H/TSbAD///8AAAAAAAAAAAAAAAAAwhAGH8JQAh/AwAI/8QAAP/wAAD/4AAAf8AAACeAAAATAAAACgAAAAYAAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAA8AAAAPgAAAH8AAAD/gAAB8=' -------------------------------------------------------------------------------- /tools/img.py: -------------------------------------------------------------------------------- 1 | import base64 2 | from io import BytesIO 3 | 4 | from tools.image_data import back_ground_gif_data 5 | 6 | 7 | def image_to_base64(file_path, output): 8 | with open(file_path, "rb") as f: # 转为二进制格式 9 | base64_data = base64.b64encode(f.read()) # 使用base64进行加密 10 | file = open(output, 'wt') # 写成文本格式 11 | file.write(str(base64_data)) 12 | file.close() 13 | 14 | def base64_to_image(file_path): 15 | with open(file_path, "r") as file: 16 | x = base64.b64decode(file.read()) 17 | f = BytesIO() 18 | f.write(x) 19 | return f 20 | --------------------------------------------------------------------------------