diff --git a/docutranslate/app.py b/docutranslate/app.py index 66c8f06..4e3808b 100644 --- a/docutranslate/app.py +++ b/docutranslate/app.py @@ -141,14 +141,14 @@ async def _perform_translation(task_id: str, params: Dict[str, Any], file_conten refine=params['refine_markdown'], save=False ) md_content = ft.export_to_markdown() - md_zip_content = ft.export_to_unembed_markdown() + md_zip_content = await ft.export_to_unembed_markdown_async() try: await httpx_client.head("https://s4.zstatic.net/ajax/libs/KaTeX/0.16.9/contrib/auto-render.min.js", timeout=3) - html_content = ft.export_to_html(title=task_state["original_filename_stem"], cdn=True) + html_content = await ft.export_to_html_async(title=task_state["original_filename_stem"], cdn=True) except (httpx.TimeoutException, httpx.RequestError): task_logger.info("CDN连接失败,使用本地JS进行渲染。") - html_content = ft.export_to_html(title=task_state["original_filename_stem"], cdn=False) + html_content = await ft.export_to_html_async(title=task_state["original_filename_stem"], cdn=False) end_time = time.time() duration = end_time - task_state["task_start_time"] diff --git a/docutranslate/converter/converter_mineru.py b/docutranslate/converter/converter_mineru.py index 2207b4b..8bb56d7 100644 --- a/docutranslate/converter/converter_mineru.py +++ b/docutranslate/converter/converter_mineru.py @@ -120,7 +120,7 @@ class ConverterMineru(Converter): time1 = time.time() batch_id = await self.upload_async(document) file_url = await self.get_file_url_async(batch_id) - result = await get_md_from_zip_url_with_inline_images_async(file_url) + result = await get_md_from_zip_url_with_inline_images_async(zip_url=file_url) self.logger.info(f"已转换为markdown,耗时{time.time() - time1}秒") return result @@ -194,7 +194,7 @@ async def get_md_from_zip_url_with_inline_images_async( response = await client_async.get(zip_url) # 增加超时 response.raise_for_status() print("ZIP文件下载完成。") - return await asyncio.to_thread(embed_inline_image_from_zip(response.content, filename_in_zip=filename_in_zip, encoding=encoding)) + return await asyncio.to_thread(embed_inline_image_from_zip,response.content, filename_in_zip=filename_in_zip, encoding=encoding) except httpx.HTTPStatusError as e: diff --git a/docutranslate/translater.py b/docutranslate/translater.py index 7ff5334..9bc9b1c 100644 --- a/docutranslate/translater.py +++ b/docutranslate/translater.py @@ -1,3 +1,4 @@ +import asyncio import html import io import logging @@ -330,6 +331,9 @@ class FileTranslater: self._markdown_format() return unembed_base64_images_to_zip(self.markdown, markdown_name=filename.name) + async def export_to_unembed_markdown_async(self, filename: str | Path | None = None) -> bytes: + return await asyncio.to_thread(self.export_to_unembed_markdown,filename) + def save_as_html(self, filename: str | Path | None = None, output_dir: str | Path = "./output"): if isinstance(filename, str): filename = Path(filename) @@ -403,7 +407,8 @@ class FileTranslater: mermaid=mermaid, ) return render - + async def export_to_html_async(self, title="title", cdn=True): + return await asyncio.to_thread(self.export_to_html,title,cdn) def translate_file(self, file_path: Path | str | None = None, to_lang="中文", output_dir="./output", formula=True, code=True, output_format: Literal["markdown", "html"] = "markdown", refine=False,