Improved the issue of Google Translate skipping paragraphs due to connectivity problems. (#275)

This commit is contained in:
Liao Weiheng 2023-05-21 09:19:48 +08:00 committed by GitHub
parent eee2b10718
commit 9ba0dd4b91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -27,7 +27,7 @@ class Google(Base):
def translate(self, text): def translate(self, text):
print(text) print(text)
r = self.session.post( """r = self.session.post(
self.api_url, self.api_url,
headers=self.headers, headers=self.headers,
data=f"q={requests.utils.quote(text)}", data=f"q={requests.utils.quote(text)}",
@ -36,6 +36,24 @@ class Google(Base):
return text return text
t_text = "".join( t_text = "".join(
[sentence.get("trans", "") for sentence in r.json()["sentences"]], [sentence.get("trans", "") for sentence in r.json()["sentences"]],
) )"""
t_text = self._retry_translate(text)
print("[bold green]" + re.sub("\n{3,}", "\n\n", t_text) + "[/bold green]") print("[bold green]" + re.sub("\n{3,}", "\n\n", t_text) + "[/bold green]")
return t_text return t_text
def _retry_translate(self, text, timeout=3):
time = 0
while time <= timeout:
time += 1
r = self.session.post(
self.api_url,
headers=self.headers,
data=f"q={requests.utils.quote(text)}",
timeout=3,
)
if r.ok:
t_text = "".join(
[sentence.get("trans", "") for sentence in r.json()["sentences"]],
)
return t_text
return text