Improve System.json MTL
This commit is contained in:
parent
ca6676b369
commit
e018dae1bf
3 changed files with 96 additions and 40 deletions
|
|
@ -11,7 +11,7 @@ from modules.txt import handleTXT
|
|||
from modules.tyrano import handleTyrano
|
||||
from modules.json import handleJSON
|
||||
|
||||
THREADS = 10 # For GPT4 rate limit will be hit if you have more than 1 thread.
|
||||
THREADS = 9 # For GPT4 rate limit will be hit if you have more than 1 thread.
|
||||
|
||||
# Info Message
|
||||
print(Fore.LIGHTYELLOW_EX + "WARNING: Once a translation starts do not close it unless you want to lose your\
|
||||
|
|
|
|||
|
|
@ -195,12 +195,6 @@ def parseMap(data, filename):
|
|||
events = data['events']
|
||||
global LOCK
|
||||
|
||||
# Translate displayName for Map files
|
||||
if 'Map' in filename:
|
||||
response = translateGPT(data['displayName'], 'Reply with only the english translation of the RPG location name', False)
|
||||
totalTokens += response[1]
|
||||
data['displayName'] = response[0].replace('\"', '')
|
||||
|
||||
# Get total for progress bar
|
||||
for key in events:
|
||||
if key is not None:
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ POSITION=0
|
|||
LEAVE=False
|
||||
|
||||
# Flags
|
||||
CODE401 = False
|
||||
CODE401 = True
|
||||
CODE405 = False
|
||||
CODE102 = True
|
||||
CODE122 = False
|
||||
|
|
@ -56,7 +56,7 @@ CODE108 = False
|
|||
NAMES = False # Output a list of all the character names found
|
||||
BRFLAG = False # If the game uses <br> instead
|
||||
FIXTEXTWRAP = True
|
||||
IGNORETLTEXT = True
|
||||
IGNORETLTEXT = False
|
||||
|
||||
def handleMVMZ(filename, estimate):
|
||||
global ESTIMATE, TOKENS, TOTALTOKENS, TOTALCOST
|
||||
|
|
@ -580,25 +580,25 @@ def searchCodes(page, pbar):
|
|||
if speaker not in NAMESLIST:
|
||||
with LOCK:
|
||||
NAMESLIST.append(speaker)
|
||||
elif '\\kw' in finalJAString:
|
||||
match = re.findall(r'\\+kw\[[0-9]+\]', finalJAString)
|
||||
if len(match) != 0:
|
||||
if '1' in match[0]:
|
||||
speaker = 'Ayako Nagatsuki'
|
||||
if '2' in match[0]:
|
||||
speaker = 'Rei'
|
||||
# elif '\\kw' in finalJAString:
|
||||
# match = re.findall(r'\\+kw\[[0-9]+\]', finalJAString)
|
||||
# if len(match) != 0:
|
||||
# if '1' in match[0]:
|
||||
# speaker = 'Ayako Nagatsuki'
|
||||
# if '2' in match[0]:
|
||||
# speaker = 'Rei'
|
||||
|
||||
# Set name var to top of list
|
||||
codeList[j]['parameters'][0] = match[0]
|
||||
codeList[j]['code'] = code
|
||||
# # Set name var to top of list
|
||||
# codeList[j]['parameters'][0] = match[0]
|
||||
# codeList[j]['code'] = code
|
||||
|
||||
# Set next item as dialogue
|
||||
j += 1
|
||||
codeList[j]['parameters'][0] = match[0]
|
||||
codeList[j]['code'] = code
|
||||
# # Set next item as dialogue
|
||||
# j += 1
|
||||
# codeList[j]['parameters'][0] = match[0]
|
||||
# codeList[j]['code'] = code
|
||||
|
||||
# Remove nametag from final string
|
||||
finalJAString = finalJAString.replace(match[0], '')
|
||||
# # Remove nametag from final string
|
||||
# finalJAString = finalJAString.replace(match[0], '')
|
||||
elif '\\nc' in finalJAString:
|
||||
matchList = re.findall(r'(\\+nc<(.*?)>)(.+)?', finalJAString)
|
||||
if len(matchList) != 0:
|
||||
|
|
@ -710,12 +710,12 @@ def searchCodes(page, pbar):
|
|||
|
||||
# Translate
|
||||
if speaker == '' and finalJAString != '':
|
||||
response = translateGPT(finalJAString, 'Past Translated Text: ' + '|\n\n'.join(textHistory), True)
|
||||
response = translateGPT(finalJAString, 'Past Translated Text: (' + ' || '.join(textHistory) + ')', True)
|
||||
tokens += response[1]
|
||||
translatedText = response[0]
|
||||
textHistory.append('\"' + translatedText + '\"')
|
||||
elif finalJAString != '':
|
||||
response = translateGPT(speaker + ': ' + finalJAString, 'Past Translated Text: ' + '|\n\n'.join(textHistory), True)
|
||||
response = translateGPT(speaker + ': ' + finalJAString, 'Past Translated Text: (' + ' || '.join(textHistory) + ')', True)
|
||||
tokens += response[1]
|
||||
translatedText = response[0]
|
||||
textHistory.append('\"' + translatedText + '\"')
|
||||
|
|
@ -1152,6 +1152,68 @@ def searchCodes(page, pbar):
|
|||
else:
|
||||
continue
|
||||
|
||||
if 'ShowInfo ' in jaString:
|
||||
# Remove any textwrap
|
||||
jaString = re.sub(r'\n', '_', jaString)
|
||||
|
||||
# Capture Arguments and text
|
||||
infoList = re.findall(r'ShowInfo (.+)', jaString)
|
||||
if len(infoList) > 0:
|
||||
info = infoList[0]
|
||||
originalInfo = info
|
||||
|
||||
# Remove underscores
|
||||
info = re.sub(r'_', ' ', info)
|
||||
|
||||
# Using this to keep track of 401's in a row. Throws IndexError at EndOfList (Expected Behavior)
|
||||
currentGroup.append(info)
|
||||
|
||||
while (codeList[i+1]['code'] == 356):
|
||||
# Want to translate this script
|
||||
if 'ShowInfo ' not in codeList[i+1]['parameters'][0]:
|
||||
break
|
||||
|
||||
codeList[i]['parameters'][0] = ''
|
||||
i += 1
|
||||
jaString = codeList[i]['parameters'][0]
|
||||
infoList = re.findall(r'ShowInfo (.+)', jaString)
|
||||
if len(infoList) > 0:
|
||||
dtext = infoList[0]
|
||||
currentGroup.append(info)
|
||||
|
||||
# Join up 356 groups for better translation.
|
||||
if len(currentGroup) > 0:
|
||||
finalJAString = ' '.join(currentGroup)
|
||||
else:
|
||||
finalJAString = info
|
||||
|
||||
# Clear Group
|
||||
currentGroup = []
|
||||
|
||||
# Remove any textwrap
|
||||
jaString = re.sub(r'\n', '_', jaString)
|
||||
|
||||
# Translate
|
||||
response = translateGPT(finalJAString, 'Reply with the English Translation.', True)
|
||||
translatedText = response[0]
|
||||
tokens += response[1]
|
||||
|
||||
# Remove characters that may break scripts
|
||||
charList = ['.', '\"']
|
||||
for char in charList:
|
||||
translatedText = translatedText.replace(char, '')
|
||||
|
||||
# Cant have spaces?
|
||||
translatedText = translatedText.replace(' ', '_')
|
||||
|
||||
# Put Args Back
|
||||
translatedText = jaString.replace(originalInfo, translatedText)
|
||||
|
||||
# Set Data
|
||||
codeList[i]['parameters'][0] = translatedText
|
||||
else:
|
||||
continue
|
||||
|
||||
### Event Code: 102 Show Choice
|
||||
if codeList[i]['code'] == 102 and CODE102 == True:
|
||||
for choice in range(len(codeList[i]['parameters'][0])):
|
||||
|
|
@ -1358,7 +1420,7 @@ def searchSS(state, pbar):
|
|||
|
||||
def searchSystem(data, pbar):
|
||||
tokens = 0
|
||||
context = 'Reply with only the english translation of the UI textbox'
|
||||
context = 'Reply with only the english translation of the UI textbox.\nTranslate "逃げる" as "Escape".\nTranslate"大事なもの" as "Key Items.\nTranslate "最強装備" as "Optimize".\nTranslate "攻撃力" as "Attack".\nTranslate "回避率" as "Evasion".\nTranslate "最大HP" as "Max HP".\nTranslate "経験値" as "EXP".\n Translate "購入する" as "Buy"'
|
||||
|
||||
# Title
|
||||
response = translateGPT(data['gameTitle'], ' Reply with the English translation of the game title name', False)
|
||||
|
|
@ -1427,11 +1489,11 @@ def subVars(jaString):
|
|||
|
||||
# Icons
|
||||
count = 0
|
||||
iconList = re.findall(r'[\\]+[iI]\[[0-9]+\]', jaString)
|
||||
iconList = re.findall(r'[\\]+[iIkKwW]+\[[0-9]+\]', jaString)
|
||||
iconList = set(iconList)
|
||||
if len(iconList) != 0:
|
||||
for icon in iconList:
|
||||
jaString = jaString.replace(icon, '<I' + str(count) + '>')
|
||||
jaString = jaString.replace(icon, '[Icon' + str(count) + ']')
|
||||
count += 1
|
||||
|
||||
# Colors
|
||||
|
|
@ -1440,7 +1502,7 @@ def subVars(jaString):
|
|||
colorList = set(colorList)
|
||||
if len(colorList) != 0:
|
||||
for color in colorList:
|
||||
jaString = jaString.replace(color, '<C' + str(count) + '>')
|
||||
jaString = jaString.replace(color, '[Color' + str(count) + ']')
|
||||
count += 1
|
||||
|
||||
# Names
|
||||
|
|
@ -1449,7 +1511,7 @@ def subVars(jaString):
|
|||
nameList = set(nameList)
|
||||
if len(nameList) != 0:
|
||||
for name in nameList:
|
||||
jaString = jaString.replace(name, '<N' + str(count) + '>')
|
||||
jaString = jaString.replace(name, '[Name' + str(count) + ']')
|
||||
count += 1
|
||||
|
||||
# Variables
|
||||
|
|
@ -1458,7 +1520,7 @@ def subVars(jaString):
|
|||
varList = set(varList)
|
||||
if len(varList) != 0:
|
||||
for var in varList:
|
||||
jaString = jaString.replace(var, '<V' + str(count) + '>')
|
||||
jaString = jaString.replace(var, '[Var' + str(count) + ']')
|
||||
count += 1
|
||||
|
||||
# Put all lists in list and return
|
||||
|
|
@ -1467,7 +1529,7 @@ def subVars(jaString):
|
|||
|
||||
def resubVars(translatedText, allList):
|
||||
# Fix Spacing and ChatGPT Nonsense
|
||||
matchList = re.findall(r'<\s?.+?\s?>', translatedText)
|
||||
matchList = re.findall(r'\[\s?.+?\s?\]', translatedText)
|
||||
if len(matchList) > 0:
|
||||
for match in matchList:
|
||||
text = match.replace(' ', '')
|
||||
|
|
@ -1477,28 +1539,28 @@ def resubVars(translatedText, allList):
|
|||
count = 0
|
||||
if len(allList[0]) != 0:
|
||||
for var in allList[0]:
|
||||
translatedText = translatedText.replace('<I' + str(count) + '>', var)
|
||||
translatedText = translatedText.replace('[Icon' + str(count) + ']', var)
|
||||
count += 1
|
||||
|
||||
# Colors
|
||||
count = 0
|
||||
if len(allList[1]) != 0:
|
||||
for var in allList[1]:
|
||||
translatedText = translatedText.replace('<C' + str(count) + '>', var)
|
||||
translatedText = translatedText.replace('[Color' + str(count) + ']', var)
|
||||
count += 1
|
||||
|
||||
# Names
|
||||
count = 0
|
||||
if len(allList[2]) != 0:
|
||||
for var in allList[2]:
|
||||
translatedText = translatedText.replace('<N' + str(count) + '>', var)
|
||||
translatedText = translatedText.replace('[Name' + str(count) + ']', var)
|
||||
count += 1
|
||||
|
||||
# Vars
|
||||
count = 0
|
||||
if len(allList[3]) != 0:
|
||||
for var in allList[3]:
|
||||
translatedText = translatedText.replace('<V' + str(count) + '>', var)
|
||||
translatedText = translatedText.replace('[Var' + str(count) + ']', var)
|
||||
count += 1
|
||||
|
||||
# Remove Color Variables Spaces
|
||||
|
|
@ -1524,7 +1586,7 @@ def translateGPT(t, history, fullPromptFlag):
|
|||
return(t, 0)
|
||||
|
||||
"""Translate text using GPT"""
|
||||
context = 'Eroge Names Context: Name: セレナ == Serena\nGender: Female,\n\nName: カトリーヌ == Catherine\nGender: Female'
|
||||
context = 'Eroge Names Context: (Name: サクラ == Sakura\nGender: Female,\n\nName: ルリカ == Rurika\nGender: Female,\n\nName: ケンイチ == Kenichi\nGender: Male)'
|
||||
if fullPromptFlag:
|
||||
system = PROMPT
|
||||
user = 'Line to Translate: ' + subbedT
|
||||
|
|
@ -1565,6 +1627,6 @@ def translateGPT(t, history, fullPromptFlag):
|
|||
|
||||
# Return Translation
|
||||
if len(translatedText) > 15 * len(t) or "I'm sorry, but I'm unable to assist with that translation" in translatedText:
|
||||
return [t, response.usage.total_tokens]
|
||||
raise Exception
|
||||
else:
|
||||
return [translatedText, tokens]
|
||||
Loading…
Reference in a new issue