# oshwhub 全量规模与特征估算 **采样方法**:`scripts/estimate_size.py` 从 `/api/project?sort=hot` 取 **90 个项目**(3 页 × 30),解析每页详情 HTML 的 `attachments[]`,不下载任何附件。 **采样日期**:2026-04-23 **重跑方式**:`uv run python scripts/estimate_size.py --pages 3 --page-size 30 --sort hot` ## 单项目分布 | 指标 | 附件数 | 体积 | |-----|-------|-----| | mean | 3.1 | 22.2 MB | | median | 2 | 9.0 MB | | p90 | — | 54.2 MB | | max | 15 | 204.5 MB | 90 个样本共 2001 MB。注意 `sort=hot` 的采样偏向**有高人气、有文件**的项目;长尾应更小。 ## 全量推算(12 493 projects) | 基数 | 估算 | |-----|-----| | mean × total | **271 GB** | | median × total | **110 GB** ← 合理规划值 | | p90 × total | **662 GB** ← 上界 | 建议按 **150 GB** 做预算(median + buffer,排除 hot 偏差);**300 GB** 做容量上限,预留故障余地。 ## 文件类型分布(按字节) | 后缀 | 样本总量 | 占比 | |------|---------|------| | .mp4 | 1029 MB | **51%** | | .zip | 676 MB | 34% | | .rar | 72 MB | 4% | | .qt | 66 MB | 3% | | .pdf | 32 MB | 2% | | .bin | 27 MB | 1% | | .jpeg | 26 MB | 1% | | .7z | 10 MB | <1% | > **关键洞察**:视频(mp4 + qt ≈ 54%)占存储一半以上。如果训练数据主要用 PCB / 原理图 / BOM,可在爬虫中加 `--skip-ext mp4,qt` 滤掉视频,存储立省一半。 ## 许可证分布(90 个样本) | License | 计数 | 占比 | |---------|-----|-----| | GPL 3.0 | 44 | **49%** | | Public Domain | 19 | 21% | | CC BY-NC-SA 4.0 | 5 | 6% | | CERN Open Hardware License | 4 | 4% | | CC BY-NC-SA 3.0 | 3 | 3% | | CC BY-SA 4.0 | 2 | 2% | | TAPR Open Hardware License | 2 | 2% | | CC-BY-NC-SA 3.0 | 2 | 2% | | 其他 CC | 2 | 2% | **全部开源/公共领域许可**,样本中无闭源。但注意: - 49% GPL 3.0 — 用于**训练模型**无直接违反(模型权重不是 derivative work 的学术共识存在争议,保守起见训练输出不可简单商业化再分发) - **NC (Non-Commercial)** 约 11% — 商用场景应**过滤剔除** - 样本偏大型项目;全量中 `license: "unknown"` 比例可能更高,需要下游按 whitelist 过滤 ## 给 Charles 的建议 1. **放量预算**:150 GB 存储 + 15% buffer ≈ **180 GB LFS 空间** 2. **滤视频**:在 Phase 1.4 之前给 crawler 加 `--skip-ext mp4,qt,mov,avi` 开关,存储需求砍半 3. **许可证白名单**:下游派生数据集按 `license in {Public Domain, CC0, CC BY, CC BY-SA, MIT, Apache-2.0, BSD*, CERN-OHL*}` 过滤 NC / 未知 4. **分期爬取**:按 `sort=hot` 按 page 推进,每 500 项目 checkpoint 一次