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
|
||||
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 datetime import datetime
|
||||
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.mkdir(exist_ok=True)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue