control whether to allow sharing translation results with GPTAC academic cloud.

This commit is contained in:
binary-husky
2024-10-18 18:05:50 +00:00
parent a9c86a7fb8
commit 50a1ea83ef
4 changed files with 104 additions and 41 deletions

View File

@@ -3,7 +3,7 @@ from toolbox import CatchException, report_exception, update_ui_lastest_msg, zip
from functools import partial
from loguru import logger
import glob, os, requests, time, json, tarfile
import glob, os, requests, time, json, tarfile, threading
pj = os.path.join
ARXIV_CACHE_DIR = get_conf("ARXIV_CACHE_DIR")
@@ -338,11 +338,17 @@ def Latex翻译中文并重新编译PDF(txt, llm_kwargs, plugin_kwargs, chatbot,
# <-------------- more requirements ------------->
if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg")
more_req = plugin_kwargs.get("advanced_arg", "")
no_cache = more_req.startswith("--no-cache")
if no_cache: more_req.lstrip("--no-cache")
no_cache = ("--no-cache" in more_req)
if no_cache: more_req = more_req.replace("--no-cache", "").strip()
allow_gptac_cloud_io = ("--allow-cloudio" in more_req) # 从云端下载翻译结果,以及上传翻译结果到云端
if allow_gptac_cloud_io: more_req = more_req.replace("--allow-cloudio", "").strip()
allow_cache = not no_cache
_switch_prompt_ = partial(switch_prompt, more_requirement=more_req)
# <-------------- check deps ------------->
try:
import glob, os, time, subprocess
@@ -364,29 +370,25 @@ def Latex翻译中文并重新编译PDF(txt, llm_kwargs, plugin_kwargs, chatbot,
chatbot=chatbot, history=history)
return
# allow_cloud_io = True
# arxiv_id = "2203.01927"
# if allow_cloud_io and arxiv_id:
# # 如果用户允许我们将arxiv论文PDF上传到云端
# for file_path in chatbot._cookies.get("files_to_promote", []):
# if file_path.endswith('comparison.pdf'):
# def compute_hash(file_path):
# return map_file_to_sha256(file_path)
# with open(file_path, 'rb') as f:
# import requests
# url = 'https://cloud-2.agent-matrix.com/upload'
# files = {'file': (file_path, f, 'application/octet-stream')}
# data = {
# 'arxiv_id': arxiv_id,
# 'file_hash': compute_hash(file_path),
# }
# resp = requests.get(url=url, files=files, data=data, timeout=10)
if txt.endswith('.pdf'):
report_exception(chatbot, history, a=f"解析项目: {txt}", b=f"发现已经存在翻译好的PDF文档")
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
return
# #################################################################
if allow_gptac_cloud_io and arxiv_id:
# 访问 GPTAC学术云查询云端是否存在该论文的翻译版本
from crazy_functions.latex_fns.latex_actions import check_gptac_cloud
success, downloaded = check_gptac_cloud(arxiv_id, chatbot)
if success:
chatbot.append([
f"检测到GPTAC云端存在翻译版本, 如果不满意翻译结果, 请禁用云端分享, 然后重新执行。",
None
])
yield from update_ui(chatbot=chatbot, history=history)
return
#################################################################
if os.path.exists(txt):
project_folder = txt
else:
@@ -424,24 +426,11 @@ def Latex翻译中文并重新编译PDF(txt, llm_kwargs, plugin_kwargs, chatbot,
# <-------------- zip PDF ------------->
zip_res = zip_result(project_folder)
if success:
allow_cloud_io = True
arxiv_id = "2203.01927"
if allow_cloud_io and arxiv_id:
# 如果用户允许我们将arxiv论文PDF上传到云端
for file_path in chatbot._cookies.get("files_to_promote", []):
if file_path.endswith('translate_zh.pdf') or file_path.endswith('comparison.pdf'):
def compute_hash(file_path):
return map_file_to_sha256(file_path)
with open(file_path, 'rb') as f:
import requests
url = 'https://cloud-2.agent-matrix.com/upload'
files = {'file': (file_path, f, 'application/octet-stream')}
data = {
'arxiv_id': arxiv_id,
'file_hash': compute_hash(file_path),
}
resp = requests.post(url=url, files=files, data=data, timeout=10)
if allow_gptac_cloud_io and arxiv_id:
# 如果用户允许我们将翻译好的arxiv论文PDF上传到GPTAC学术云
from crazy_functions.latex_fns.latex_actions import upload_to_gptac_cloud_if_user_allow
threading.Thread(target=upload_to_gptac_cloud_if_user_allow,
args=(chatbot, arxiv_id), daemon=True).start()
chatbot.append((f"成功啦", '请查收结果(压缩包)...'))
yield from update_ui(chatbot=chatbot, history=history)