打通 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。
144 lines
5.2 KiB
JSON
144 lines
5.2 KiB
JSON
{
|
||
"source": "oshwhub",
|
||
"source_url": "https://oshwhub.com/dhx233/esp32_s3_watch",
|
||
"project_id": "892dbc4ebca74227ac6269a1693380d8",
|
||
"title": "QF ZERO V2 智能手表终端V1.0.9-24-6-29",
|
||
"description_short": "QF ZERO V2 ,基于ESP32-S3的智能手表",
|
||
"description_path": "description.md",
|
||
"author": {
|
||
"username": "dhx233",
|
||
"display_name": "启凡科创",
|
||
"user_id": "80fcee0f22fe42998cec371bbcdff7a2"
|
||
},
|
||
"license": "Public Domain",
|
||
"tags": [],
|
||
"created_at": "2022-09-15T13:21:36.000Z",
|
||
"updated_at": "2025-10-27T07:11:41.000Z",
|
||
"published_at": "2024-07-01T02:04:33.000Z",
|
||
"crawled_at": "2026-04-23T11:28:24.308080+00:00",
|
||
"metrics": {
|
||
"likes": 774,
|
||
"stars": 1737,
|
||
"forks": 643,
|
||
"views": 175969,
|
||
"watch": 0,
|
||
"comments": 164
|
||
},
|
||
"cover": {
|
||
"url": "https://image.lceda.cn/oshwhub/e65c8dd8b85f426ebded1acf94084b55.jpg",
|
||
"path": "cover.jpg"
|
||
},
|
||
"files": [
|
||
{
|
||
"name": "演示视频V1_0_2.mp4",
|
||
"url": "https://image.lceda.cn/attachments/2023/5/rjPzo9rb32stS2uMtOYyQHB1Mzsku2jIpfkxS0u6.mp4",
|
||
"original_id": "9e3b1b0aab4e4077bba58e9b99072752",
|
||
"ext": "mp4",
|
||
"mime": "video/mp4",
|
||
"size": 14702117,
|
||
"md5": "7b9779bb0cedd761d73eda999f0d96cb",
|
||
"path": "files/演示视频V1_0_2.mp4",
|
||
"sha256": "cece75aa3cad558c25147c3b3591c2876cf764be3ff2e54e028c9648c7be1ba0"
|
||
},
|
||
{
|
||
"name": "QF_ZERO_V2_V1_0_3.zip",
|
||
"url": "https://image.lceda.cn/attachments/2023/5/a07O0dN3bNwNohLe4TFmCeNc9OPFYHyo3p4GWagW.zip",
|
||
"original_id": "ec260479deae4829992fe4e87f0e461a",
|
||
"ext": "zip",
|
||
"mime": "application/x-zip-compressed",
|
||
"size": 26411463,
|
||
"md5": "8b3f107973b5ac8185afe09ee29a82a0",
|
||
"path": "files/QF_ZERO_V2_V1_0_3.zip",
|
||
"sha256": "689b73069c915c7897e0de328152b571cabd1d874740a4e1e887604ae9ae899e"
|
||
},
|
||
{
|
||
"name": "lvgl_demo_watch_code_blocks.zip",
|
||
"url": "https://image.lceda.cn/attachments/2023/6/vEqACjU5pj8DZUYTFlMSquYiTrT05KqWEXKtwtle.zip",
|
||
"original_id": "511fcfd7fd0743c98b5d05bb2919c778",
|
||
"ext": "zip",
|
||
"mime": "application/x-zip-compressed",
|
||
"size": 52281875,
|
||
"md5": "f1a563c71d4d28bad47edb99b80575aa",
|
||
"path": "files/lvgl_demo_watch_code_blocks.zip",
|
||
"sha256": "3ac73ef2b6959643a36f33a55b508fb7d7b813d61fc1b51f821533914b971abb"
|
||
},
|
||
{
|
||
"name": "V1.2外壳打螺丝版本.zip",
|
||
"url": "https://image.lceda.cn/attachments/2023/6/Y4R4DRQgYSDp7qdF3Jti2NYUpFlRpGXvEr1EcDpW.zip",
|
||
"original_id": "27d5835a26824d0ab7666ebe7a1d679b",
|
||
"ext": "zip",
|
||
"mime": "application/x-zip-compressed",
|
||
"size": 283522,
|
||
"md5": "4189e693d7ef28528442a09dab456a4a",
|
||
"path": "files/V1.2外壳打螺丝版本.zip",
|
||
"sha256": "48930d21ca6c51da2b656c7602a89dd0a628470dbea5b0623ae5678b17215b20"
|
||
},
|
||
{
|
||
"name": "wx_camera_1697969384939.mp4",
|
||
"url": "https://image.lceda.cn/attachments/2023/10/FiNBQGrRzqux6SvmFD2ZRxvEV8hgRpW2bpF08zKj.mp4",
|
||
"original_id": "bd456ad1f21a40b2a84492eab943fb08",
|
||
"ext": "mp4",
|
||
"mime": "video/mp4",
|
||
"size": 22640916,
|
||
"md5": "d2ecd4237f611ba495b1fb75e924fc78",
|
||
"path": "files/wx_camera_1697969384939.mp4",
|
||
"sha256": "cdf1df59f95baac8374244c786e6cf72ed264caf5ca1ed4a8a3b1c42ffb3c87e"
|
||
},
|
||
{
|
||
"name": "qf_zero_v2_firmeware_V1.0.9_app.bin",
|
||
"url": "https://image.lceda.cn/oshwhub/project/attachments/4d91cd61c2374105bb43e92a619b4efa.bin",
|
||
"original_id": "f4b04d62ddc5451ca1fd77675d75cf53",
|
||
"ext": "bin",
|
||
"mime": "application/octet-stream",
|
||
"size": 2130880,
|
||
"md5": "cf09c83d912765f054c72c07f2651e95",
|
||
"path": "files/qf_zero_v2_firmeware_V1.0.9_app.bin",
|
||
"sha256": "d319ce5ad9787381cfe67977f99c1246af3ba8b4de65dbeb5bad42a29cac8df0"
|
||
}
|
||
],
|
||
"raw_fields": {
|
||
"path": "dhx233/esp32_s3_watch",
|
||
"grade": 4,
|
||
"origin": "std",
|
||
"public": true,
|
||
"publish": true,
|
||
"skipped_files": []
|
||
},
|
||
"source_format": "easyeda-std",
|
||
"source_path": "source/",
|
||
"source_documents": [
|
||
{
|
||
"doc_uuid": "144f2e5178604ab8add093d7ffec0071",
|
||
"docType": 3,
|
||
"master": "784bdf243ee64af5ac6f003506591d18",
|
||
"path": "source/144f2e5178604ab8add093d7ffec0071.json",
|
||
"size": 917551,
|
||
"sha256": "6d3d48aa287efeaf18e092d80f8a965ba7a4e501170475759bdf81f82e8d774f"
|
||
},
|
||
{
|
||
"doc_uuid": "975ab458f0ab46b4a7e9152399ffbf57",
|
||
"docType": 1,
|
||
"master": "f607e8d2bc69470fb3117da9b65d45ab",
|
||
"path": "source/975ab458f0ab46b4a7e9152399ffbf57.json",
|
||
"size": 258763,
|
||
"sha256": "f1008ce2f4812dc55212cdb34c4920b5a60bbb4f9af167f5f7dd6e58fe400e03"
|
||
},
|
||
{
|
||
"doc_uuid": "b5f17a05abcc439491b9c11861fe0ee2",
|
||
"docType": 1,
|
||
"master": "72d1f0e29e384bcba077ca3e96920dd6",
|
||
"path": "source/b5f17a05abcc439491b9c11861fe0ee2.json",
|
||
"size": 258763,
|
||
"sha256": "f1008ce2f4812dc55212cdb34c4920b5a60bbb4f9af167f5f7dd6e58fe400e03"
|
||
},
|
||
{
|
||
"doc_uuid": "bbc0cb810edd408f9c9f34adf3e171d1",
|
||
"docType": 3,
|
||
"master": "0ce027b5537d44c6991d9ed7c3e4ac50",
|
||
"path": "source/bbc0cb810edd408f9c9f34adf3e171d1.json",
|
||
"size": 5256,
|
||
"sha256": "37ca6b546c4f1267e1780a2584e839c32a96622ba42992124f6b5620c181a122"
|
||
}
|
||
],
|
||
"editor_version": "6.5.41"
|
||
} |