Add EasyEDA Std project source ingestion (10 boards backfilled)

打通 oshwhub origin=std 项目的工程源(schematic + PCB dataStr)抓取链路。原
plan.md §1.6 假设需要登录,实测 lceda.cn/api/documents/<doc>?uuid=<doc>&path=<doc>
对公开项目匿名可访问 —— 无需 cookie,无账号封禁风险。

调研:4 轮探测留痕在 data/state/std_probe[1-5]/(gitignored);翻 Std 编辑器
v6.5.51 的 main.min.js bundle 找到 ajaxDetail 端点;按 docType 区分两种
响应 shape(schematic 项目视图 vs PCB 文档视图)。

Crawler:
  - make_source_client() 用浏览器 UA + lceda.cn/editor Referer,因为
    oshwhub /api/project/<uuid> 端点拒绝 FacereDataset/0.1 UA(CLAUDE.md
    UA 例外条款:目标站主动封自定义 UA + 公开静态资源)
  - fetch_std_source(): 项目元 → version_documents → 逐文档 dataStr → 落
    source/<doc>.json + source/manifest.json
  - --with-source(爬新项目时一并抓源)/ --backfill-source(仅扫已有)
  - QPS ≤ 0.2 (SLEEP_SOURCE = 5s) 自律

Schema: 加 source_format / source_path / source_documents / editor_version
(前 3 进 enum 锁定,便于后续 Pro / KiCad 源对齐)。

回填结果:10/10 成功,45 个文档,33.2 MB;schema validate 全通。
docTypes 主要是 1 (schematic) 与 3 (pcb);USB 电压电流表只有 PCB 文档(4 个:
主板+盖板+底板+面板,作者未上传原理图源)。

完整调研:docs/sources/easyeda_std_source.md。
This commit is contained in:
2026-04-28 20:07:40 +08:00
parent b0d3afd2a9
commit d874278bc5
71 changed files with 4389 additions and 23 deletions

View File

@@ -59,5 +59,58 @@
"public": true,
"publish": true,
"skipped_files": []
}
},
"source_format": "easyeda-std",
"source_path": "source/",
"source_documents": [
{
"doc_uuid": "68b08976c03a460e811b22f8cc49ecc1",
"docType": 1,
"master": "d71483c684ea4395a99d17e20cc6c749",
"path": "source/68b08976c03a460e811b22f8cc49ecc1.json",
"size": 366098,
"sha256": "fd91429213954bda1d807cc903c83948dc9b026c853881c3fc916daf4c6567d9"
},
{
"doc_uuid": "ca39ac258d094bb2843a0ea04ec295e4",
"docType": 3,
"master": "382862140fc14344ab4f95f66d7c4d22",
"path": "source/ca39ac258d094bb2843a0ea04ec295e4.json",
"size": 7772,
"sha256": "acd156c2f4582da0b3cb8cb0167a812cec05da6739b9a835cd12df42d2e20d84"
},
{
"doc_uuid": "b2de073f48ef43f086a1f8e5d46440c2",
"docType": 3,
"master": "ead07021260a47f499d7d60def3b0bd8",
"path": "source/b2de073f48ef43f086a1f8e5d46440c2.json",
"size": 7125,
"sha256": "b16c25863c0a4c553c954600bfc7ff059b1c27a936aa59ac0875226c65745a70"
},
{
"doc_uuid": "89b78803dc7142a182ac7503389cd84a",
"docType": 3,
"master": "3c2485a7ffa14ece95405cd4c6394663",
"path": "source/89b78803dc7142a182ac7503389cd84a.json",
"size": 4877,
"sha256": "6cc353799c788d896f8d81c3c3f5878acf035ac6e0586d2d89b5699106d670b8"
},
{
"doc_uuid": "d3d004c7a55b4817aceac161849a7b62",
"docType": 3,
"master": "a4acf24d4c904f1ca758ff2496f6394f",
"path": "source/d3d004c7a55b4817aceac161849a7b62.json",
"size": 4138,
"sha256": "dc8fd89eeaed8d6a3c26efaabca8daa9fa3880a6bba0e9a088f0ffd76cf01929"
},
{
"doc_uuid": "a62ba7febc7b4f769583678f5db4ec3d",
"docType": 3,
"master": "d2ff5a1fac434987bb5743280ef4239a",
"path": "source/a62ba7febc7b4f769583678f5db4ec3d.json",
"size": 866651,
"sha256": "262d08df64bf258ed29935fa5ff92038dfdd8f3697c8a04841628c3b3c2519dc"
}
],
"editor_version": "6.5.47"
}