打通 oshwhub origin=pro 现代 Pro 3.x 工程的 EPRO2 源抓取链路。3/5
modern Pro 项目完整解出(共 8423 docs / 542 MB plain):
- X86 主板 7374 docs / 481 MB plain (chain=85, editor=3.2.15)
- 220V 桌面电源 771 docs / 26 MB plain (chain=28, editor=3.2.69)
- ESP-VoCat 278 docs / 7.5 MB plain (chain=12, editor=3.2.91)
剩余 2/5 是 legacy Pro 2.x(立创泰山派 RK3566、梁山派),项目 meta
返回 branch_uuid=null + editorVersion="2.1.40",没有 git-style chain
模型,文档直接挂在 boards[].sch/pcb 字段上,访问端点暂未挖通;元
数据落库 metadata.json,source/ 留空。
实现要点:
- fetch_pro_source(): 4 步流程(project → branch HEAD → structures
→ /branches/<B>/histories/<HEAD> 即返完整 chain,无需 ?limit 批量
端点)+ 逐 history 走 AES-128-GCM 解密(16 字节 IV,pycryptodome
原生支持)+ gunzip + 按 DOCHEAD 切 per-doc EPRO2 流
- EPRO2 解析坑:行末单 `|` 是行终止符不是字段分隔符,必须先
rstrip("|") 再 split("||"),否则 payload JSON 解析失败 silently
swallow 导致 cur_doc 不设 → 第一轮 X86 板 7374 docs 抽出来只剩 2 个
- docType 实测远不止 BOARD/PCB/SCH/SCH_PAGE,还含 SYMBOL /
FOOTPRINT / DEVICE / BLOB / FONT / CONFIG —— Pro 把组件库快照也
随项目存到 history,下游做 EPRO2→KiCad 转换时必须先把这些 lib
doc 加载进 symbol cache
- Pro 2.x vs 3.x 是不同存储模型 —— 3.x 走 branch 模型(已打通),
2.x 走 boards[] 直链(未打通);判别条件:project meta 的
branch_uuid 是否为 null
CLI 新增 --with-pro-source / --backfill-pro-source / --pro-cookie /
--origin(按 origin 字段服务端过滤 listing API),crawl_one() 按
origin=pro 自动 dispatch 到 Pro fetcher。
schema:docType 类型从 integer 放宽到 [integer, string, null]
(兼容 Std 的 1/3 + Pro 的 BOARD/SCH 等),新增 message_count 字段。
License 注意:本批 5 个项目全是 NC-SA / GPL,未达 Pro source doc
§4.2 Forge 白名单(MIT/BSD/Apache/CC0/CC-BY/CERN-OHL-P/Unlicense)。
按 CLAUDE.md "研究用、不再分发" 原则 raw 入库无碍;Forge 投影时
另过白名单。
详细技术细节见 docs/sources/easyeda_pro_source.md rev 3 + log.md。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.5 KiB
5.5 KiB
Crawled Projects Index
自动生成,最近更新 2026-04-28 13:44 UTC
当前:15 个项目 · 73 个附件 · 739.1 MB
按 Stars 倒序。Title → 源站;UUID → 本仓库对应目录。
| # | Title | Author | License | ⭐ Stars | ❤️ Likes | 🍴 Forks | 👁 Views | 💬 Comments | Files | Size (MB) |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 加热台量产计划7b6a3988… |
sheep_finder | Public Domain | 3,293 | 1,447 | 3,939 | 347,329 | 383 | 4 | 23.0 |
| 2 | 支持PD3.1/米PPS与Emarker读取的USB电压电流表1a1e8655… |
qaxslk | CC BY-NC-SA 4.0 | 2,695 | 1,215 | 1,146 | 306,681 | 448 | 13 | 204.5 |
| 3 | (高颜值)220V供电300W四路彩屏桌面电源dc91a91e… |
cqlcp | CC BY-NC-SA 4.0 | 1,955 | 1,428 | 0 | 91,319 | 274 | 11 | 172.4 |
| 4 | 自制ST-LINK V2-1(开源版本)298873b7… |
攻城狮神木 | GPL 3.0 | 1,947 | 863 | 996 | 239,671 | 369 | 7 | 20.9 |
| 5 | QF ZERO V2 智能手表终端V1.0.9-24-6-29892dbc4e… |
启凡科创 | Public Domain | 1,737 | 774 | 643 | 175,969 | 164 | 6 | 113.0 |
| 6 | RT300-MKV 250W 数控升降压桌面可调电源91206ca7… |
XACT | CC BY-NC-SA 4.0 | 1,735 | 867 | 782 | 185,523 | 231 | 2 | 80.9 |
| 7 | ESP-VoCat 喵伴:会听、会动、会陪伴的 AI 萌宠ba64bd6f… |
乐鑫小铁匠 | GPL 3.0 | 1,525 | 558 | 0 | 215,910 | 434 | 8 | 32.6 |
| 8 | 立创·泰山派RK3566开发板7360e73d… |
立创开发板 | GPL 3.0 | 1,025 | 627 | 0 | 397,479 | 380 | 0 | 0.0 |
| 9 | 【全网首发】X86电脑主板b7784066… |
OSHWHub | GPL 3.0 | 1,015 | 754 | 0 | 99,998 | 407 | 1 | 10.1 |
| 10 | t12-858d烙铁热风枪通用焊台二合一3e2f893d… |
mojinyinhu | GPL 3.0 | 1,013 | 483 | 395 | 133,220 | 293 | 7 | 44.1 |
| 11 | 立创·梁山派开发板0c467598… |
立创开发板 | GPL 3.0 | 891 | 760 | 0 | 237,019 | 518 | 1 | 13.1 |
| 12 | 大功率感应加热2500W 增强型ZVSf974b06d… |
金石之声 | TAPR Open Hardware License | 708 | 355 | 378 | 61,550 | 265 | 2 | 8.8 |
| 13 | 手持红外热成像1b09581d… |
wesd | CERN Open Hardware License | 646 | 247 | 175 | 73,081 | 266 | 2 | 3.3 |
| 14 | 小汐 & 阿曈 -> 盖革计数器(MWGC-2T)b077573d… |
久治明千树汐 | CC BY-SA 4.0 | 365 | 212 | 189 | 49,755 | 168 | 2 | 4.0 |
| 15 | 柚子爱AI相机-YuzuAI-YuzuMaix-AIoT-V831开发板922c1f3a… |
Armbian-PythonIot | CC BY-NC-SA 3.0 | 236 | 129 | 96 | 45,128 | 93 | 7 | 8.3 |
汇总
- Stars 合计 20,786(平均 1,385/项目)
- Likes 合计 10,719
- Views 合计 2,659,632
License 分布
GPL 3.0— 6 项目CC BY-NC-SA 4.0— 3 项目Public Domain— 2 项目TAPR Open Hardware License— 1 项目CERN Open Hardware License— 1 项目CC BY-SA 4.0— 1 项目CC BY-NC-SA 3.0— 1 项目
数据源分布
oshwhub— 15 项目
目录结构(每个项目)
data/raw/<source>/<uuid>/
├── metadata.json # 统一 schema,见 schemas/project.schema.json
├── description.md # 标题 + 简介 + 许可证
├── cover.{jpg,png} # 封面
├── _urls.json # 所有原始 URL
└── files/* # 原始附件(Git LFS)
重新生成
uv run python scripts/build_index.py