- Refactor codebase into src/ (preprocessing, translation, assembly) - Add pipeline/ scripts for individual stages - Externalize configuration to config/config.yaml - Fix Cover Image preservation - Update documentation and manuals
79 lines
2.7 KiB
Python
79 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
EPUB 翻译器使用示例
|
|
演示如何使用程序进行翻译
|
|
"""
|
|
|
|
import asyncio
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# 添加 src 目录到路径
|
|
sys.path.insert(0, str(Path(__file__).parent / "src"))
|
|
|
|
from src.translator import EPUBTranslator
|
|
from src.utils import load_config, setup_logging
|
|
from rich.console import Console
|
|
|
|
|
|
async def example_usage():
|
|
"""使用示例"""
|
|
console = Console()
|
|
|
|
console.print("[bold blue]EPUB 翻译器使用示例[/bold blue]")
|
|
|
|
try:
|
|
# 加载配置
|
|
config = load_config('config/config.json')
|
|
setup_logging(config)
|
|
|
|
# 初始化翻译器
|
|
translator = EPUBTranslator(config)
|
|
|
|
# 示例 EPUB 文件路径(请替换为实际文件)
|
|
epub_file = "sample_book.epub"
|
|
|
|
if not Path(epub_file).exists():
|
|
console.print(f"[yellow]示例文件 {epub_file} 不存在[/yellow]")
|
|
console.print("请将你的 EPUB 文件放在当前目录并重命名为 sample_book.epub")
|
|
return
|
|
|
|
# 1. 估算翻译成本
|
|
console.print("\n[cyan]1. 估算翻译成本...[/cyan]")
|
|
estimate = await translator.get_translation_estimate(epub_file)
|
|
|
|
if estimate:
|
|
console.print(f"总段落数: {estimate['total_paragraphs']}")
|
|
console.print(f"估算时间: {estimate['estimated_time_minutes']:.1f} 分钟")
|
|
console.print(f"估算请求数: {estimate['estimated_requests']}")
|
|
|
|
# 2. 测试翻译
|
|
console.print("\n[cyan]2. 运行测试翻译...[/cyan]")
|
|
test_result = await translator.translate_epub(epub_file, test_mode=True)
|
|
|
|
if test_result.get('status') == 'success':
|
|
console.print("[green]测试翻译成功![/green]")
|
|
else:
|
|
console.print("[red]测试翻译失败[/red]")
|
|
return
|
|
|
|
# 3. 询问是否继续完整翻译
|
|
console.print("\n[yellow]是否继续完整翻译?这可能需要一些时间和费用。[/yellow]")
|
|
response = input("输入 'yes' 继续,其他任意键退出: ")
|
|
|
|
if response.lower() == 'yes':
|
|
console.print("\n[cyan]3. 开始完整翻译...[/cyan]")
|
|
output_file = await translator.translate_epub(epub_file, test_mode=False)
|
|
console.print(f"[green]翻译完成!输出文件: {output_file}[/green]")
|
|
else:
|
|
console.print("[yellow]已取消完整翻译[/yellow]")
|
|
|
|
except Exception as e:
|
|
console.print(f"[red]示例运行失败: {e}[/red]")
|
|
|
|
finally:
|
|
await translator.llm_client.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(example_usage()) |