增加日志

This commit is contained in:
xunbu
2025-05-11 12:05:00 +08:00
parent 847e0c6dc5
commit 6f3b02f562
7 changed files with 33 additions and 46 deletions

40
.idea/workspace.xml generated
View File

@@ -6,8 +6,11 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="6b18b44a-df57-4212-a857-9e291ebe5dd2" name="更改" comment=""> <list default="true" id="6b18b44a-df57-4212-a857-9e291ebe5dd2" name="更改" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docutranslate/Agents/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/agents/__init__.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docutranslate/Agents/agent.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/agents/agent.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docutranslate/Agents/markdown_agent.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/agents/markdown_agent.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docutranslate/translater.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/translater.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/docutranslate/translater.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/translater.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pyproject.toml" beforeDir="false" afterPath="$PROJECT_DIR$/pyproject.toml" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -89,7 +92,7 @@
<recent name="C:\Users\jxgm\Desktop\PDFtranslate\pdf" /> <recent name="C:\Users\jxgm\Desktop\PDFtranslate\pdf" />
</key> </key>
</component> </component>
<component name="RunManager" selected="Python.test4"> <component name="RunManager" selected="JavaScript 调试.test2_英文.html">
<configuration default="true" type="DjangoTestsConfigurationType"> <configuration default="true" type="DjangoTestsConfigurationType">
<module name="filetranslate" /> <module name="filetranslate" />
<option name="ENV_FILES" value="" /> <option name="ENV_FILES" value="" />
@@ -114,6 +117,9 @@
<configuration name="output.html" type="JavascriptDebugType" temporary="true" nameIsGenerated="true" uri="http://localhost:63342/filetranslate/tests/output.html" useBuiltInWebServerPort="true"> <configuration name="output.html" type="JavascriptDebugType" temporary="true" nameIsGenerated="true" uri="http://localhost:63342/filetranslate/tests/output.html" useBuiltInWebServerPort="true">
<method v="2" /> <method v="2" />
</configuration> </configuration>
<configuration name="test2_英文.html" type="JavascriptDebugType" temporary="true" nameIsGenerated="true" uri="http://localhost:63342/filetranslate/tests/output/test2_英文.html" useBuiltInWebServerPort="true">
<method v="2" />
</configuration>
<configuration default="true" type="PythonConfigurationType" factoryName="Python"> <configuration default="true" type="PythonConfigurationType" factoryName="Python">
<module name="filetranslate" /> <module name="filetranslate" />
<option name="ENV_FILES" value="" /> <option name="ENV_FILES" value="" />
@@ -160,29 +166,6 @@
<option name="INPUT_FILE" value="" /> <option name="INPUT_FILE" value="" />
<method v="2" /> <method v="2" />
</configuration> </configuration>
<configuration name="test2" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="FileTranslate" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/tests" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tests/test2.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="test3" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true"> <configuration name="test3" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="FileTranslate" /> <module name="FileTranslate" />
<option name="ENV_FILES" value="" /> <option name="ENV_FILES" value="" />
@@ -328,11 +311,11 @@
</configuration> </configuration>
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="JavaScript 调试.test2_英文.html" />
<item itemvalue="Python.test1" />
<item itemvalue="Python.test4" /> <item itemvalue="Python.test4" />
<item itemvalue="JavaScript 调试.output.html" /> <item itemvalue="JavaScript 调试.output.html" />
<item itemvalue="Python.test1" />
<item itemvalue="Python.test3" /> <item itemvalue="Python.test3" />
<item itemvalue="Python.test2" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@@ -388,6 +371,7 @@
<workItem from="1746887311759" duration="14000" /> <workItem from="1746887311759" duration="14000" />
<workItem from="1746894355924" duration="651000" /> <workItem from="1746894355924" duration="651000" />
<workItem from="1746923054682" duration="383000" /> <workItem from="1746923054682" duration="383000" />
<workItem from="1746928498783" duration="4163000" />
</task> </task>
<servers /> <servers />
</component> </component>
@@ -398,7 +382,7 @@
<SUITE FILE_PATH="coverage/filetranslate$test.coverage" NAME="test 覆盖结果" MODIFIED="1746677277745" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" /> <SUITE FILE_PATH="coverage/filetranslate$test.coverage" NAME="test 覆盖结果" MODIFIED="1746677277745" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
<SUITE FILE_PATH="coverage/filetranslate$agent_utils.coverage" NAME="agent_utils 覆盖结果" MODIFIED="1746708534311" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/utils" /> <SUITE FILE_PATH="coverage/filetranslate$agent_utils.coverage" NAME="agent_utils 覆盖结果" MODIFIED="1746708534311" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/utils" />
<SUITE FILE_PATH="coverage/filetranslate$convert.coverage" NAME="convert 覆盖结果" MODIFIED="1746780691113" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/utils" /> <SUITE FILE_PATH="coverage/filetranslate$convert.coverage" NAME="convert 覆盖结果" MODIFIED="1746780691113" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/utils" />
<SUITE FILE_PATH="coverage/filetranslate$test1.coverage" NAME="test1 覆盖结果" MODIFIED="1746884868249" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" /> <SUITE FILE_PATH="coverage/filetranslate$test1.coverage" NAME="test1 覆盖结果" MODIFIED="1746935919416" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
<SUITE FILE_PATH="coverage/PDFtranslate$PDFtranslater__1_.coverage" NAME="PDFtranslater (1) 覆盖结果" MODIFIED="1746633258205" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages" /> <SUITE FILE_PATH="coverage/PDFtranslate$PDFtranslater__1_.coverage" NAME="PDFtranslater (1) 覆盖结果" MODIFIED="1746633258205" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages" />
<SUITE FILE_PATH="coverage/PDFtranslate$convert.coverage" NAME="convert 覆盖结果" MODIFIED="1746596984213" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" /> <SUITE FILE_PATH="coverage/PDFtranslate$convert.coverage" NAME="convert 覆盖结果" MODIFIED="1746596984213" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" />
<SUITE FILE_PATH="coverage/PDFtranslate$agent_utils.coverage" NAME="agent_utils 覆盖结果" MODIFIED="1746617703678" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" /> <SUITE FILE_PATH="coverage/PDFtranslate$agent_utils.coverage" NAME="agent_utils 覆盖结果" MODIFIED="1746617703678" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" />

View File

@@ -91,7 +91,7 @@ translater.translate_file("<文件路径>", to_lang="中文",refine=True)
```python ```python
from docutranslate import FileTranslater from docutranslate import FileTranslater
from docutranslate.Agents import MDRefineAgent, MDTranslateAgent from docutranslate.agents import MDRefineAgent, MDTranslateAgent
translater = FileTranslater() translater = FileTranslater()

View File

@@ -5,6 +5,8 @@ from typing import TypedDict
import httpx import httpx
from docutranslate.logger import translater_logger
class AgentArgs(TypedDict, total=False): class AgentArgs(TypedDict, total=False):
baseurl: str baseurl: str
@@ -97,7 +99,7 @@ class Agent:
) )
nonlocal count nonlocal count
count += 1 count += 1
print(f"进行到{count}/{total}") translater_logger.info(f"进行到{count}/{total}")
return result return result
for p_text in prompts: for p_text in prompts:

View File

@@ -5,12 +5,12 @@ from typing import Literal
import markdown2 import markdown2
from docling.datamodel.document import DocumentStream from docling.datamodel.document import DocumentStream
from docutranslate.Agents import Agent, AgentArgs from docutranslate.agents import Agent, AgentArgs
from docutranslate.Agents import MDRefineAgent, MDTranslateAgent from docutranslate.agents import MDRefineAgent, MDTranslateAgent
from docutranslate.utils.convert import file2markdown_embed_images from docutranslate.utils.convert import file2markdown_embed_images
from docutranslate.utils.markdown_splitter import split_markdown_text from docutranslate.utils.markdown_splitter import split_markdown_text
from docutranslate.utils.markdown_utils import uris2placeholder, placeholder2_uris, MaskDict from docutranslate.utils.markdown_utils import uris2placeholder, placeholder2_uris, MaskDict
from docutranslate.logger import translater_logger
# import mdformat # import mdformat
@@ -58,7 +58,7 @@ class FileTranslater:
def _split_markdown_into_chunks(self) -> list[str]: def _split_markdown_into_chunks(self) -> list[str]:
chunks: list[str] = split_markdown_text(self.markdown, self.chunksize) chunks: list[str] = split_markdown_text(self.markdown, self.chunksize)
print(f"markdown分为{len(chunks)}") translater_logger.info(f"markdown分为{len(chunks)}")
return chunks return chunks
def default_agent_params(self) -> AgentArgs: def default_agent_params(self) -> AgentArgs:
@@ -81,9 +81,9 @@ class FileTranslater:
if file_path.suffix == ".md": if file_path.suffix == ".md":
self.markdown = file.decode() self.markdown = file.decode()
else: else:
print(f"正在将{file_path.resolve().name}转换为markdown") translater_logger.info(f"正在将{file_path.resolve().name}转换为markdown")
self.markdown = file2markdown_embed_images(ds, formula, code, artifacts_path=self.docling_artifact) self.markdown = file2markdown_embed_images(ds, formula, code, artifacts_path=self.docling_artifact)
print("已转换为markdown") translater_logger.info(f"已转换为markdown")
if refine: if refine:
self.refine_markdown_by_agent(refine_agent) self.refine_markdown_by_agent(refine_agent)
if save: if save:
@@ -98,19 +98,20 @@ class FileTranslater:
refine_agent: Agent | None = None): refine_agent: Agent | None = None):
if file_path is None: if file_path is None:
if self.file_path is None: if self.file_path is None:
translater_logger.debug("未设置文件路径")
raise Exception("未设置文件路径") raise Exception("未设置文件路径")
file_path = self.file_path file_path = self.file_path
if isinstance(file_path, str): if isinstance(file_path, str):
file_path = Path(file_path) file_path = Path(file_path)
print(f"读取文件:{file_path.name}") translater_logger.info(f"读取文件:{file_path.name}")
# 如果是markdown直接读取 # 如果是markdown直接读取
if file_path.suffix == ".md": if file_path.suffix == ".md":
with open(file_path, "r") as f: with open(file_path, "r") as f:
self.markdown = f.read() self.markdown = f.read()
else: else:
print(f"正在将{file_path.resolve().name}转换为markdown") translater_logger.info(f"正在将{file_path.resolve().name}转换为markdown")
self.markdown = file2markdown_embed_images(file_path, formula, code, artifacts_path=self.docling_artifact) self.markdown = file2markdown_embed_images(file_path, formula, code, artifacts_path=self.docling_artifact)
print("已转换为markdown") translater_logger.info("已转换为markdown")
if refine: if refine:
self.refine_markdown_by_agent(refine_agent) self.refine_markdown_by_agent(refine_agent)
if save: if save:
@@ -121,7 +122,7 @@ class FileTranslater:
return self return self
def refine_markdown_by_agent(self, refine_agent: Agent | None = None) -> str: def refine_markdown_by_agent(self, refine_agent: Agent | None = None) -> str:
print("正在修正markdown") translater_logger.info("正在修正markdown")
self._mask_uris_in_markdown() self._mask_uris_in_markdown()
chuncks = self._split_markdown_into_chunks() chuncks = self._split_markdown_into_chunks()
if refine_agent is None: if refine_agent is None:
@@ -129,11 +130,11 @@ class FileTranslater:
result: list[str] = refine_agent.send_prompts(chuncks) result: list[str] = refine_agent.send_prompts(chuncks)
self.markdown = "\n".join(result) self.markdown = "\n".join(result)
self._unmask_uris_in_markdown() self._unmask_uris_in_markdown()
print("markdown已修正") translater_logger.info("markdown已修正")
return self.markdown return self.markdown
def translate_markdown_by_agent(self, translate_agent: Agent | None = None, to_lang="中文"): def translate_markdown_by_agent(self, translate_agent: Agent | None = None, to_lang="中文"):
print("正在翻译markdown") translater_logger.info("正在翻译markdown")
self._mask_uris_in_markdown() self._mask_uris_in_markdown()
chuncks = self._split_markdown_into_chunks() chuncks = self._split_markdown_into_chunks()
if translate_agent is None: if translate_agent is None:
@@ -141,7 +142,7 @@ class FileTranslater:
result: list[str] = translate_agent.send_prompts(chuncks) result: list[str] = translate_agent.send_prompts(chuncks)
self.markdown = "\n".join(result) self.markdown = "\n".join(result)
self._unmask_uris_in_markdown() self._unmask_uris_in_markdown()
print("翻译完成") translater_logger.info("翻译完成")
return self.markdown return self.markdown
def save_as_markdown(self, filename: str | Path | None = None, output_dir: str | Path = "./output"): def save_as_markdown(self, filename: str | Path | None = None, output_dir: str | Path = "./output"):
@@ -161,7 +162,7 @@ class FileTranslater:
self._markdown_format() self._markdown_format()
with open(full_name, "w") as file: with open(full_name, "w") as file:
file.write(self.markdown) file.write(self.markdown)
print(f"文件已写入{full_name.resolve()}") translater_logger.info(f"文件已写入{full_name.resolve()}")
return self return self
def export_to_markdown(self): def export_to_markdown(self):
@@ -185,7 +186,7 @@ class FileTranslater:
html = self.export_to_html(str(filename.resolve().stem)) html = self.export_to_html(str(filename.resolve().stem))
with open(full_name, "w") as file: with open(full_name, "w") as file:
file.write(html) file.write(html)
print(f"文件已写入{full_name.resolve()}") translater_logger.info(f"文件已写入{full_name.resolve()}")
return self return self
def export_to_html(self, title="title") -> str: def export_to_html(self, title="title") -> str:

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "docutranslate" name = "docutranslate"
version = "0.1.7.dev" version = "0.1.7"
description = "文件翻译工具" description = "文件翻译工具"
readme = "README.md" readme = "README.md"
requires-python = ">=3.10" requires-python = ">=3.10"