From 7a8045b070bc82d579f355b9bc01022bb9cad7d2 Mon Sep 17 00:00:00 2001 From: Dazed Date: Mon, 15 Jan 2024 10:59:37 -0600 Subject: [PATCH] Adjust translateNote --- modules/rpgmakerace.py | 69 ++++++++++++++++++++++++++++++----------- modules/rpgmakermvmz.py | 29 ++++++++++------- 2 files changed, 68 insertions(+), 30 deletions(-) diff --git a/modules/rpgmakerace.py b/modules/rpgmakerace.py index af72c92..b51ef97 100644 --- a/modules/rpgmakerace.py +++ b/modules/rpgmakerace.py @@ -33,7 +33,7 @@ NAMESLIST = [] NAMES = False # Output a list of all the character names found BRFLAG = False # If the game uses
instead FIXTEXTWRAP = True # Overwrites textwrap -IGNORETLTEXT = True # Ignores all translated text. +IGNORETLTEXT = False # Ignores all translated text. MISMATCH = [] # Lists files that throw a mismatch error (Length of GPT list response is wrong) BRACKETNAMES = False @@ -48,7 +48,7 @@ if 'gpt-3.5' in MODEL: elif 'gpt-4' in MODEL: INPUTAPICOST = .01 OUTPUTAPICOST = .03 - BATCHSIZE = 40 + BATCHSIZE = 4 FREQUENCY_PENALTY = 0.1 #tqdm Globals @@ -253,20 +253,25 @@ def translateNote(event, regex): jaString = event['note'] match = re.findall(regex, jaString, re.DOTALL) if match: - oldJAString = match[0] - # Remove any textwrap - jaString = re.sub(r'\n', ' ', oldJAString) + tokens = [0,0] + i = 0 + while i < len(match): + oldJAString = match[i] + # Remove any textwrap + jaString = re.sub(r'\n', ' ', oldJAString) - # Translate - response = translateGPT(jaString, 'Reply with the '+ LANGUAGE +' translation.', False) - translatedText = response[0] + # Translate + response = translateGPT(jaString, 'Reply with only the '+ LANGUAGE +' translation of the RPG Skill name.', False) + translatedText = response[0] + tokens[0] += response[1][0] + tokens[1] += response[1][1] - # Textwrap - translatedText = textwrap.fill(translatedText, width=NOTEWIDTH) - - translatedText = translatedText.replace('\"', '') - event['note'] = event['note'].replace(oldJAString, translatedText) - return response[1] + # Textwrap + translatedText = textwrap.fill(translatedText, width=NOTEWIDTH) + translatedText = translatedText.replace('\"', '') + event['note'] = event['note'].replace(oldJAString, translatedText) + i += 1 + return tokens return [0,0] # For notes that can't have spaces. @@ -473,6 +478,12 @@ def searchThings(name, pbar): if '')[0] totalTokens[1] += translateNote(name, r'')[1] + if '追加説明A' in name['note']: + totalTokens[0] += translateNote(name, r'<追加説明A:(.*?)>')[0] + totalTokens[1] += translateNote(name, r'<追加説明B:(.*?)>')[1] + if '追加説明B' in name['note']: + totalTokens[0] += translateNote(name, r'<追加説明A:(.*?)>')[0] + totalTokens[1] += translateNote(name, r'<追加説明B:(.*?)>')[1] # Count totalTokens totalTokens[0] += nameResponse[1][0] if nameResponse != '' else 0 @@ -526,6 +537,13 @@ def searchNames(name, pbar, context): if 'hint' in name['note']: totalTokens[0] += translateNote(name, r'')[0] totalTokens[1] += translateNote(name, r'')[1] + if '追加説明A' in name['note']: + totalTokens[0] += translateNote(name, r'<追加説明A:(.*?)>')[0] + totalTokens[1] += translateNote(name, r'<追加説明B:(.*?)>')[1] + + if '追加説明B' in name['note']: + totalTokens[0] += translateNote(name, r'<追加説明A:(.*?)>')[0] + totalTokens[1] += translateNote(name, r'<追加説明B:(.*?)>')[1] if 'Enemies' in context: if 'variable_update_skill' in name['note']: @@ -540,6 +558,20 @@ def searchNames(name, pbar, context): totalTokens[0] += translateNote(name, r']*)>')[0] totalTokens[1] += translateNote(name, r']*)>')[1] + if '追加説明A' in name['note']: + totalTokens[0] += translateNote(name, r'<追加説明A:(.*?)>')[0] + totalTokens[1] += translateNote(name, r'<追加説明B:(.*?)>')[1] + + if '追加説明B' in name['note']: + totalTokens[0] += translateNote(name, r'<追加説明A:(.*?)>')[0] + totalTokens[1] += translateNote(name, r'<追加説明B:(.*?)>')[1] + + if 'Classes' in context: + if 'スキル連結:' in name['note']: + response = translateNote(name, r'<スキル連結:(.*?)>') + totalTokens[0] += response[0] + totalTokens[1] += response[1] + # Extract all our translations in a list from response for i in range(len(responseList)): totalTokens[0] += responseList[i][1][0] @@ -550,7 +582,7 @@ def searchNames(name, pbar, context): name['name'] = responseList[0].replace('\"', '') if 'Actors' in context: translatedText = textwrap.fill(responseList[1], LISTWIDTH) - name['profile'] = translatedText.replace('\"', '') + name['description'] = translatedText.replace('\"', '') translatedText = textwrap.fill(responseList[2], LISTWIDTH) name['nickname'] = translatedText.replace('\"', '') if '<特徴1:' in name['note']: @@ -561,9 +593,6 @@ def searchNames(name, pbar, context): translatedText = textwrap.fill(responseList[1], LISTWIDTH) if 'description' in name: name['description'] = translatedText.replace('\"', '') - if '\n([\s\S]*?)\n')[0] - totalTokens[1] += translateNote(name, r'\n([\s\S]*?)\n')[1] pbar.update(1) return totalTokens @@ -1643,6 +1672,10 @@ Translate \'Taroを倒した!\' as \'Taro was defeated!\'', False) if 'help' in state['note']: totalTokens[0] += translateNote(state, r']*)>')[0] totalTokens[1] += translateNote(state, r']*)>')[1] + if '必須技能:' in state['note']: + response = translateNote(state, r'<必須技能:(.*?)>') + totalTokens[0] += response[0] + totalTokens[1] += response[1] # Count totalTokens totalTokens[0] += nameResponse[1][0] if nameResponse != '' else 0 diff --git a/modules/rpgmakermvmz.py b/modules/rpgmakermvmz.py index 8beeafc..df816ec 100644 --- a/modules/rpgmakermvmz.py +++ b/modules/rpgmakermvmz.py @@ -245,20 +245,25 @@ def translateNote(event, regex): jaString = event['note'] match = re.findall(regex, jaString, re.DOTALL) if match: - oldJAString = match[0] - # Remove any textwrap - jaString = re.sub(r'\n', ' ', oldJAString) + tokens = [0,0] + i = 0 + while i < len(match): + oldJAString = match[i] + # Remove any textwrap + jaString = re.sub(r'\n', ' ', oldJAString) - # Translate - response = translateGPT(jaString, 'Reply with the '+ LANGUAGE +' translation.', False) - translatedText = response[0] + # Translate + response = translateGPT(jaString, 'Reply with only the '+ LANGUAGE +' translation of the RPG Skill name.', False) + translatedText = response[0] + tokens[0] += response[1][0] + tokens[1] += response[1][1] - # Textwrap - translatedText = textwrap.fill(translatedText, width=NOTEWIDTH) - - translatedText = translatedText.replace('\"', '') - event['note'] = event['note'].replace(oldJAString, translatedText) - return response[1] + # Textwrap + translatedText = textwrap.fill(translatedText, width=NOTEWIDTH) + translatedText = translatedText.replace('\"', '') + event['note'] = event['note'].replace(oldJAString, translatedText) + i += 1 + return tokens return [0,0] # For notes that can't have spaces.