Go to file
wdjwxh bd9a654c5f readme 2025-12-03 16:00:05 +08:00
.env.example readme 2025-12-03 16:00:05 +08:00
.gitignore readme 2025-12-03 16:00:05 +08:00
README.md readme 2025-12-03 16:00:05 +08:00
sync.py readme 2025-12-03 16:00:05 +08:00

README.md

Wiki Sync Tool

一个用于同步和跟踪 MediaWiki 网站变更的 Python 工具。该工具可以自动获取 wiki 页面的最新更改,生成易于阅读的 diff 文件,并保存页面的完整内容以供离线查阅。

功能特点

  • 🔄 自动同步 MediaWiki 网站的最新更改
  • 📝 生成带语法高亮的 HTML diff 文件,清晰展示变更内容
  • 💾 保存页面完整内容供离线查阅
  • 支持增量同步,只获取上次同步后的新变更
  • 🔍 支持按时间点或特定页面进行同步
  • 📁 自动组织输出文件到时间戳目录

安装

  1. 确保你已经安装了 Python 3.6+
  2. 克隆此仓库:
    git clone <repository-url>
    cd wiki-sync-tool
    
  3. 安装依赖:
    pip install requests python-dotenv
    

配置

创建一个 .env 文件并配置你的 MediaWiki API 地址:

WIKI_API_URL=https://your-wiki-site.com/api.php

或者复制提供的示例配置文件:

cp .env.example .env

然后编辑 .env 文件中的 WIKI_API_URL 值。

使用方法

基本全量同步

同步自上次运行以来的所有更改:

python sync.py --run

首次运行时,会同步过去 24 小时内的更改。

指定时间起点同步

从指定时间开始同步:

python sync.py --since 2025-11-28T00:00:00Z --run

同步特定页面

只同步特定页面的最新更改:

python sync.py --title "Main Page" --run

同步特定页面并更新时间戳

同步特定页面并在完成后更新全局时间戳:

python sync.py --title "Main Page" --update-timestamp --run

查看帮助

python sync.py --help

输出文件

每次运行都会在 wiki_sync_output 目录下创建一个以时间戳命名的子目录,包含生成的文件:

  • 页面标题-时间戳-revid.diff.html - 页面变更的 HTML diff 文件
  • 页面标题-时间戳-revid.full.txt - 页面的完整内容

Diff 文件示例

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。