# Wiki Sync Tool - Enhanced Version 一个用于同步和跟踪 MediaWiki 网站变更的 Python 工具,支持双语对比和精确的行号定位。 ## 功能特点 - 🔄 自动同步 MediaWiki 网站的最新更改 - 📝 生成带语法高亮的 HTML diff 文件,清晰展示变更内容 - 💾 保存页面完整内容供离线查阅 - ⏰ 支持增量同步,只获取上次同步后的新变更 - 🔍 支持按时间点或特定页面进行同步 - 📁 自动组织输出文件到时间戳目录 - 🌐 **新增**:自动同步中文翻译版本 - 🎯 **新增**:精确的行号映射,点击英文行自动定位到中文对应行 - 📊 **新增**:生成精美的双语对比网页 - 🎨 **新增**:现代化的UI设计,支持同步滚动和高亮显示 ## 安装 1. 确保你已经安装了 Python 3.6+ 2. 克隆此仓库: ```bash git clone cd wiki-sync-tool ``` 3. 安装依赖: ```bash pip install requests python-dotenv ``` ## 配置 创建一个 `.env` 文件并配置你的 MediaWiki API 地址: ```env # 英文版 Project Diablo 2 Wiki API 地址 WIKI_API_URL_EN=https://wiki.projectdiablo2.com/w/api.php # 中文版 Project Diablo 2 Wiki API 地址 WIKI_API_URL_CN=https://wiki.projectdiablo2.cn/w/api.php ``` 或者复制提供的示例配置文件: ```bash cp .env.example .env ``` ## 使用方法 ### 基本全量同步 同步自上次运行以来的所有更改: ```bash python sync.py --run ``` 首次运行时,会同步过去 24 小时内的更改。 ### 指定时间起点同步 从指定时间开始同步: ```bash python sync.py --since 2025-11-28T00:00:00Z --run ``` ### 同步特定页面 只同步特定页面的最新更改: ```bash python sync.py --title "Amazon Basin" --run ``` ### 同步特定页面并更新时间戳 同步特定页面并在完成后更新全局时间戳: ```bash python sync.py --title "Amazon Basin" --update-timestamp --run ``` ### 查看帮助 ```bash python sync.py --help ``` ## 输出文件 每次运行都会在 `wiki_sync_output` 目录下创建一个以时间戳命名的子目录,包含生成的文件: - `页面标题-时间戳-revid.diff.html` - MediaWiki原生HTML diff文件 - `页面标题-时间戳-revid.diff.txt` - 文本格式的diff(类似git diff) - `页面标题-时间戳-revid.full.txt` - 页面的最新完整内容 - `页面标题-时间戳-revid.old.txt` - 页面的历史版本内容(如果有变更) - `页面标题-时间戳-revid.cn.txt` - 中文翻译内容(如果找到) - `页面标题-时间戳-revid.comparison.html` - **双语对比网页**(如果找到中文翻译) ### 双语对比网页特性 生成的双语对比网页具有以下高级功能: 1. **精确行号映射**: - 英文diff中的每一行都标注了对应的中文行号 - 点击英文任意行,自动高亮并滚动到对应的中文行 2. **交互式体验**: - 鼠标悬停时预览对应的中文行 - 点击时高亮显示对应关系 - 平滑滚动动画效果 3. **视觉设计**: - 现代化的UI设计 - 标准的diff配色(绿色新增、红色删除、灰色未变更) - 响应式布局,支持移动端查看 4. **同步滚动**: - 左右两栏滚动位置自动同步 - 便于对比相同位置的内容 ### Diff 文件示例 文本diff格式示例: ``` --- old_version +++ new_version @@ -10,7 +10,7 @@ This is line 10 -This line will be removed +This line will be added This is line 12 ``` HTML diff特性: - 绿色背景表示新增内容 - 红色背景表示删除内容 - 左侧彩色竖线标识变更类型 - +/- 标记清晰显示变更位置 - 删除内容带有删除线效果 ## 技术细节 ### 行号解析机制 工具使用自定义的diff解析器,能够精确提取: - Hunk头部的行号范围信息 - 每一行变更对应的旧版本和新版本行号 - 增删改上下文行的准确位置 ### 中文页面搜索策略 1. 首先尝试精确匹配页面标题 2. 如果失败,则进行模糊搜索 3. 支持标题中的空格和特殊字符处理 ### 目录组织 ``` wiki_sync_output/ ├── 20251211_152702/ │ ├── Amazon_Basin-20251211_152645-12345.diff.html │ ├── Amazon_Basin-20251211_152645-12345.diff.txt │ ├── Amazon_Basin-20251211_152645-12345.full.txt │ ├── Amazon_Basin-20251211_152645-12345.old.txt │ ├── Amazon_Basin-20251211_152645-12345.cn.txt │ └── Amazon_Basin-20251211_152645-12345.comparison.html └── 20251211_153127/ └── ... ``` ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request。