5 个版本
0.1.3 | 2024年2月4日 |
---|---|
0.1.2 | 2024年1月2日 |
0.1.1 | 2022年9月28日 |
0.1.0 | 2022年7月6日 |
0.0.0 | 2022年7月6日 |
在 数据库接口 中排名 592
每月下载量 94
11KB
214 行
crates.io数据库导出
用于针对crates.io数据库导出的脚本分析的库。
这些数据库导出包含crates.io API公开的所有信息,打包成单个下载。每天更新一次导出。最新导出可在 https://static.crates.io/db-dump.tar.gz 获取。
示例
本仓库的 examples/ 目录包含几个可运行的示例分析。
total-downloads | 计算crates.io上所有crate的总下载量的时间序列 |
---|---|
crate-downloads | 计算特定crate的下载量的时间序列 |
top-crates | 计算最直接依赖的几个crate |
user-dependencies | 计算指定用户至少依赖一个crate的crate.io的百分比 |
user-downloads | 计算归因于单个指定用户crate的crate.io下载量的时间序列 |
一旦下载了最新的数据库导出,就可以使用Cargo运行这些示例之一
$ wget https://static.crates.io/db-dump.tar.gz
$ cargo run --release --example total-downloads
以下是最基本的示例 total-downloads 的实现和结果表的图表。它显示了crates.io下载率每9个月翻倍,或等效于每2.5年翻10倍!
use chrono::Utc;
use db_dump::Date;
use std::collections::BTreeMap as Map;
fn main() -> db_dump::Result<()> {
let mut downloads = Map::<Date<Utc>, u64>::new();
db_dump::Loader::new()
.version_downloads(|row| {
*downloads.entry(row.date).or_default() += row.downloads;
})
.load("./db-dump.tar.gz")?;
for (date, count) in downloads {
println!("{},{}", date, count);
}
Ok(())
}
以下是 user-downloads 示例的图表
许可协议
根据您的选择,受Apache License, Version 2.0 或 MIT许可协议 的许可。除非您明确表示,否则任何有意提交以包含在本crate中并由您定义的贡献,根据Apache-2.0许可协议,将双重许可如上所述,不附加任何额外条款或条件。
依赖项
~6–16MB
~193K SLoC