mvmz | speakers on the same line fix
This commit is contained in:
parent
d050ae49a8
commit
e3299fe4ef
1 changed files with 49 additions and 29 deletions
|
|
@ -1757,43 +1757,57 @@ def searchCodes(page, pbar, jobList, filename):
|
||||||
speakerList = re.findall(r".+", jaString)
|
speakerList = re.findall(r".+", jaString)
|
||||||
|
|
||||||
# Replace Speaker
|
# Replace Speaker
|
||||||
if len(speakerList) != 0 and codeList[i + 1]["code"] in [401, 405, -1]:
|
if len(speakerList) != 0:
|
||||||
# Single
|
# Check if speaker+dialogue are on same line (【speaker】dialogue)
|
||||||
if len(speakerList) == 1:
|
sameLineMatch = re.match(r"^\s*【([^】]+)】(.+)", jaString)
|
||||||
|
|
||||||
|
if sameLineMatch and len(speakerList) == 1:
|
||||||
|
# Translate speaker
|
||||||
response = getSpeaker(speakerList[0])
|
response = getSpeaker(speakerList[0])
|
||||||
speaker = response[0]
|
speaker = response[0]
|
||||||
totalTokens[0] += response[1][0]
|
totalTokens[0] += response[1][0]
|
||||||
totalTokens[1] += response[1][1]
|
totalTokens[1] += response[1][1]
|
||||||
|
# Remove speaker bracket from jaString, let dialogue get translated
|
||||||
# Multiple (Brackets)
|
jaString = sameLineMatch.group(2)
|
||||||
elif len(speakerList) > 1:
|
# Don't skip to next line - continue with current line
|
||||||
jaStringUpdated = jaString
|
elif codeList[i + 1]["code"] in [401, 405, -1]:
|
||||||
for idx, sp in enumerate(speakerList):
|
# Original behavior: speaker on its own line, dialogue on next line
|
||||||
response = getSpeaker(sp)
|
# Single
|
||||||
tled = response[0]
|
if len(speakerList) == 1:
|
||||||
|
response = getSpeaker(speakerList[0])
|
||||||
|
speaker = response[0]
|
||||||
totalTokens[0] += response[1][0]
|
totalTokens[0] += response[1][0]
|
||||||
totalTokens[1] += response[1][1]
|
totalTokens[1] += response[1][1]
|
||||||
if not setData:
|
|
||||||
pattern = r"【\s*" + re.escape(sp) + r"\s*】"
|
|
||||||
jaStringUpdated = re.sub(pattern, lambda m: f"【{tled}】", jaStringUpdated)
|
|
||||||
# Back-compat: set 'speaker' to the first translated name
|
|
||||||
if idx == 0:
|
|
||||||
speaker = tled
|
|
||||||
|
|
||||||
# Set Data
|
# Multiple (Brackets)
|
||||||
if not setData and len(speakerList) > 1:
|
elif len(speakerList) > 1:
|
||||||
codeList[i]["parameters"][0] = nametag + jaStringUpdated
|
jaStringUpdated = jaString
|
||||||
elif not setData and len(speakerList) == 1:
|
for idx, sp in enumerate(speakerList):
|
||||||
codeList[i]["parameters"][0] = nametag + jaString.replace(speakerList[0], speaker)
|
response = getSpeaker(sp)
|
||||||
nametag = ""
|
tled = response[0]
|
||||||
|
totalTokens[0] += response[1][0]
|
||||||
|
totalTokens[1] += response[1][1]
|
||||||
|
if not setData:
|
||||||
|
pattern = r"【\s*" + re.escape(sp) + r"\s*】"
|
||||||
|
jaStringUpdated = re.sub(pattern, lambda m: f"【{tled}】", jaStringUpdated)
|
||||||
|
# Back-compat: set 'speaker' to the first translated name
|
||||||
|
if idx == 0:
|
||||||
|
speaker = tled
|
||||||
|
|
||||||
# Iterate to next string
|
# Set Data
|
||||||
i += 1
|
if not setData and len(speakerList) > 1:
|
||||||
j = i
|
codeList[i]["parameters"][0] = nametag + jaStringUpdated
|
||||||
while codeList[i]["code"] in [-1]:
|
elif not setData and len(speakerList) == 1:
|
||||||
|
codeList[i]["parameters"][0] = nametag + jaString.replace(speakerList[0], speaker)
|
||||||
|
nametag = ""
|
||||||
|
|
||||||
|
# Iterate to next string
|
||||||
i += 1
|
i += 1
|
||||||
j = i
|
j = i
|
||||||
jaString = codeList[i]["parameters"][0]
|
while codeList[i]["code"] in [-1]:
|
||||||
|
i += 1
|
||||||
|
j = i
|
||||||
|
jaString = codeList[i]["parameters"][0]
|
||||||
|
|
||||||
# Check if there is text to translate
|
# Check if there is text to translate
|
||||||
if not re.search(r"\w+", jaString):
|
if not re.search(r"\w+", jaString):
|
||||||
|
|
@ -1937,9 +1951,11 @@ def searchCodes(page, pbar, jobList, filename):
|
||||||
if len(list401) > 0:
|
if len(list401) > 0:
|
||||||
translatedText = list401[0]
|
translatedText = list401[0]
|
||||||
|
|
||||||
# Remove speaker
|
# Remove speaker and save bracket format if present
|
||||||
match = re.search(r'(^\[.+?\]\s?[|:]\s?)', translatedText)
|
speakerBracket = ""
|
||||||
|
match = re.search(r'(^\[(.+?)\]\s?[|:]\s?)', translatedText)
|
||||||
if match:
|
if match:
|
||||||
|
speakerBracket = f"【{match.group(2)}】"
|
||||||
translatedText = translatedText.replace(match.group(1), "")
|
translatedText = translatedText.replace(match.group(1), "")
|
||||||
|
|
||||||
# Fix '- '
|
# Fix '- '
|
||||||
|
|
@ -1975,6 +1991,10 @@ def searchCodes(page, pbar, jobList, filename):
|
||||||
translatedText = translatedText.replace("\\px[200]", "")
|
translatedText = translatedText.replace("\\px[200]", "")
|
||||||
translatedText = translatedText.replace("\n", "\n\\px[200]")
|
translatedText = translatedText.replace("\n", "\n\\px[200]")
|
||||||
|
|
||||||
|
# Add speaker bracket back if it was on same line
|
||||||
|
if speakerBracket:
|
||||||
|
translatedText = speakerBracket + translatedText
|
||||||
|
|
||||||
# Add Nametag Back In
|
# Add Nametag Back In
|
||||||
translatedText = nametag + translatedText
|
translatedText = nametag + translatedText
|
||||||
nametag = ""
|
nametag = ""
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue