修复编码问题、允许修改port

This commit is contained in:
xunbu
2025-07-04 19:15:21 +08:00
parent 13abf292a3
commit c3e7e0540f
6 changed files with 38 additions and 27 deletions

View File

@@ -1,4 +1,4 @@
__version__="0.2.39"
__version__="0.2.40"

View File

@@ -1,6 +1,7 @@
import asyncio
import io
import logging
import os
import socket
import time
from contextlib import asynccontextmanager, closing
@@ -482,8 +483,12 @@ def find_free_port(start_port):
port += 1 # 端口被占用,尝试下一个端口
def run_app(port=8010):
initial_port = port
def run_app(port:int|None=None):
if port:
initial_port = port
else:
env_port=os.environ.get("DOCUTRANSLATE_PORT")
initial_port=int(env_port) if env_port else 8010
try:
# 首先检查初始端口是否可用
port = find_free_port(initial_port)
@@ -491,6 +496,7 @@ def run_app(port=8010):
print(f"端口 {initial_port} 被占用,将使用端口 {port} 代替")
print(f"正在启动 DocuTranslate WebUI 版本号:{__version__}")
print(f"请用浏览器访问 http://127.0.0.1:{port} (部分终端可以使用ctrl+左键点击网址打开)")
print(f"可以设置环境变量`DOCUTRANSLATE_PORT=<port>`改变默认服务端口号")
uvicorn.run(app, host="127.0.0.1", port=port, workers=1)
except Exception as e:
print(f"启动失败: {e}")

View File

@@ -16,7 +16,7 @@ def main():
parser.add_argument(
"-p", "--port",
type=int, # 指定参数类型(例如整数)
default=8010, # 默认值(可选)
default=None, # 默认值(可选)
help="指定端口号默认8010"
)
@@ -51,15 +51,8 @@ def main():
from docutranslate import __version__
print(__version__)
else:
print("提示:若要启动 DocuTranslate 图形界面,请使用 -i 或 --interactive 选项。")
print("\n用法示例:")
print(" docutranslate -i")
print(" docutranslate --interactive")
print("\n如需查看所有可用选项,请运行:")
print(" docutranslate --help")
# 或者直接显示帮助信息:
# parser.print_help()
sys.exit(1) # 以错误码退出,表明命令未按预期执行
parser.print_help()
sys.exit(1)
if __name__ == "__main__":

View File

@@ -301,7 +301,7 @@ class FileTranslater:
if embeded:
output_dir.mkdir(parents=True, exist_ok=True)
full_name = output_dir / filename.name
with open(full_name, "w") as file:
with open(full_name, "w", encoding="utf-8") as file:
file.write(self.export_to_markdown())
translater_logger.info(f"文件已写入{full_name.resolve()}")
else:
@@ -336,7 +336,7 @@ class FileTranslater:
output_dir.mkdir(parents=True, exist_ok=True)
full_name = output_dir / filename
html_content = self.export_to_html(title=str(full_name.resolve().stem))
with open(full_name, "w") as file:
with open(full_name, "w",encoding="utf-8") as file:
file.write(html_content)
translater_logger.info(f"文件已写入{full_name.resolve()}")
return self

View File

@@ -196,7 +196,7 @@ def unembed_base64_images_to_zip(markdown:str,markdown_name:str,image_folder_nam
f.write(base64.b64decode(b64data))
return f"![{match.group(1)}]({url})"
modified_md_content = re.sub(pattern, unembed_base64_images,markdown)
with open(os.path.join(temp_dir,f"{markdown_name}"),"w") as f:
with open(os.path.join(temp_dir,f"{markdown_name}"),"w",encoding="utf-8") as f:
f.write(modified_md_content)
zip_buffer=io.BytesIO()
folder_path=Path(temp_dir)