sync-pd2-wiki/README.md

181 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Wiki Sync Tool - Enhanced Version
一个用于同步和跟踪 MediaWiki 网站变更的 Python 工具,支持双语对比和精确的行号定位。
## 功能特点
- 🔄 自动同步 MediaWiki 网站的最新更改
- 📝 生成带语法高亮的 HTML diff 文件,清晰展示变更内容
- 💾 保存页面完整内容供离线查阅
- ⏰ 支持增量同步,只获取上次同步后的新变更
- 🔍 支持按时间点或特定页面进行同步
- 📁 自动组织输出文件到时间戳目录
- 🌐 **新增**:自动同步中文翻译版本
- 🎯 **新增**:精确的行号映射,点击英文行自动定位到中文对应行
- 📊 **新增**:生成精美的双语对比网页
- 🎨 **新增**现代化的UI设计支持同步滚动和高亮显示
## 安装
1. 确保你已经安装了 Python 3.6+
2. 克隆此仓库:
```bash
git clone <repository-url>
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。