#mediawiki #wikipedia #download #dump #read #foundation #view

nightly wikimedia

下载并读取维基媒体数据

2 个版本

0.1.1 2023 年 4 月 2 日
0.1.0 2023 年 4 月 2 日

#10 in #wikipedia


2 crates 使用

MIT 许可证

95KB
2K SLoC

wikimedia crates (包括 wmd CLI 工具)

开源 Rust 库和工具,用于下载和查看来自维基媒体基金会的数据,维基媒体基金会是维基百科和其他项目的非营利组织。

wikimedia-rs 源代码仓库中有 3 个相关的 crates。

  • wikimedia:下载并解析维基媒体数据的库。
    Crate | 文档
  • wikimedia-store:存储 MediaWiki 页面的库,支持从维基媒体存档文件中进行搜索和导入。
    Crate | 文档
  • wikimedia-download:CLI 工具 wmd,用于从维基媒体下载数据并通过网页界面查看。
    Crate

安装

安装 Rust 工具链。 rustup 是完成此操作的标准化工具。

这些 crates 主要在 Linux 上开发和测试。偶尔也会在 macOS 上进行测试。在 bin/ 中的实用脚本是用 bash 编写的,所有后续说明都将假定您正在基于 Unix 的机器上运行。

选择的依赖项是跨平台的,因此希望在 Windows 机器上也能正常工作,但这尚未经过测试。如果您想在 Windows 上运行,请尝试使用 WSL 或 Cygwin。如果您想添加支持,请提交拉取请求!

运行此命令以使用 Rust 的包管理器 cargo 构建 和安装 wmd

RUSTFLAGS="--cfg tracing_unstable" cargo +nightly install wikimedia-download

默认情况下,这将安装 wmd~/.cargo/bin/wmd,请确保这已在您的 shell 路径中。

查看下载的页面需要将 pandoc 添加到您的可执行路径,以将 MediaWiki Wikitext 标记转换为 HTML。请参阅他们的 发布下载页面 和他们的 安装说明页面

快速入门

要显示 wmd 子命令的帮助说明

# Help for `wmd` and its list of subcommands
wmd help

# Help for the subcommand `download` use one of these:
wmd help download
wmd download --help

要下载英语维基百科上所有文章的最新版本的文本(截至 2023 年 3 月 20 日约为 20 GB)

export WMD_MIRROR_URL=https://ftp.acc.umu.se/mirror/wikimedia.org/dumps

wmd download  --dump enwiki \
              --version latest \
              --job articlesdump

示例下载完成消息

Downloading job files complete
|   download_dir = /home/alex/wm/out/dumps/enwiki/20230320/articlesdump
|   dump         = enwiki
|   version      = 20230320
|   job          = articlesdump

默认情况下,文件将下载到

  • ~/.local/share/wmd(在 Linux 上)
  • ~/Library/Application Support/wmd 在 macOS 上
  • C:\Users\%USERNAME%\AppData\Local\wmd 在 Windows 上

这可以通过环境变量 WMD_OUT_DIR 或 CLI 参数 --out-dir 来覆盖;有关更多信息,请参阅 wmd help download

如果某些文件已经被下载,它们的校验和将被验证,如果正确则不会再次下载。

维基媒体主数据下载服务器 限制网络连接数和下载速率,因此建议选择一个镜像进行下载。官方镜像列表在这些页面上:1 2。上面脚本中的示例是我用来测试 wmd 的;它位于瑞典,地理位置上离我比较近。

为了方便检索,必须将它们导入到 wmd 的存储中

wmd import-dump   --dump enwiki \
                  --version 20230320 \
                  --job articlesdump

使用之前下载的相同镜像和作业,以及 wmd download 报告的版本。导入所有英文维基百科文章的最新版本将占用大约 80 GB 的磁盘存储空间。这比下载大小要大,因为存储目前尚未压缩,但这计划中会有所改进。

导入命令完成后,您可以在网络界面中查看下载的页面

wmd web

示例输出

  2023-04-02T22:25:08.86645692Z  INFO wmd::commands::web: Listening on http, url: http://localhost:8089/
    at crates/wikimedia-download/src/commands/web.rs:89 on ThreadId(1)

访问日志消息中的 URL:https://127.0.0.1:8089

设置环境变量 RUST_LOG 来配置日志级别和过滤。此应用程序使用 tracing-subscriber 包进行日志记录,请参阅 它们的文档以获取可用的日志配置指令。请注意,许多指令可以用逗号分隔提供。

Shell 完成设置

目前支持以下 Shell:bash、elvish、fish、powershell 和 zsh。

使用 wmd completion 为您的 Shell 保存完成文件,例如 zsh

wmd completion --shell zsh > completion.zsh

然后按照您 Shell 的说明加载文件。

wmd 的参数解析使用 clap 实现,而 Shell 完成文件则使用 clap_complete 生成。

开发说明

  • 使用 git 克隆源代码
    git clone https://github.com/fluffysquirrels/wikimedia-rs.git
  • 使用脚本 bin/build 构建。这会在发布模式下构建,强烈推荐这样做。在不带优化的调试模式下,数据处理会非常慢。
  • 使用 bin/test 运行测试。
  • 构建后使用 bin/wmd 运行。
    我建议在您的路径中添加对此文件的符号链接。在我的机器上 ~/bin 在我的路径上,所以我只需要运行 ln -s ${PWD}/bin/wmd ~/bin

存储页面使用 Cap'n Proto 的 Rust 实现进行编码 capnproto-rust。这需要从 .capnp 模式文件(目前在 crates/wikimedia-store/capnp/)生成访问器代码(目前在 crates/wikimedia-store/capnp/generated)。

访问器代码已提交到源代码仓库,因此在使用 cargo install 或构建脚本时无需安装生成器工具,但如果修改了模式文件,构建脚本将检测到这一点并自动重新生成访问器代码。

您必须将这些依赖项安装到您的可执行路径以重新生成访问器代码

  • capnp,Cap'n Proto 模式编译器;请参阅安装说明
  • capnpc-rustcapnp Rust 插件。使用 cargo install capnpc 安装。

依赖项

~22–40MB
~649K SLoC