From 0eeb91d3e80c0f21af58de6b45ef34b134fc24aa Mon Sep 17 00:00:00 2001 From: Dazed Date: Tue, 23 Jan 2024 13:33:22 -0600 Subject: [PATCH] Few changes to Kansen and rpgmakermv --- modules/kansen.py | 101 ++++++++++++++++++++-------------------- modules/rpgmakermvmz.py | 45 ++++++++++-------- vocab.txt | 7 ++- 3 files changed, 81 insertions(+), 72 deletions(-) diff --git a/modules/kansen.py b/modules/kansen.py index 7234e7b..98f31cf 100644 --- a/modules/kansen.py +++ b/modules/kansen.py @@ -49,7 +49,7 @@ if 'gpt-3.5' in MODEL: elif 'gpt-4' in MODEL: INPUTAPICOST = .01 OUTPUTAPICOST = .03 - BATCHSIZE = 40 + BATCHSIZE = 10 def handleKansen(filename, estimate): global ESTIMATE @@ -178,8 +178,8 @@ def translateTyrano(data, pbar, totalLines): speaker = '' # Choices - elif '[eval exp="f.seltext' in data[i]: - matchList = re.findall(r'\[eval exp=.+?\'(.+)\'', data[i]) + elif '[sel' in data[i]: + matchList = re.findall(r'\[sel.+text="(.+?)".+', data[i]) if len(matchList) != 0: originalText = matchList[0] if len(textHistory) > 0: @@ -197,15 +197,18 @@ def translateTyrano(data, pbar, totalLines): # Escape all ' translatedText = translatedText.replace('\\', '') - translatedText = translatedText.replace("'", "\\\'") + # translatedText = translatedText.replace("'", "\\\'") # Set Data translatedText = data[i].replace(originalText, translatedText) data[i] = translatedText # Lines - matchList = re.findall(r'(.+?)\[[rpcms]+\]$', data[i]) + matchList = re.findall(r'(.+?)\[[rpcms_sel]+\]$', data[i]) if len(matchList) > 0: + if 'hisout' in matchList[0]: + i += 1 + continue currentGroup.append(matchList[0]) if len(data) > i+1: while '[r]' in data[i+1]: @@ -224,6 +227,14 @@ def translateTyrano(data, pbar, totalLines): matchList = re.findall(r'(.+?)\[pcms\]', data[i]) if len(matchList) > 0: currentGroup.append(matchList[0]) + while '[pcms_sel]' in data[i+1]: + if insertBool is True: + data[i] = '\d\n' + pbar.update(1) + i += 1 + matchList = re.findall(r'(.+?)\[pcms_sel\]', data[i]) + if len(matchList) > 0: + currentGroup.append(matchList[0]) # Join up 401 groups for better translation. if len(currentGroup) > 0: finalJAString = ' '.join(currentGroup) @@ -355,40 +366,22 @@ def translateTyrano(data, pbar, totalLines): # Save some money and enter the character before translation def getSpeaker(speaker): match speaker: - case '誠': - return ['Makoto', [0,0]] - case '夏都': - return ['Natsu', [0,0]] - case '宗一郎': - return ['Souichirou', [0,0]] - case '彩月': - return ['Satsuki', [0,0]] - case '茜梨': - return ['Akari', [0,0]] - case 'ポホヨネン': - return ['Pohjonen', [0,0]] - case '荒井': - return ['Arai', [0,0]] - case '愛梨': - return ['Airi', [0,0]] - case '朋美': - return ['Tomomi', [0,0]] - case '玄治郎': - return ['Genjirou', [0,0]] - case '稼津央': - return ['Kazuo', [0,0]] - case '美沙緒': - return ['Misao', [0,0]] - case '怜': - return ['Sato', [0,0]] - case 'オス': - return ['Oz', [0,0]] - case '穂村': - return ['Homura', [0,0]] - case '吉野': - return ['Yoshino', [0,0]] - case '忠彦': - return ['Tadahiko', [0,0]] + case '央': + return ['Akira', [0,0]] + case '累': + return ['Rui', [0,0]] + case '梨里': + return ['Riri', [0,0]] + case '純': + return ['Jun', [0,0]] + case '美鈴': + return ['Misuzu', [0,0]] + case '須田': + return ['Suda', [0,0]] + case '高橋': + return ['Takahashi', [0,0]] + case '勇二': + return ['Yuuji', [0,0]] case _: return translateGPT(speaker, 'Reply with only the '+ LANGUAGE +' translation of the NPC name.', False) @@ -513,17 +506,24 @@ def batchList(input_list, batch_size): def createContext(fullPromptFlag, subbedT): characters = 'Game Characters:\n\ -妹尾 克己 (Senoo Kazumi) - Male\n\ -千住 静 (Senju Shizuka) - Female\n\ -妹尾 丞実 (Senoo Tsugumi) - Female\n\ -本間 奈緒子 (Honma Naoko) - Female\n\ -日向 夏都 (Hyuuga Natsu) - Female\n\ -近藤 美樹 (Kondou Miki) - Female\n\ -マルガリータ バスクェス 穂村 (Margarita Vasquez Homura) - Female\n\ +渋江 央 (Shibue Akira) - Male\n\ +蘆名 累 (Ashina Rui) - Female\n\ +清原 梨里 (Kiyohara Riri) - Female\n\ +五十嵐 純 (Igarashi Jun) - Female\n\ +子野日 美鈴 (Nenohi Misuzu) - Female\n\ +須田 (Suda) - Male\n\ +高橋 (Takahashi) - Female\n\ +勇二 (Yuuji) - Male\n\ ' - system = PROMPT if fullPromptFlag else \ - f'Output ONLY the {LANGUAGE} translation in the following format: `Translation: <{LANGUAGE.upper()}_TRANSLATION>`' + system = PROMPT + VOCAB if fullPromptFlag else \ + f"\ +You are an expert Eroge Game translator who translates Japanese text to English.\n\ +You are going to be translating text from a videogame.\n\ +I will give you lines of text, and you must translate each line to the best of your ability.\n\ +{VOCAB}\n\ +Output ONLY the {LANGUAGE} translation in the following format: `Translation: <{LANGUAGE.upper()}_TRANSLATION>`\ +" user = f'{subbedT}' return characters, system, user @@ -536,15 +536,16 @@ def translateText(characters, system, user, history): # History if isinstance(history, list): - msg.extend([{"role": "assistant", "content": h} for h in history]) + msg.extend([{"role": "system", "content": h} for h in history]) else: - msg.append({"role": "assistant", "content": history}) + msg.append({"role": "system", "content": history}) # Content to TL msg.append({"role": "user", "content": f'{user}'}) response = openai.chat.completions.create( temperature=0.1, frequency_penalty=0.1, + presence_penalty=0.1, model=MODEL, messages=msg, ) diff --git a/modules/rpgmakermvmz.py b/modules/rpgmakermvmz.py index 88231d8..e5bb4ba 100644 --- a/modules/rpgmakermvmz.py +++ b/modules/rpgmakermvmz.py @@ -925,7 +925,7 @@ def searchCodes(page, pbar, fillList, filename): # Remove Extra Stuff bad for translation. finalJAString = finalJAString.replace('゙', '') - finalJAString = finalJAString.replace('・', ' ') + finalJAString = finalJAString.replace('・', '.') finalJAString = finalJAString.replace('―', '-') finalJAString = finalJAString.replace('ー', '-') finalJAString = finalJAString.replace('…', '...') @@ -1951,18 +1951,22 @@ def searchSystem(data, pbar): # Save some money and enter the character before translation def getSpeaker(speaker): match speaker: - case 'ティナ': - return ['Tina', [0,0]] - case 'セルフィ': - return ['Selphie', [0,0]] - case 'リイス': - return ['Rise', [0,0]] - case 'スエル': - return ['Suelle', [0,0]] - case 'マロゲス': - return ['Maroges', [0,0]] - case 'ノルズ': - return ['Nolz', [0,0]] + case '央': + return ['Akira', [0,0]] + case '累': + return ['Rui', [0,0]] + case '梨里': + return ['Riri', [0,0]] + case '純': + return ['Jun', [0,0]] + case '美鈴': + return ['Misuzu', [0,0]] + case '須田': + return ['Suda', [0,0]] + case '高橋': + return ['Takahashi', [0,0]] + case '勇二': + return ['Yuuji', [0,0]] case _: response = translateGPT(speaker, 'Reply with only the '+ LANGUAGE +' translation of the NPC name.', False) response[0] = response[0].capitalize() @@ -2089,13 +2093,14 @@ def batchList(input_list, batch_size): def createContext(fullPromptFlag, subbedT): characters = 'Game Characters:\n\ -ティナ (Tina) - Female\n\ -セルフィ (Selphie) - Female\n\ -リイス (Rise) - Female\n\ -スエル (Suelle) - Male\n\ -マロゲス (Maroges) - Male\n\ -ググカス (Gugukas) - Male\n\ -ノルズ (Nolz) - Male\n\ +渋江 央 (Shibue Akira) - Male\n\ +蘆名 累 (Ashina Rui) - Female\n\ +清原 梨里 (Kiyohara Riri) - Female\n\ +五十嵐 純 (Igarashi Jun) - Female\n\ +子野日 美鈴 (Nenohi Misuzu) - Female\n\ +須田 (Suda) - Male\n\ +高橋 (Takahashi) - Female\n\ +勇二 (Yuuji) - Male\n\ ' system = PROMPT + VOCAB if fullPromptFlag else \ diff --git a/vocab.txt b/vocab.txt index 9d2671d..3890fc1 100644 --- a/vocab.txt +++ b/vocab.txt @@ -1,5 +1,6 @@ Here are some vocabulary and terms so that you know the proper spelling and translation. ``` +# Lewd Terms マンコ (pussy) おまんこ (pussy) お尻 (butt) @@ -9,10 +10,12 @@ Here are some vocabulary and terms so that you know the proper spelling and tran チンポ (dick) チンコ (cock) ショーツ (panties) + +# Random おねショタ (Onee-shota) よかった (thank goodness) -ルセン (Lucent) -エルド (Eld) + +# System 逃げる (Escape) 大事なもの (Key Items) 最強装備 (Optimize)