2 个版本
0.1.1 | 2023 年 4 月 2 日 |
---|---|
0.1.0 | 2023 年 4 月 2 日 |
694 在 文件系统 中
34 个每月下载
用于 wikimedia-download
175KB
4K SLoC
wikimedia
crate(包括 wmd
CLI 工具)
开源 Rust 库和工具,用于从 维基媒体基金会(Wikipedia 和其他项目的非营利性组织)下载和查看数据。
在 wikimedia-rs
源仓库 中有 3 个相关 crate。
wikimedia
:下载和解析 Wikimedia 数据的库。
Crate | 文档wikimedia-store
:存储 MediaWiki 页面的库,支持搜索和从 Wikimedia 导出文件导入。
Crate | 文档wikimedia-download
:用于从 Wikimedia 下载数据和通过 Web 界面查看数据的 CLI 工具wmd
。
Crate
安装
安装 Rust 工具链。 rustup
是执行此操作的标准工具。
这些 crate 主要在 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日,下载量约为20GB)
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
报告的版本。导入英文维基百科上所有文章的最新版本将占用约80GB的磁盘存储空间。这比下载大小要大,因为存储库目前尚未压缩,但计划将来进行压缩。
一旦导入命令完成,您可以在网络界面中查看下载的页面
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
。
存储页面使用 Rust 实现的 Cap'n Proto 进行编码 capnproto-rust
。这需要从 .capnp
架构文件(目前位于 crates/wikimedia-store/capnp/
)生成访问器代码(目前位于 crates/wikimedia-store/capnp/generated
)。
访问器代码已提交到源代码库中,因此在使用 cargo install
或构建脚本时,不需要安装生成器和工具。但是,如果架构文件被修改,构建脚本会检测到这一点并自动重新生成访问器代码。
为了重新生成访问器代码,您必须在可执行路径上安装这些依赖项
capnp
,Cap'n Proto 架构编译器;请参阅 安装说明。capnpc-rust
,capnp
Rust 插件。使用cargo install capnpc
安装。
依赖项
~47–64MB
~1M SLoC