一款基于python,使用ChatGPT网页版的视觉小说翻译器,具有以下特点:
这个项目可能有很多的坑点!由于本人没有时间维护,并且chatgpt是一个会不断更新的网页,所以很可能会出现用不了的情况。只建议有做过python爬虫经验的伙伴使用,如果用不了可以试着排查原因然后修改代码。祝好运。
pip install -r requirements.txt
本项目使用selenium操作ChatGPT网页,使用账号密码或注入cookie以实现登录。登录完成后,会将待翻译的文本以batch_size
变量指定的句子数量为一批,发送给ChatGPT让其翻译。
本段将以翻译樱之刻为例子讲解使用方法
把待翻译文本放在./text/
文件夹下,待翻译的对话需要为以下JSON格式:
[{"静流":"「いらっしゃい」"},
{"???":"「……」"},
{"旁白":"一人の男性客が店に入るなり黙ってその場で立ち止まる。"},
{"静流":"「ん? どうしました?」"},
{"???":"「あ、いや、キマイラの店主さんがおかえりだって聞いていたので……」"},
{"静流":"「あれ? 君は、あれかな? 私がいない間のキマイラの常連さん?」"},
{"???":"「あ、まぁ、そんな感じですかね」"},
{"旁白":"ずいぶんとすらりとしたイケメンだ。"},
{"旁白":"初対面なのだが、どこかで会った事がある様な。"},
{"静流":"「そうですか。円木ちゃんが店長してた時からの常連さんですか?」"}]
你可以参考本项目自带的./text/01_01.json
中的对话格式。翻译后,生成的文本会储存在./translated
文件夹下。
以下是config.py
中的内容
import os
translated_file_dir = 'translated'
text_dir = 'text'
all_text = os.listdir(text_dir)
total_accounts = 1 # 总共账号数量
# 请在这里放置session的url。
urls = {
1: 'https://chat.openai.com/c/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
}
# 请在这里放置cookies。
cookies_mapping = {1: 'cookie_example.json'}
prompt = 'please translate the following galgame conversations from Japanese to Chinese. ' + \
'Please preserve escape characters like \\r\\n or \\" and strictly keep the JSON format of the provided content. ' + \
'Please directly give the translated content only. ' +\
'Here are the conversations:\n'
# the time to wait for the answer from the chatbot. If the bot waits too short, error may occur.
# 等待聊天机器人回答的时间。如果等待时间太短,可能会出现错误。
answer_waiting_time = 10
# the maximum number of lines to input to ChatGPT each time
# 每次输入ChatGPT的最大行数
batch_size = 15
你可以按照如下步骤使脚本登录你的ChatGPT账号。
New Chat 在ChatGPT网页中新建对话,刷新后将带有编号的浏览器顶部url复制到urls
变量中。请确保格式为https://chat.openai.com/c/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
。
获取cookie 你可以在edge或chrome浏览器中安装Cookie-Editor
扩展,并在登录ChatGPT之后将cookie导出(export)为json格式,粘贴进son文件中。之后,你需要将json文件名填写进cookies_mapping
变量。
修改提示词(可选) 把提示词改成更适合你的文本的提示词。
修改其他配置 可以根据翻译效果修改。GPT4引擎可以使用15的batch_size
,即一次输入15句话。GPT3引擎建议数量为10。
修改完配置文件后,你可以通过
python main.py 1 08:00:00
使程序使用账号1
在系统时间08:00:00
后开始翻译。开始后,程序会根据账号数量把待翻译的文本分为若干等分,每个账号的翻译任务互不干扰。
这个脚本的设计思路是根据账号数量把待翻译的文件分成若干等份。如果有两个账号,可以开两个控制台并分别输入python main.py 1 00:00:00
和python main.py 2 00:00:00
,这样它们就会分别翻译第1,3,5……个文件和第2,4,6……个文件。
本程序也可以使用账号密码登录,你可以通过修改Translator
类中ChatGPT_Client
的构造方式,在其中添加账号密码来实现登录。
proofread.py
中提供了一些校对翻译是否出现重复、漏句等问题。部分文件翻译完成后,可以运行这个脚本检查是否有错漏。
本项目使用了ChatGPT-Automation为基础,并在此之上对原脚本修改使其适合连续翻译长对话。感谢这个脚本的作者。
关于对话的提取与json文件的制作,项目VNTranslationTools帮了不少忙。如有想应用本项目做翻译的小伙伴,十分推荐这个项目,可以快速提取出对话文本。