readme
This commit is contained in:
parent
8e93b5b82b
commit
bd9a654c5f
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Wiki Sync Tool 配置文件示例
|
||||||
|
# 复制此文件为 .env 并修改其中的值
|
||||||
|
|
||||||
|
# 你的 MediaWiki API 地址
|
||||||
|
WIKI_API_URL=https://your-wiki-site.com/api.php
|
||||||
|
|
@ -162,3 +162,4 @@ cython_debug/
|
||||||
# 自定义忽略项
|
# 自定义忽略项
|
||||||
last_sync_timestamp.txt
|
last_sync_timestamp.txt
|
||||||
wiki_sync_output/
|
wiki_sync_output/
|
||||||
|
.env
|
||||||
|
|
@ -0,0 +1,133 @@
|
||||||
|
# Wiki Sync Tool
|
||||||
|
|
||||||
|
一个用于同步和跟踪 MediaWiki 网站变更的 Python 工具。该工具可以自动获取 wiki 页面的最新更改,生成易于阅读的 diff 文件,并保存页面的完整内容以供离线查阅。
|
||||||
|
|
||||||
|
## 功能特点
|
||||||
|
|
||||||
|
- 🔄 自动同步 MediaWiki 网站的最新更改
|
||||||
|
- 📝 生成带语法高亮的 HTML diff 文件,清晰展示变更内容
|
||||||
|
- 💾 保存页面完整内容供离线查阅
|
||||||
|
- ⏰ 支持增量同步,只获取上次同步后的新变更
|
||||||
|
- 🔍 支持按时间点或特定页面进行同步
|
||||||
|
- 📁 自动组织输出文件到时间戳目录
|
||||||
|
|
||||||
|
## 安装
|
||||||
|
|
||||||
|
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
|
||||||
|
WIKI_API_URL=https://your-wiki-site.com/api.php
|
||||||
|
```
|
||||||
|
|
||||||
|
或者复制提供的示例配置文件:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
然后编辑 `.env` 文件中的 `WIKI_API_URL` 值。
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
### 基本全量同步
|
||||||
|
|
||||||
|
同步自上次运行以来的所有更改:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python sync.py --run
|
||||||
|
```
|
||||||
|
|
||||||
|
首次运行时,会同步过去 24 小时内的更改。
|
||||||
|
|
||||||
|
### 指定时间起点同步
|
||||||
|
|
||||||
|
从指定时间开始同步:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python sync.py --since 2025-11-28T00:00:00Z --run
|
||||||
|
```
|
||||||
|
|
||||||
|
### 同步特定页面
|
||||||
|
|
||||||
|
只同步特定页面的最新更改:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python sync.py --title "Main Page" --run
|
||||||
|
```
|
||||||
|
|
||||||
|
### 同步特定页面并更新时间戳
|
||||||
|
|
||||||
|
同步特定页面并在完成后更新全局时间戳:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python sync.py --title "Main Page" --update-timestamp --run
|
||||||
|
```
|
||||||
|
|
||||||
|
### 查看帮助
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python sync.py --help
|
||||||
|
```
|
||||||
|
|
||||||
|
## 输出文件
|
||||||
|
|
||||||
|
每次运行都会在 `wiki_sync_output` 目录下创建一个以时间戳命名的子目录,包含生成的文件:
|
||||||
|
|
||||||
|
- `页面标题-时间戳-revid.diff.html` - 页面变更的 HTML diff 文件
|
||||||
|
- `页面标题-时间戳-revid.full.txt` - 页面的完整内容
|
||||||
|
|
||||||
|
### Diff 文件示例
|
||||||
|
|
||||||
|
Diff 文件展示了页面的变更内容,具有以下特性:
|
||||||
|
|
||||||
|
- 绿色背景表示新增内容
|
||||||
|
- 红色背景表示删除内容
|
||||||
|
- 左侧彩色竖线标识变更类型
|
||||||
|
- +/- 标记清晰显示变更位置
|
||||||
|
- 删除内容带有删除线效果
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 技术细节
|
||||||
|
|
||||||
|
### Diff 标记说明
|
||||||
|
|
||||||
|
工具会对 MediaWiki 的原生 diff 输出进行处理:
|
||||||
|
|
||||||
|
- 将 `<ins>` 和 `<del>` 标签转换为标准的 `<span>` 标签
|
||||||
|
- 将 `data-marker` 属性转换为实际的 +/- 符号
|
||||||
|
- 应用自定义 CSS 样式增强视觉效果
|
||||||
|
|
||||||
|
### 目录组织
|
||||||
|
|
||||||
|
```
|
||||||
|
wiki_sync_output/
|
||||||
|
├── 20251203_152702/
|
||||||
|
│ ├── Main_Page-20251203_152645-12345.diff.html
|
||||||
|
│ ├── Main_Page-20251203_152645-12345.full.txt
|
||||||
|
│ ├── Another_Page-20251203_152650-12346.diff.html
|
||||||
|
│ └── Another_Page-20251203_152650-12346.full.txt
|
||||||
|
└── 20251203_153127/
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
## 许可证
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
## 贡献
|
||||||
|
|
||||||
|
欢迎提交 Issue 和 Pull Request。
|
||||||
4
sync.py
4
sync.py
|
|
@ -14,9 +14,11 @@ import argparse
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import requests
|
import requests
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
# ==================== 配置区 ====================
|
# ==================== 配置区 ====================
|
||||||
WIKI_API_URL = "https://wiki.projectdiablo2.com/w/api.php" # ← 改成你的国外 wiki
|
load_dotenv()
|
||||||
|
WIKI_API_URL = os.getenv("WIKI_API_URL") # 从.env文件加载
|
||||||
OUTPUT_DIR = Path("wiki_sync_output")
|
OUTPUT_DIR = Path("wiki_sync_output")
|
||||||
OUTPUT_DIR.mkdir(exist_ok=True)
|
OUTPUT_DIR.mkdir(exist_ok=True)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue