36次发布
0.7.4 | 2024年7月5日 |
---|---|
0.7.2 | 2024年5月6日 |
0.6.0 | 2024年3月9日 |
0.4.10 | 2023年10月18日 |
0.1.0 | 2021年3月16日 |
#112 in 数据库接口
1,017 每月下载量
用于 cargo-tally
200KB
1.5K SLoC
crates.io数据库转储
用于对crates.io数据库转储进行脚本分析的库。
这些数据库转储包含crates.io API公开的所有信息,打包成一个单独的下载。每24小时发布一个更新的转储。最新的转储可以在 https://static.crates.io/db-dump.tar.gz 找到。
示例
此仓库的 examples/ 目录包含几个可运行的示例分析。
total‑downloads | 计算crates.io上所有crate每日的总下载时间序列 |
---|---|
crate‑downloads | 计算一个特定crate的下载时间序列 |
top‑crates | 计算最直接依赖的前几个crate |
user‑dependencies | 计算指定用户直接依赖于至少一个crate的crates.io百分比 |
user‑downloads | 计算归因于单个指定用户crate的crates.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许可证下许可。除非您明确表示,否则您有意提交的任何贡献,根据Apache-2.0许可证定义,应按上述方式双重许可,而无需任何附加条款或条件。
依赖关系
~6–16MB
~204K SLoC