Spaces:
Runtime error
Runtime error
"""Failed attempt to fix "This event loop is already running" in Widows: | |
from platform import platform | |
if platform().lower().startswith("windows"): | |
from install import install | |
try: | |
import nest_asyncio | |
except ModuleNotFoundError: | |
try: | |
install("nest-asyncio") | |
import nest_asyncio | |
except Exception as exc: | |
print(exc) | |
raise SystemExit(1) | |
nest_asyncio.apply() | |
from gevent import monkey | |
monkey.patch_all() | |
# """ | |
# pylint: disable=broad-except | |
# from gevent import monkey | |
# monkey.patch_all() | |
# import nest_asyncio | |
# nest_asyncio.apply() | |
import asyncio | |
from multiprocessing import Process # , freeze_support | |
import gradio as gr | |
import httpx | |
# from deepl_fastapi.run_uvicorn import main | |
# from deepl_fastapi_pw.run_uvicorn_async import main | |
from deepl_fastapi_pw.deepl_server_async import main | |
from logzero import logger | |
# from deepl_scraper_pw.deepl_tr import deepl_tr | |
from split_text import split_text | |
arun = asyncio.get_event_loop().run_until_complete | |
def deepl(text, from_lang, to_lang): | |
"""Translate.""" | |
try: | |
text = str(text).strip() | |
except Exception: | |
text = "" | |
if not text: | |
return "Put something there, man." | |
# "http://127.0.0.1:8000/text/?q=test%20me&to_lang=zh" | |
url = "http://127.0.0.1:8000/text/" | |
url = "http://127.0.0.1:8001/text/" | |
res_tot = "" | |
text_tot = text[:] | |
slash = "_slash_" | |
text_tot = text_tot.replace("/", slash) | |
_ = split_text(text_tot) | |
len_ = len(_) | |
logger.info("Split to %s", len_) | |
for idx, chunk in enumerate(_): | |
logger.info("%s/%s", idx + 1, len_) | |
try: | |
# resp = httpx.get(f"{url}?q={text}&from_lang={from_lang}&to_lang={to_lang}") | |
resp = httpx.post( | |
url, | |
json={ | |
"text": chunk, | |
"from_lang": from_lang, | |
"to_lang": to_lang, | |
}, | |
timeout=90, | |
) | |
resp.raise_for_status() | |
except Exception as exc: | |
logger.error(exc) | |
return str(exc) | |
try: | |
jdata = resp.json() | |
except Exception as exc: | |
logger.error(exc) | |
return str(exc) | |
try: | |
# res = jdata.get("trtext") | |
res = jdata.get("result") | |
except Exception as exc: | |
logger.error(exc) | |
res = str(exc) | |
if res_tot: | |
res_tot = res_tot + "\n" + res | |
else: | |
res_tot = res | |
_ = """ | |
try: | |
# _ = deepl_tr(text, from_lang, to_lang) | |
_ = arun(deepl_tr(text, from_lang, to_lang)) | |
except Exception as exc: | |
logger.error(exc) | |
return str(exc) | |
# """ | |
# return res | |
res_tot = res_tot.replace(slash, "/") | |
return res_tot | |
if __name__ == "__main__": | |
# freeze_support() | |
Process(target=main).start() | |
iface = gr.Interface( | |
fn=deepl, | |
inputs=[ | |
gr.Textbox( | |
placeholder="Paste text here (not limited to 5000 chars)", | |
lines=7, | |
), | |
gr.Textbox(label="from_lang", value="en", lines=1), | |
gr.Textbox(label="to_lang", value="zh", lines=1), | |
], | |
outputs="textarea", | |
allow_flagging="never", | |
) | |
iface.launch() | |