|
42 | 42 | ## ✨ 项目特性 |
43 | 43 |
|
44 | 44 | - **优雅的图形用户界面 (GUI)**: 提供一个现代化、直观的图形界面,让搜索、选择、同步的全过程一目了然。所有交互(如处理重复项、翻译新标签)都在可视化的对话框中完成,操作体验流畅。 |
45 | | -- **双模式操作:GUI 与 CLI**: |
| 45 | +- **多模式操作:GUI、CLI 与批量处理**: |
46 | 46 | - **GUI 模式 (推荐)**: 为绝大多数用户提供开箱即用的图形化体验。 |
47 | 47 | - **CLI 模式**: 保留了功能完整的命令行界面,适合高级用户或自动化脚本集成。 |
| 48 | + - **批量模式**: 提供独立的批量处理工具,用于定期维护和刷新数据库。 |
48 | 49 | - **多源数据聚合**: 同时从 DLsite, Fanza, GGBases, Bangumi 等多个权威平台获取游戏、品牌和角色信息。 |
49 | 50 | - **全周期信息同步**: 覆盖从游戏基本信息、发售日期、价格,到剧本、原画、声优、标签等全方位数据。 |
50 | 51 | - **智能数据处理**: |
@@ -92,17 +93,30 @@ python main.py |
92 | 93 | - **手动模式**: 在关键词后追加 ` -m`,这会在需要时让你手动选择,而不是自动选择最优结果。 |
93 | 94 | - **退出**: 输入 `q` 或直接按 Ctrl+C。 |
94 | 95 |
|
| 96 | +### 方式三:使用批量更新工具 |
| 97 | + |
| 98 | +对于需要定期维护、保持数据与最新信息同步的用户,项目提供了一个强大的批量更新工具 `batch_updater.py`。 |
| 99 | + |
| 100 | +```bash |
| 101 | +python batch_updater.py |
| 102 | +``` |
| 103 | + |
| 104 | +**主要用途**: |
| 105 | +- 遍历你的 Notion 数据库(可选择游戏、厂商或角色库)。 |
| 106 | +- 从 Bangumi 重新获取每个条目的最新数据。 |
| 107 | +- 将最新信息更新回 Notion,用于批量刷新和补全数据。 |
| 108 | + |
| 109 | +> 💡 **架构说明**: 本项目之所以能支持多种操作模式,得益于其核心的 **“交互提供者” (Interaction Provider)** 设计模式。该模式将核心业务逻辑与用户界面完全解耦,为 GUI 和 CLI 提供了不同的交互实现,从而保证了代码的可维护性和未来的可扩展性。 |
| 110 | +
|
95 | 111 | ## 🏗️ 技术架构 |
96 | 112 |
|
97 | | -本项目最近经历了一次重大的架构重构,引入了 **交互提供者 (Interaction Provider)** 设计模式,将核心业务逻辑与用户界面完全解耦。 |
| 113 | +本项目的核心设计思想是将 **业务逻辑** 与 **用户界面** 分离。 |
98 | 114 |
|
99 | | -- **核心逻辑 (`core/`)**: 包含所有的数据抓取、处理和同步逻辑。这些模块是纯粹的业务层,不依赖于任何特定的UI实现。 |
100 | | -- **交互提供者 (`core/interaction.py`)**: 定义了一个抽象接口,用于处理所有需要用户输入的场景(例如,选择、确认、文本输入)。 |
101 | | -- **UI 实现**: |
102 | | - - **GUI (`run_gui.py`, `utils/gui_bridge.py`)**: `GuiInteractionProvider` 实现了交互接口,通过 Qt 信号和槽机制将后台逻辑的请求转化为图形化的对话框。 |
103 | | - - **CLI (`main.py`)**: 命令行界面通过一个简单的 `CliInteractionProvider` 实现,将交互请求转化为控制台的 `input()` 提示。 |
| 115 | +- **核心逻辑 (`core/`)**: 包含所有的数据抓取、处理和同步逻辑,与具体 UI 实现无关。 |
| 116 | +- **交互接口 (`core/interaction.py`)**: 定义了业务逻辑与 UI 之间通信的抽象“契约”。 |
| 117 | +- **UI 实现 (GUI/CLI)**: 分别实现了交互接口,将后台请求转化为用户看得见的图形界面或命令行提示。 |
104 | 118 |
|
105 | | -这种架构使得项目具有极高的可维护性和可扩展性。未来可以轻松地为其添加新的前端,例如 Web 界面,而无需改动任何核心业务代码。 |
| 119 | +这种解耦设计使得项目可以轻松地适配未来可能出现的新界面(如 Web),而无需改动核心代码。更详细的架构说明,请参考项目内的 `GEMINI.md` 系列文档。 |
106 | 120 |
|
107 | 121 | ## 📂 项目结构 |
108 | 122 |
|
@@ -139,7 +153,7 @@ Otaku-Sync/ |
139 | 153 | - **PySide6**: 用于构建图形用户界面。 |
140 | 154 | - **Notion API**: 用于与 Notion 数据库进行交互。 |
141 | 155 | - **Selenium**: 用于模拟浏览器操作,抓取动态加载的网页内容。 |
142 | | -- **aiohttp**: 用于执行异步 HTTP 请求。 |
| 156 | +- **httpx**: 用于执行异步 HTTP 请求。 |
143 | 157 |
|
144 | 158 | 你可以在 `requirements.txt` 文件中查看完整的依赖列表。 |
145 | 159 |
|
|
0 commit comments