mvmz | speakers on the same line fix

This commit is contained in:
no 2025-11-24 00:42:44 +02:00
parent d050ae49a8
commit e3299fe4ef

View file

@ -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 = ""