Add EasyEDA Pro 2.x legacy source ingestion (5/5 batch closure)
补齐前一批失败的 2 个 legacy Pro 项目(立创·泰山派 RK3566、立创·梁山派),
打通 Pro 2.x 旧版工程的源抓取链路。结合上一 commit 的 modern Pro 3.x
路径,本仓库 5/5 Pro 项目 EPRO2/dataStr 全部端到端打通。
Pro 2.x 与 Pro 3.x 是两个完全不同的存储模型:
- Pro 3.x:git-style branch + linear history chain,AES-128-GCM 加密的
EPRO2 增量消息流,按 history 重放(已在前一 commit 打通)
- Pro 2.x:无 branch / 无 history。文档以 EasyEDA Std plaintext dataStr
存储(同 ["DOCTYPE","SCH","1.1"] 格式),按 doc UUID 通过
/api/v2/documents/lists 批量 GET,主体无加密,只组件库走 AES
Pro 2.x 抓取链由 HAR (tmp/prodownload3.har, 178 请求) 反推:
GET /api/v4/projects/<P> → boards: [{sch, pcb, name}]
GET /api/projects/<P>/ticket?uuid=&g_ticket=-1
→ 完整项目 manifest
POST /api/schematic/lists {uuids:[<sch>]} → sort: [{uuid:<sheet>}]
POST /api/v2/documents/lists {uuids,docType:1} → schematic plaintext
POST /api/v2/documents/lists {uuids,docType:3} → PCB plaintext
POST /api/coppers/search {paths} → 铺铜层
POST /api/textpath/search {paths,project_uuid}→ 字体/文字
POST /api/v2/resources/search {hash,project_uuid} → BLOB 图片
实现:
- crawlers/oshwhub/crawler.py:
- fetch_pro_source() refactor 成 dispatcher,先 GET project meta
检查 branch_uuid,null 即旧版走 _fetch_pro_legacy(),非空走
_fetch_pro_modern()
- _fetch_pro_legacy() 新增(按上面 9 步流程拉所有 doc + 辅助层)
- _pro_post_json() POST helper(与 _pro_get_json 对称)
- schemas/project.schema.json: source_format enum 加 easyeda-pro-legacy
- docs/sources/easyeda_pro_source.md rev 4: §1.1 旧版 vs 新版判别表更新、
§2.7 新增旧版抓取流程 + 实测数据
落盘约定(旧版):
source/ticket.json 完整 manifest
source/<sheet_uuid>.json 每张原理图(含 dataStr)
source/pcb_<pcb_uuid>.json 每块 PCB
source/coppers.json/textpath.json/blobs.json 辅助 PCB 层资源
source/manifest.json 索引
实测:
立创·梁山派 editor=2.1.30, 2 sheets+1 pcb, 1.0 MB, 78 sym/191 fp/128 dev
立创·泰山派 RK3566 editor=2.1.40, 29 sheets+1 pcb, 0.8 MB, 299 sym/524 fp/295 dev
旧版项目体量比新版小两个数量级(梁山派 1 MB vs RK3576 66 MB)—— 没有
增量 history,组件库走单独端点,本身就是当前快照。
5/5 Pro 项目终极汇总:
X86 主板 easyeda-pro 3.2.15 7374 docs / 481 MB
泰山派 RK3566 easyeda-pro-legacy 2.1.40 30 docs / 0.8 MB
梁山派 easyeda-pro-legacy 2.1.30 3 docs / 1.0 MB
220V 桌面电源 easyeda-pro 3.2.69 771 docs / 26 MB
ESP-VoCat easyeda-pro 3.2.91 278 docs / 7.5 MB
共 8456 docs / ~516 MB plain。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -428,15 +428,34 @@ def fetch_pro_source(
|
||||
proj_dir: Path,
|
||||
sleep: float = SLEEP_PRO,
|
||||
) -> dict:
|
||||
"""Fetch EasyEDA Pro project source: full history chain, AES-GCM decrypted,
|
||||
gunzipped, and partitioned into per-document EPRO2 streams.
|
||||
"""Dispatcher: pick modern (3.x branch+EPRO2) vs legacy (2.x v2/documents/lists)
|
||||
based on whether project meta contains a non-null branch_uuid.
|
||||
|
||||
Pro 3.x stores in git-style branch+history with AES-encrypted EPRO2 streams;
|
||||
Pro 2.x predates that and uses Std-style per-doc dataStr served from
|
||||
/api/v2/documents/lists. See docs/sources/easyeda_pro_source.md §1.1.
|
||||
"""
|
||||
proj = _pro_get_json(pro_client, f"{PRO_API}/projects/{project_uuid}", project_uuid)
|
||||
time.sleep(sleep)
|
||||
if proj.get("branch_uuid"):
|
||||
return _fetch_pro_modern(pro_client, project_uuid, proj, proj_dir, sleep)
|
||||
return _fetch_pro_legacy(pro_client, project_uuid, proj, proj_dir, sleep)
|
||||
|
||||
|
||||
def _fetch_pro_modern(
|
||||
pro_client: httpx.Client,
|
||||
project_uuid: str,
|
||||
proj: dict,
|
||||
proj_dir: Path,
|
||||
sleep: float = SLEEP_PRO,
|
||||
) -> dict:
|
||||
"""Modern Pro 3.x fetcher: full history chain, AES-GCM decrypted, gunzipped,
|
||||
and partitioned into per-document EPRO2 streams.
|
||||
|
||||
Side effects under ``proj_dir``:
|
||||
- source/structure.json — project document tree (boards/schematics/sheets/pcbs/...)
|
||||
- source/<doc_uuid>.epro2 — one file per document, raw EPRO2 messages (newline-separated)
|
||||
- source/manifest.json — per-doc index + chain summary
|
||||
|
||||
Returns dict matching the shape `fetch_std_source` returns.
|
||||
"""
|
||||
import gzip
|
||||
from collections import OrderedDict
|
||||
@@ -445,14 +464,8 @@ def fetch_pro_source(
|
||||
src_dir = proj_dir / "source"
|
||||
src_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 1. project meta -> branch_uuid + editor_version fallback
|
||||
proj = _pro_get_json(pro_client, f"{PRO_API}/projects/{project_uuid}", project_uuid)
|
||||
branch_uuid = proj.get("branch_uuid")
|
||||
if not branch_uuid:
|
||||
raise RuntimeError(f"no branch_uuid in project meta for {project_uuid}")
|
||||
# Some projects' DOCHEAD payloads lack `editVersion`; project meta has `editorVersion`
|
||||
branch_uuid = proj["branch_uuid"]
|
||||
project_editor_version = proj.get("editorVersion")
|
||||
time.sleep(sleep)
|
||||
|
||||
# 2. branch meta -> head history_uuid
|
||||
branch = _pro_get_json(
|
||||
@@ -597,6 +610,218 @@ def fetch_pro_source(
|
||||
}
|
||||
|
||||
|
||||
def _pro_post_json(
|
||||
client: httpx.Client,
|
||||
url: str,
|
||||
project_uuid: str,
|
||||
body: dict,
|
||||
) -> object:
|
||||
"""POST a pro.lceda.cn endpoint with `path` header, validate envelope."""
|
||||
r = client.post(
|
||||
url,
|
||||
json=body,
|
||||
headers={"path": project_uuid, "Content-Type": "application/json"},
|
||||
)
|
||||
r.raise_for_status()
|
||||
j = r.json()
|
||||
if not j.get("success"):
|
||||
raise RuntimeError(f"Pro API failed (POST {url}): {j}")
|
||||
return j["result"]
|
||||
|
||||
|
||||
def _fetch_pro_legacy(
|
||||
pro_client: httpx.Client,
|
||||
project_uuid: str,
|
||||
proj: dict,
|
||||
proj_dir: Path,
|
||||
sleep: float = SLEEP_PRO,
|
||||
) -> dict:
|
||||
"""Legacy Pro 2.x fetcher: project meta has `boards: [{sch, pcb, name}]` and
|
||||
no branch model. Documents are fetched via `/api/v2/documents/lists` (Std-style
|
||||
plaintext dataStr); resources/coppers/textpath/blobs come from supplementary
|
||||
POST endpoints. Reverse-engineered from HAR `tmp/prodownload3.har`
|
||||
(2026-04-28); see docs/sources/easyeda_pro_source.md §1.1.
|
||||
|
||||
Side effects under ``proj_dir``:
|
||||
- source/ticket.json — full project manifest (counts of all asset types)
|
||||
- source/<sheet_uuid>.json — schematic sheet content (docType=1)
|
||||
- source/pcb_<pcb_uuid>.json — PCB content (docType=3)
|
||||
- source/coppers.json — copper pour data (if any)
|
||||
- source/textpath.json — text path / font data (if any)
|
||||
- source/blobs.json — embedded image blobs (if any)
|
||||
- source/manifest.json — index across all of the above
|
||||
"""
|
||||
src_dir = proj_dir / "source"
|
||||
src_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
boards = proj.get("boards") or []
|
||||
if not boards:
|
||||
raise RuntimeError(f"legacy project {project_uuid} has no boards[] in meta")
|
||||
project_editor_version = proj.get("editorVersion")
|
||||
|
||||
# 1. ticket — full manifest (counts of every asset type the project owns)
|
||||
ticket = pro_client.get(
|
||||
f"https://pro.lceda.cn/api/projects/{project_uuid}/ticket",
|
||||
params={"uuid": project_uuid, "g_ticket": "-1"},
|
||||
headers={"path": project_uuid},
|
||||
)
|
||||
ticket.raise_for_status()
|
||||
ticket_j = ticket.json()
|
||||
if not ticket_j.get("success"):
|
||||
raise RuntimeError(f"ticket endpoint failed: {ticket_j}")
|
||||
manifest_ticket = ticket_j["result"]
|
||||
(src_dir / "ticket.json").write_text(
|
||||
json.dumps(manifest_ticket, ensure_ascii=False, indent=2), encoding="utf-8"
|
||||
)
|
||||
time.sleep(sleep)
|
||||
|
||||
doc_metas: list[dict] = []
|
||||
|
||||
# 2. schematic containers -> sheet UUIDs via /api/schematic/lists
|
||||
sch_container_uuids = [b["sch"] for b in boards if b.get("sch")]
|
||||
sheet_uuids: list[str] = []
|
||||
if sch_container_uuids:
|
||||
containers = _pro_post_json(
|
||||
pro_client,
|
||||
"https://pro.lceda.cn/api/schematic/lists",
|
||||
project_uuid,
|
||||
{"uuids": sch_container_uuids},
|
||||
)
|
||||
if isinstance(containers, list):
|
||||
for c in containers:
|
||||
for s in c.get("sort") or []:
|
||||
su = s.get("uuid")
|
||||
if su:
|
||||
sheet_uuids.append(su)
|
||||
time.sleep(sleep)
|
||||
|
||||
# 3. schematic sheets via documents/lists docType=1 (plaintext dataStr per sheet)
|
||||
if sheet_uuids:
|
||||
sheets = _pro_post_json(
|
||||
pro_client,
|
||||
"https://pro.lceda.cn/api/v2/documents/lists",
|
||||
project_uuid,
|
||||
{"uuids": sheet_uuids, "docType": 1},
|
||||
)
|
||||
for s in (sheets or []):
|
||||
doc_uuid = s["uuid"]
|
||||
local_rel = f"source/{doc_uuid}.json"
|
||||
text = json.dumps(s, ensure_ascii=False, separators=(",", ":"))
|
||||
(proj_dir / local_rel).write_text(text, encoding="utf-8")
|
||||
doc_metas.append({
|
||||
"doc_uuid": doc_uuid,
|
||||
"docType": 1,
|
||||
"path": local_rel,
|
||||
"size": len(text.encode("utf-8")),
|
||||
"sha256": hashlib.sha256(text.encode("utf-8")).hexdigest(),
|
||||
})
|
||||
time.sleep(sleep)
|
||||
|
||||
# 4. PCB documents via documents/lists docType=3
|
||||
pcb_uuids = [b["pcb"] for b in boards if b.get("pcb")]
|
||||
if pcb_uuids:
|
||||
pcbs = _pro_post_json(
|
||||
pro_client,
|
||||
"https://pro.lceda.cn/api/v2/documents/lists",
|
||||
project_uuid,
|
||||
{"uuids": pcb_uuids, "docType": 3},
|
||||
)
|
||||
for p in (pcbs or []):
|
||||
doc_uuid = p["uuid"]
|
||||
local_rel = f"source/pcb_{doc_uuid}.json"
|
||||
text = json.dumps(p, ensure_ascii=False, separators=(",", ":"))
|
||||
(proj_dir / local_rel).write_text(text, encoding="utf-8")
|
||||
doc_metas.append({
|
||||
"doc_uuid": doc_uuid,
|
||||
"docType": 3,
|
||||
"path": local_rel,
|
||||
"size": len(text.encode("utf-8")),
|
||||
"sha256": hashlib.sha256(text.encode("utf-8")).hexdigest(),
|
||||
})
|
||||
time.sleep(sleep)
|
||||
|
||||
# 5. supplementary PCB layer assets — coppers / textpath / resources (blobs)
|
||||
aux: dict[str, object] = {}
|
||||
copper_paths = list((manifest_ticket.get("coppers") or {}).keys())
|
||||
if copper_paths:
|
||||
coppers = _pro_post_json(
|
||||
pro_client,
|
||||
"https://pro.lceda.cn/api/coppers/search",
|
||||
project_uuid,
|
||||
{"paths": copper_paths},
|
||||
)
|
||||
(src_dir / "coppers.json").write_text(
|
||||
json.dumps(coppers, ensure_ascii=False), encoding="utf-8"
|
||||
)
|
||||
aux["coppers_count"] = len(coppers) if isinstance(coppers, list) else 0
|
||||
time.sleep(sleep)
|
||||
|
||||
textpath_paths = list((manifest_ticket.get("textpath") or {}).keys())
|
||||
if textpath_paths:
|
||||
textpath = _pro_post_json(
|
||||
pro_client,
|
||||
"https://pro.lceda.cn/api/textpath/search",
|
||||
project_uuid,
|
||||
{
|
||||
"paths": textpath_paths,
|
||||
"project_uuid": project_uuid,
|
||||
"path": project_uuid,
|
||||
},
|
||||
)
|
||||
(src_dir / "textpath.json").write_text(
|
||||
json.dumps(textpath, ensure_ascii=False), encoding="utf-8"
|
||||
)
|
||||
aux["textpath_count"] = len(textpath) if isinstance(textpath, list) else 0
|
||||
time.sleep(sleep)
|
||||
|
||||
blob_hashes = list((manifest_ticket.get("blobs") or {}).keys())
|
||||
if blob_hashes:
|
||||
blobs = _pro_post_json(
|
||||
pro_client,
|
||||
"https://pro.lceda.cn/api/v2/resources/search",
|
||||
project_uuid,
|
||||
{"hash": blob_hashes, "project_uuid": project_uuid},
|
||||
)
|
||||
(src_dir / "blobs.json").write_text(
|
||||
json.dumps(blobs, ensure_ascii=False), encoding="utf-8"
|
||||
)
|
||||
aux["blobs_count"] = len(blobs) if isinstance(blobs, list) else 0
|
||||
time.sleep(sleep)
|
||||
|
||||
# 6. manifest.json — overall index
|
||||
structure_summary = {
|
||||
"boards": len(boards),
|
||||
"schematic_containers": len(sch_container_uuids),
|
||||
"schematic_sheets": len(sheet_uuids),
|
||||
"pcbs": len(pcb_uuids),
|
||||
"symbols": len(manifest_ticket.get("symbols") or {}),
|
||||
"footprints": len(manifest_ticket.get("footprints") or {}),
|
||||
"devices": len(manifest_ticket.get("devices") or {}),
|
||||
"coppers": len(manifest_ticket.get("coppers") or {}),
|
||||
"textpath": len(manifest_ticket.get("textpath") or {}),
|
||||
"blobs": len(manifest_ticket.get("blobs") or {}),
|
||||
}
|
||||
manifest = {
|
||||
"project_uuid": project_uuid,
|
||||
"fetched_at": datetime.now(timezone.utc).isoformat(),
|
||||
"editor_version": project_editor_version,
|
||||
"boards": boards,
|
||||
"documents": doc_metas,
|
||||
"structure_summary": structure_summary,
|
||||
"aux": aux,
|
||||
}
|
||||
(src_dir / "manifest.json").write_text(
|
||||
json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8"
|
||||
)
|
||||
|
||||
return {
|
||||
"source_format": "easyeda-pro-legacy",
|
||||
"source_path": "source/",
|
||||
"source_documents": doc_metas,
|
||||
"editor_version": project_editor_version,
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Single-project crawl
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@@ -48,5 +48,31 @@
|
||||
"skipped_files": [
|
||||
"pro_source: no branch_uuid in project meta for 0c46759837334318aa4882d6d37f96fa"
|
||||
]
|
||||
}
|
||||
},
|
||||
"source_format": "easyeda-pro-legacy",
|
||||
"source_path": "source/",
|
||||
"source_documents": [
|
||||
{
|
||||
"doc_uuid": "7afa5716d98b4f86a3c0707e492282cf",
|
||||
"docType": 1,
|
||||
"path": "source/7afa5716d98b4f86a3c0707e492282cf.json",
|
||||
"size": 280819,
|
||||
"sha256": "792aa7eea759f4428a21bdba092e70a6f88eece9366e982a17dc6e150cf198fd"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "4c011b4cd50a42268e356d1357ac4a1b",
|
||||
"docType": 1,
|
||||
"path": "source/4c011b4cd50a42268e356d1357ac4a1b.json",
|
||||
"size": 19327,
|
||||
"sha256": "aec80810542894439ac76c144dc96dba5f839198a6b378ea7cc9c25b83bb13de"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "ec385364f37c4c14b31eaa17f7bc5452",
|
||||
"docType": 3,
|
||||
"path": "source/pcb_ec385364f37c4c14b31eaa17f7bc5452.json",
|
||||
"size": 734245,
|
||||
"sha256": "e01508abb85ca3df1c31ba02a7de7853cf87139cf891e79f39ae5aad2f1d5ea8"
|
||||
}
|
||||
],
|
||||
"editor_version": "2.1.30.c6721c40"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"project_uuid": "0c46759837334318aa4882d6d37f96fa",
|
||||
"fetched_at": "2026-04-28T13:55:26.721087+00:00",
|
||||
"editor_version": "2.1.30.c6721c40",
|
||||
"boards": [
|
||||
{
|
||||
"sch": "77f6ba494d174a7aaa0d63f0846a8483",
|
||||
"name": "梁山",
|
||||
"pcb": "ec385364f37c4c14b31eaa17f7bc5452"
|
||||
}
|
||||
],
|
||||
"documents": [
|
||||
{
|
||||
"doc_uuid": "7afa5716d98b4f86a3c0707e492282cf",
|
||||
"docType": 1,
|
||||
"path": "source/7afa5716d98b4f86a3c0707e492282cf.json",
|
||||
"size": 280819,
|
||||
"sha256": "792aa7eea759f4428a21bdba092e70a6f88eece9366e982a17dc6e150cf198fd"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "4c011b4cd50a42268e356d1357ac4a1b",
|
||||
"docType": 1,
|
||||
"path": "source/4c011b4cd50a42268e356d1357ac4a1b.json",
|
||||
"size": 19327,
|
||||
"sha256": "aec80810542894439ac76c144dc96dba5f839198a6b378ea7cc9c25b83bb13de"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "ec385364f37c4c14b31eaa17f7bc5452",
|
||||
"docType": 3,
|
||||
"path": "source/pcb_ec385364f37c4c14b31eaa17f7bc5452.json",
|
||||
"size": 734245,
|
||||
"sha256": "e01508abb85ca3df1c31ba02a7de7853cf87139cf891e79f39ae5aad2f1d5ea8"
|
||||
}
|
||||
],
|
||||
"structure_summary": {
|
||||
"boards": 1,
|
||||
"schematic_containers": 1,
|
||||
"schematic_sheets": 2,
|
||||
"pcbs": 1,
|
||||
"symbols": 78,
|
||||
"footprints": 191,
|
||||
"devices": 128,
|
||||
"coppers": 29,
|
||||
"textpath": 3,
|
||||
"blobs": 1
|
||||
},
|
||||
"aux": {
|
||||
"coppers_count": 0,
|
||||
"textpath_count": 3,
|
||||
"blobs_count": 1
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,462 @@
|
||||
{
|
||||
"block_symbol_attrs_groups": {},
|
||||
"blobs": {
|
||||
"f35bd2697fb33f962abd989f4d75d8ff37691527999b11359667cf587722c9b0": 0
|
||||
},
|
||||
"schematics": {
|
||||
"77f6ba494d174a7aaa0d63f0846a8483": 47
|
||||
},
|
||||
"coppers": {
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3732": 1657189663472,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3733": 1657189663477,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3734": 1657189663481,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3735": 1657189663486,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3736": 1657189663491,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3737": 1657189663621,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3738": 1657189663626,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3739": 1657189663630,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3740": 1657189663635,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3741": 1657189663639,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3742": 1657189663838,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3743": 1657189663843,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3744": 1657189663848,
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3745": 1657189663854,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3732": 1656923499158,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3733": 1656923499164,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3734": 1656923499169,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3735": 1656923499173,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3736": 1656923499178,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3737": 1656923499340,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3738": 1656923499345,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3739": 1656923499350,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3740": 1656923499354,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3741": 1656923499367,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3742": 1656923499521,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3743": 1656923499526,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3744": 1656923499531,
|
||||
"2047d1452aff484ba7f854928cb97de7_e3745": 1656923499539,
|
||||
"ec385364f37c4c14b31eaa17f7bc5452_0": 1665992821151
|
||||
},
|
||||
"textpath": {
|
||||
"7e3407ac928a46ac8a8fb8107d8aa5d1_0": 1657189664483,
|
||||
"ec385364f37c4c14b31eaa17f7bc5452_0": 1665992822260,
|
||||
"2047d1452aff484ba7f854928cb97de7_0": 1656923500004
|
||||
},
|
||||
"schs": {
|
||||
"7afa5716d98b4f86a3c0707e492282cf": 31,
|
||||
"4c011b4cd50a42268e356d1357ac4a1b": 13
|
||||
},
|
||||
"pcbs": {
|
||||
"ec385364f37c4c14b31eaa17f7bc5452": 295
|
||||
},
|
||||
"panels": {},
|
||||
"symbols": {
|
||||
"81053c8718d342d09a7c09962459ea23": 3,
|
||||
"200e400b731c4bd5a37771a6e8de966b": 1,
|
||||
"8c5a51cf97044d95877e8f5ee8e19b83": 3,
|
||||
"e577624460ee4a3e976b61a5a4f7ae8b": 3,
|
||||
"ee72950dc33847549ef4bbef4af41ce6": 1,
|
||||
"415fabf07ddc44c1affd0046d6e9f202": 3,
|
||||
"967cdddda7b940c28a0a007442bd1723": 1,
|
||||
"5ee300b19c2446ab830ad3dc3929b842": 3,
|
||||
"ca34bd5d3c9d4769bd47c1bff3d8e5d5": 1,
|
||||
"ba88476e39384514910d41a60f7a6fbc": 3,
|
||||
"f2fcf24dfbcf48aaafe6ae7c86f64192": 1,
|
||||
"ada0bd227e3c4810bf2e4e76349d717b": 3,
|
||||
"19ca194754744b389b76bae667824415": 1,
|
||||
"816cf21f5c8349a0af19c7da594867c0": 1,
|
||||
"6e4c4482999248b494b905a2ca99c858": 3,
|
||||
"42c6531ac8f7462dbf41f72979cc4c4c": 1,
|
||||
"579f471ddca44aa9959bd1a9187fc4e9": 3,
|
||||
"51d2dc283da3410884a3c58bf4dd186d": 1,
|
||||
"e484756b17724e809d4792698ade6b87": 1,
|
||||
"3d27dd06000a481b83d4c6bedea7d812": 1,
|
||||
"88eb4ac23f85452997f83a9ce42857f9": 1,
|
||||
"8015f06b4d9645c0894fae6b7ecc7a5d": 1,
|
||||
"4207adcd7d4243fc8c1f859bff4539d5": 1,
|
||||
"42a67eba22194144a7362e11bbf0eef8": 1,
|
||||
"cc4ec2d43081455280ac2b3cdd147d8b": 1,
|
||||
"43dd51bb93cd472f815f493503571681": 1,
|
||||
"3dff7e8296724125b175a1c30746a307": 1,
|
||||
"525755deee8d4a4684fd15b6b9842c77": 1,
|
||||
"c461ec7c42bb48deb767544ee37679a2": 1,
|
||||
"88fc081783a24e96a4533623ffbaaa03": 1,
|
||||
"2ea4536d41604ff68a1f4bdd386355fa": 1,
|
||||
"81bf7fa7dc7149578d76b16c98a02ede": 1,
|
||||
"070f7839529c472bbea1a00d4cec8378": 1,
|
||||
"3acfff1b31cc4b8e95e0f88c89d5d666": 1,
|
||||
"67398e1f21d34544a400411bb71b851e": 1,
|
||||
"74a9548797724a88a974d05127195ede": 1,
|
||||
"4d88f75bc33146f4934107cdc2888d97": 1,
|
||||
"95daeaef817849dd94edea43d8b648e6": 1,
|
||||
"40fbe875b2714ddea1c55dcd93d4880c": 3,
|
||||
"df8c96bea46d4861a68bc970c6689066": 1,
|
||||
"24b36901651f4166b25c45fba1e76a6e": 1,
|
||||
"d30bd0dc6e084eac83e6cf2389d81eb1": 3,
|
||||
"448df6939a034fb1a4ed3cefa90de404": 1,
|
||||
"121df14e004e43ba880b2b16817c47c6": 1,
|
||||
"f46bad1d285841f582bdf8f67dc445e7": 3,
|
||||
"81213d7d83534666a31c07d8d7fbaa9c": 1,
|
||||
"bae115f7a1164e93829ea596d1dd177c": 3,
|
||||
"46dbc8840e714889bb60d158880992b2": 1,
|
||||
"2dc28695868e4f45b97497bcd8f5e7c2": 1,
|
||||
"a701f086bcd4424e9bd5d6f411da1875": 1,
|
||||
"fa14c7ec172e482c998ac752dadc73bf": 1,
|
||||
"f1c731e0c3864d97b0320176199ef920": 3,
|
||||
"d8d19a39f1b241ef8d251261e59708b8": 1,
|
||||
"ef954e0adf234bab8e2cfad61a9ad523": 1,
|
||||
"1745257e50ba44749f693e9efca3cbb1": 3,
|
||||
"089e1398d95349a5b212f4904de947b8": 1,
|
||||
"04cf7ce02a2140d6aa785dc6d04a7b84": 1,
|
||||
"1637fc60503b4660a7cf9144e589bce5": 1,
|
||||
"af74cfd69b2b4215bd0561907508e677": 1,
|
||||
"2f3e2bb456a746e2b576e37c485a97d1": 1,
|
||||
"be138ca5b2784bf8bce05297d4303cfc": 1,
|
||||
"8d83a68e3ea7459aa5c766373ea06e0c": 3,
|
||||
"0cee305f80914816a874159c6bd5d4bc": 1,
|
||||
"a989d6320f3d4f678467aac6644afc04": 1,
|
||||
"4ffe182d86864476ab6cf73a05352d2f": 1,
|
||||
"7e6e5b2867244d1c9f0261c1a3cad05f": 1,
|
||||
"dcca30a7597d416ba01dc22d08cedcbe": 1,
|
||||
"e678625ed3944ef4b16687316f49e9fc": 3,
|
||||
"d71d50f2615f46aba0d7a321225266ad": 1,
|
||||
"bea4f0fc72aa4dee8fc1e4757b4174b2": 3,
|
||||
"c934425c9a9840ebbe0fc859858c13e5": 1,
|
||||
"90aa42abcb004bc8b34c24b4e351ee49": 1,
|
||||
"28e8a5a46f5e4b7eae9ac54b20095997": 1,
|
||||
"03aead5a0e454d5c9ea2709b38959a46": 1,
|
||||
"1ea84f3dbedf4f1396397a5062268f26": 1,
|
||||
"8ac2c91ba1c94edd8f6406e432684559": 1,
|
||||
"16ba008c546d4efd82195666bb2f5d5d": 1,
|
||||
"19c9976f61d94dd3be155777469a386e": 1
|
||||
},
|
||||
"footprints": {
|
||||
"5f520470e7b34b4e8225ca34a52a5572": 1,
|
||||
"ffd0e6db48374edd9785ae115efa6178": 1,
|
||||
"d4783e56ca874de3aa23a3edde6e8726": 1,
|
||||
"49f4bdf692184cf2886edcfc3c8dbe78": 3,
|
||||
"71eef095a29c4701a5d0fb86f556cdc9": 1,
|
||||
"c7b7d9fd51bc4db88b0294949ebaf68c": 1,
|
||||
"3c962b0ed3eb4c6ebd55d77dbeda19e8": 1,
|
||||
"21f2b9022cdb45818ad0488298cec5f1": 1,
|
||||
"dc48445bba59417fb25c395f5073cd4a": 1,
|
||||
"fd280cf9673d4677928121e003688337": 1,
|
||||
"76711f3cfcf04135ae6e7379c059f0e2": 1,
|
||||
"0217126496a5430193c81eb6cccb1230": 1,
|
||||
"3672c44f9fc84b0997d4690e1ccae35e": 1,
|
||||
"09f5169909ac437f820eb2ec6358becb": 1,
|
||||
"7671889be4e7430cb8cbb55fca4817a4": 1,
|
||||
"653da813ec4a4d1b95904caf402e3fc5": 1,
|
||||
"d68cc41f9c284ab2937cf3cd59e9c48a": 1,
|
||||
"ba022d9d2ffa45d1a824d203a083109c": 1,
|
||||
"51d968978b8e40389940f1160ee684f8": 1,
|
||||
"7904ebb441e24d16a52f795f6960ac9d": 1,
|
||||
"46dd2d06715e467eaf42ab960aa2dcff": 1,
|
||||
"a28721e665204f97b7979d93a1964339": 1,
|
||||
"74a17f32ea194b0d91b22ae6d5e2aa8c": 1,
|
||||
"c08dbeaacdf7410fa3736e5918101313": 1,
|
||||
"bf2431a720694ff9afc920b5fa9fb3fb": 1,
|
||||
"0d7a057d93904b0f9593197841504373": 1,
|
||||
"fac3afb69eb04061a9ab19d0db4dda86": 4,
|
||||
"658218cfe67341c588d4c4ccc2ab71e9": 3,
|
||||
"e2d588e60772451eafcd9b9e9e6bed6a": 1,
|
||||
"99dbfc3618f7478981b9e909f6c6f95d": 1,
|
||||
"3cda6889a88c4d8bb95964f570747955": 1,
|
||||
"c8ebce3c899b4aed9a0382e2350a1096": 1,
|
||||
"f734af0c8f85434d891262699ba53da0": 1,
|
||||
"a06778880a1f4f7cb5d793dd5b35d300": 1,
|
||||
"55c64ff33f83483ebd1fc31ca8aa58c1": 1,
|
||||
"572fb0bbc8f54bb89515adc6b253d06b": 1,
|
||||
"177b5a844d5c456bb441d198f64ffdf1": 1,
|
||||
"39cff7abdaad46178fcbb5f5c62211b9": 1,
|
||||
"c32ab44b10fd4e7d8156cf4f807c5e65": 1,
|
||||
"2af30cea36624cbe8827159ef3c667a6": 1,
|
||||
"c7f7322203c044b1b22c0cdaaf729e9c": 1,
|
||||
"53d0568f642c451f8f0069346e7a3a84": 1,
|
||||
"18df338c5eb141e799bc46df56fcc260": 1,
|
||||
"cc4fa2920f8045138bddbf5144015bf6": 1,
|
||||
"e172c90852584ae7ac828e668f111d69": 1,
|
||||
"d2946628870b4a0da50228f94c667550": 1,
|
||||
"a4ef2a1b5c464670b994dd11d080021b": 1,
|
||||
"be2329e017f44821ab72901a7c2533ab": 1,
|
||||
"837e13e921724de9a1d394e8b755cc0b": 1,
|
||||
"774081f5004c491fa241816e138d54e5": 1,
|
||||
"03ec9b384aff45a7a76ee33208d8d4f0": 1,
|
||||
"31ae1cfeee44451093196d322ecbb26d": 1,
|
||||
"380391f0537649b289d95602606d1dc5": 1,
|
||||
"e2c45440f97d4397bc4c00cde0b22570": 1,
|
||||
"f3d4eac2a71849899e488c2461484472": 1,
|
||||
"46b9cf8ff54b419ca82f58437f05d926": 1,
|
||||
"a2d3b4bca3c343feb105158531ae030d": 1,
|
||||
"a4346f997f074817be6ad6f1130aa33c": 1,
|
||||
"fbb5030c0868458a8fa08247626ab697": 1,
|
||||
"1c56986965b44775a09be881c2976a9c": 1,
|
||||
"8b132c67741d4c9b9fbad68b6a36b02a": 1,
|
||||
"6eeb5c890fa344ad836f44c6fa814c4a": 1,
|
||||
"95b1d2c77ccc40c88cc16776758ff470": 1,
|
||||
"591ffab5df964fbbbcc6dfdc685be003": 1,
|
||||
"46f741b57fd34f7cb271f4777f2b5561": 1,
|
||||
"92a8401c1c3644e8a7c3639fb9fc9a6f": 1,
|
||||
"ba64a9f4472841c5845ec4cfa23c5c98": 1,
|
||||
"7a05a2c649c0496ca1f1dc84bcf62ec4": 1,
|
||||
"7e352858cd3e4c99a2869341c6d3f540": 1,
|
||||
"9cabb935cd3246e1b0423ab6de304926": 1,
|
||||
"8789596169424a9daa657ebb5be18e50": 1,
|
||||
"8bcd729d3a7e40f3848bfdfd5c1cc558": 1,
|
||||
"86e09710151d4224bf86513bb7de0a61": 1,
|
||||
"f11aeed30b004b82be1602dedabb3bb1": 1,
|
||||
"41e2a3a3ebd643008adba4e992e5e66d": 1,
|
||||
"137c3dfc4ce84d4baf68f94a578bf72f": 1,
|
||||
"d8004521cd574304ac301ad07a9faf1c": 1,
|
||||
"ba32fc23f9ea4e11968c5a4465adf858": 1,
|
||||
"134ee68b679b4c9d828d26060e557a35": 1,
|
||||
"f20028cfbd4e4ca4ab87add0821c65d4": 1,
|
||||
"309796174b5f4ac1b02b5bf11696916d": 1,
|
||||
"2aa0dea23c4f4546bfb20a60ef10fbfd": 1,
|
||||
"b1ca5844ce1c45bab31196fabebd9fc3": 1,
|
||||
"6c51f2b48ace4fc1946e01c9d3274466": 1,
|
||||
"3005faf26460439584df52f1bca7eb59": 1,
|
||||
"eb03c565094447f48145cac4e3da6700": 1,
|
||||
"07743ce1b2744a14ae141bb57cb077b3": 1,
|
||||
"19181dc02d18467f89e666fb5a5e2124": 1,
|
||||
"4db616cb99614a58829b81a6a1bb2fef": 1,
|
||||
"d2420c32db8a40568b73f5b02dff151f": 3,
|
||||
"44e41cd5e73b4c1e8cb227570a78d19f": 1,
|
||||
"120ca6a1d4a147478fffcfbc27da47bb": 1,
|
||||
"b979cd90d61a4fe096f298dd7c6024f8": 1,
|
||||
"ec6137b6bf404d3790f5fdfb9e918101": 1,
|
||||
"a4e2be1c4a8542c9bac00eaa34580d9a": 1,
|
||||
"42845b14afda4cfcb56a4e060f54358b": 1,
|
||||
"4999d9f840f94ca4a9957615cfbd2dbc": 1,
|
||||
"5e6df63bf2214a0d8bb3aec60c3a2143": 1,
|
||||
"146818c9c5204bdba846e5867eb663fc": 1,
|
||||
"45b333e50250455fa044061960ada951": 1,
|
||||
"5b3dc2fbe86244edb35f261bf7627473": 1,
|
||||
"9227cee95c0a402baf25f572b62f5be4": 1,
|
||||
"62bc3fb2f0174ea2912c4c160a619e89": 1,
|
||||
"61a5422822ca444ab2426613a42b8343": 1,
|
||||
"dda24cb9adb14dab8f15318f98446f30": 1,
|
||||
"643f4b42967b4cf9a65e438c0927e1ae": 1,
|
||||
"270ad17514824e3ca18920f5ef25d83c": 1,
|
||||
"1d2a9f0a4eed4384854c8c700547e1ff": 1,
|
||||
"edec355d7d8d4ea1b111774b96d0ae77": 1,
|
||||
"96591771713f4736be1ad7ba86a13d27": 1,
|
||||
"537e2c0ac4f54fe8bb3cb74616fee2f1": 1,
|
||||
"3e9fc0b53a214fd9b6ee4164ac9bddd7": 1,
|
||||
"0e14e1ca8bc04e089beadff274c3d704": 1,
|
||||
"f01d8778bbab49e5878f324b8a85321e": 3,
|
||||
"055312e665fa4f8489187f0e60b0675c": 1,
|
||||
"b392e504c2954308b91c48fac19e7d1e": 1,
|
||||
"45aa9f39824f42dd9f07a78d300c93ef": 1,
|
||||
"d0eb9b9a20cf4d6f8227ac0c914d0147": 1,
|
||||
"6cc5e53df7b241df9eb0e93fe95b5bae": 1,
|
||||
"24969b597505495aaaf897e1ff27762f": 1,
|
||||
"ed32763c20244b7098e37d779cbd3559": 1,
|
||||
"b4dd4f0cd02943189e78a37edc050e0a": 1,
|
||||
"b29f0f6832834683be23289d23d6699e": 1,
|
||||
"5c6c4ecdb98d4df3b60e30d4ccc06c05": 1,
|
||||
"32113a6970ae42c58f7b19a802537999": 1,
|
||||
"5bd9bca2db9843838c3d0f2dd6638b4d": 1,
|
||||
"37fb651ac2ec4fe2a416acb30e731167": 1,
|
||||
"77b62f2779c54ff8be921f50b8f73b45": 1,
|
||||
"256389f8a14f4b56934d7a2ee03d2843": 1,
|
||||
"52394026fe574bbfb1b41217ec08bf0e": 1,
|
||||
"3e663825a72c4d50ab11d401867f846c": 1,
|
||||
"3387f52370134a369d07ea6f96ca4e18": 1,
|
||||
"81158bed47ad48d1a6a054819947b4dc": 1,
|
||||
"0b7c49755aec4112badbbde2c6e15b9d": 1,
|
||||
"9c0e953bdca24aa887abc90fb520cdbd": 1,
|
||||
"67065d739cb34b9b99c09b044db62f67": 1,
|
||||
"0d5582bb47514cb8994117ec89e1fcef": 1,
|
||||
"7c67ad84784041ac9757e578f6208834": 1,
|
||||
"357be0f58d294180af74d66cac0b4eae": 1,
|
||||
"f96dd7550a74481e893c9fa646816c89": 1,
|
||||
"263037fa58cd4f4e8c7eac1987aaa8ff": 1,
|
||||
"1868280105b447ad8b15a6720f4dc6fd": 1,
|
||||
"2d6cec0f71e14d308d9c26fd9eb53c2c": 1,
|
||||
"0617f4f5ee0248489847dc9b5deaf33e": 1,
|
||||
"b70550b56cc04a54aa1daacf1495e434": 1,
|
||||
"4b20fd16236440b195ef1dee96701ef7": 1,
|
||||
"988ae2115b3c415e83bbb2562de9ec05": 1,
|
||||
"c36f1b9917df4d10930168424d2a7c2b": 1,
|
||||
"24b76532d9224eae897edaa8f5699539": 3,
|
||||
"7ebc02862838406e90311f8714b4dbd8": 1,
|
||||
"4e9b0964792141508a2a32e700f66f3a": 1,
|
||||
"accfe76b011c41f3b9b331512549fe6e": 1,
|
||||
"615a676e618944ffaf514a98ac75665a": 1,
|
||||
"74b96d1b2ed2463aa3fdffdb3b2225e0": 1,
|
||||
"6e9b49fccc1d4da4aed0a8dbf165191e": 1,
|
||||
"21ad54c3a1594265bafffdadbeada5fb": 1,
|
||||
"fc4d9dda97e648498f4b0c8c507f2da0": 1,
|
||||
"91f7944bc3b1472b801a6afa8664a040": 3,
|
||||
"510f660076b24a0881aa35ca82def5ee": 1,
|
||||
"ca5041031e284654bf084ada2dfb4f07": 3,
|
||||
"1d54df24c85f45a0ab0a524763370a4e": 1,
|
||||
"ce88abc5412d40ad9a3d47f7054387a1": 1,
|
||||
"ab1d54216a9e4b32959d9eb13a35b3f6": 1,
|
||||
"32e773ab3207422487f809ebc5950479": 1,
|
||||
"098d567a3ea64392a76c60eec8048947": 1,
|
||||
"f46dca36b9494e5093603b3de23359e5": 1,
|
||||
"b2ccd774b1d0442296e063fc959120e5": 1,
|
||||
"f3b236e210f64a52916baf41d7b69577": 3,
|
||||
"dec63448cebe43f59251906a1cc278fc": 1,
|
||||
"55b22c36ca214d69a04816736748f14c": 1,
|
||||
"ac837b23230e4282864da37baad84593": 1,
|
||||
"b2dceb0c89ff47b8b145a2ca2b68b213": 1,
|
||||
"650c7a8bfae049dbbe965918d6f62315": 1,
|
||||
"fc3aa0d9830d4ac1bd1692e192d67126": 1,
|
||||
"3bc167529dba4df5b664d29979259156": 1,
|
||||
"66d95955e4c44095a6030f45cd91ef39": 1,
|
||||
"82440f5e79fe4dcca44d7023743c89ae": 1,
|
||||
"fb54f8014d68462e925e5e8c61aaade9": 1,
|
||||
"c7e576f7c56543ceb80fbfc944b2e066": 1,
|
||||
"49800396778041418863e795b6191f14": 3,
|
||||
"82b92fac6f174549a23bbfda8d5e2ebe": 1,
|
||||
"26e6177e002e4e60b6fc30e4c35a8022": 1,
|
||||
"5e58cf77e1004ffeb982ed3414d517a2": 1,
|
||||
"eb234c06b36849f493d3006c4a5bb16f": 1,
|
||||
"15f7ed7049834b7897d7eeccecc52449": 1,
|
||||
"2281ead5450b4565a59f6f5547697540": 1,
|
||||
"cfb819b8395b4b9094f51a6f95a98f70": 3,
|
||||
"f05cbe6c6fbc474681cca820aa914a30": 1,
|
||||
"8a0768029fdb439b9e41119c48e21317": 1,
|
||||
"2def6eef716f4097ae1230f36a921274": 1,
|
||||
"de4baa96513a4380ae1213b3911381f3": 6
|
||||
},
|
||||
"devices": {
|
||||
"4cd69fe5810240c4ab2140f6e0c7a19e": 2,
|
||||
"388c50acc7834979ada15c9e0dcd29b0": 1,
|
||||
"9d922d79a4a849249e0d35114740f26d": 1,
|
||||
"b8bdf1443d884078adeacc5132a592e0": 1,
|
||||
"8366952daea74b9d83bddc1d280925a3": 1,
|
||||
"ccb27c90ed8b4ecc8b3d39dc45cc6819": 2,
|
||||
"a91ffb4720d04ab9b4e43cd752925431": 1,
|
||||
"00b85ed49c8b4967906fa2f460ada978": 1,
|
||||
"84a148bc209c437898dcaa8cbff05dc9": 1,
|
||||
"9f93a7a3ba234d7ab09b8a1d4a7ed839": 1,
|
||||
"395d5e8a4e33428aa4c568e71bf145ed": 1,
|
||||
"e8cf7d05a9ea4b75b4e3d72219998c3b": 1,
|
||||
"671ff5dbb53540639795c7dd182b511e": 1,
|
||||
"e529fe9158344eeaba4dc6a3b14e56cb": 1,
|
||||
"df6c37b14816454d9bc2225581053b55": 1,
|
||||
"3795846e22514759b55ef2c65d1ed1f9": 1,
|
||||
"6f51985f64a34ddf947e8c7967306446": 1,
|
||||
"07c9c6c2c44046349eefa72c5e93f332": 1,
|
||||
"78a8e7ecd9364adb894e2d4226f64e03": 2,
|
||||
"becc7bcf425743f68ddd3e6cde510d89": 4,
|
||||
"229528d884854d09b94a681189ed632c": 1,
|
||||
"0c8a2a5c8a124c4b8ee32a41e1902837": 2,
|
||||
"f5e7608c6a1b4c8aa139ebf0b9711f59": 1,
|
||||
"8f69913803be4d0889b8ca90eca9cf1d": 1,
|
||||
"afb4b5294b2240b596efb6ca88db0a16": 1,
|
||||
"d39b996b87384a1581cd029ff54a9f57": 1,
|
||||
"62b44fd971194202982dd44c214c0716": 1,
|
||||
"134736035c6e4ce1a4b0d48619914f48": 1,
|
||||
"0d39fab8436d4c6f874b9fadb23ba160": 1,
|
||||
"965533674a79463faf2567e25f8f64fe": 1,
|
||||
"1ab1c1abd4574cc59557192e900a877d": 1,
|
||||
"f083fc72ee71493e8dc2593d7ccc612c": 1,
|
||||
"41ccd3f5450446c3a950cee91cff9a21": 1,
|
||||
"8a6a1eb260014242ad95343e755c81e7": 1,
|
||||
"917fb128ecc14197a99bf1db6e54f9a9": 1,
|
||||
"09df7273d83943c9b2019878d8718a8a": 1,
|
||||
"d5dc32eae0b141a5bbe86ed3616017a6": 1,
|
||||
"8c83ed49060f48bebcf59372156cee09": 1,
|
||||
"f468ce6c5573474999db0e55dba50707": 2,
|
||||
"be5ac0e9a3e6468e8fa7ebdae56c58e9": 1,
|
||||
"16869af292fc47128dce30b918e23b41": 2,
|
||||
"ff13441528ce4a4f9d92e50ca65f9f0d": 1,
|
||||
"6ae0c14f255b4c17a99d4b3bd9517731": 1,
|
||||
"34dfbaf5cf9b419fbb8adeb4b0727461": 1,
|
||||
"2c3da7fd83e243519ec4b2fa54cd8f79": 1,
|
||||
"cd9e4897231548dcaa6cfca4bb94a541": 2,
|
||||
"ca935987ae5248e08ff51ee33f36acae": 1,
|
||||
"fa8058e7cef345f4a25e656af55965c2": 2,
|
||||
"469c5c48a90f4d869d388a5d6e84d1eb": 1,
|
||||
"cb4a212fcdbc404a908b8e279484090e": 2,
|
||||
"770f1f297cf14ccfaa736c97e77d8b54": 1,
|
||||
"82c301317c31426d83c3a6c40676c020": 2,
|
||||
"efd2b1a9b2394614947b7e06c91ffe09": 2,
|
||||
"f90a3837c0ac4975ae432ceb53966800": 1,
|
||||
"d7a2a20ddc064d0f80bf2c8a5361bef5": 1,
|
||||
"08fa53fdcfab4c8badd31decdd1e1283": 1,
|
||||
"fffe34a4637244578239dd24d6621573": 1,
|
||||
"8ff8bed1c6cb43df9a976f3a600ccbed": 1,
|
||||
"2ed66d0aa7ba498e9e4228076af87446": 1,
|
||||
"605682e6991f43c4b0bca0b7dadb5f83": 1,
|
||||
"a95e58039ccf482eb131b78f94f9d531": 1,
|
||||
"4a41cd8740d44bfb9272f4a7e1c19c36": 1,
|
||||
"71dac3687a544edb8c49fd745fdcc5c3": 1,
|
||||
"4763cb9a4ff1401dadac458162b432a4": 2,
|
||||
"3ee26e887c40421192ed0cc8e034a5ef": 1,
|
||||
"e7528077749c4765b9560036ef75e203": 1,
|
||||
"5451b5b925254e9599e99600af6050f2": 1,
|
||||
"577b5858ec084f938d03011a3eb5bc2f": 1,
|
||||
"6bd2136f4bd547859aa0cc0d09b0a888": 1,
|
||||
"39f6603490e74f92acf42c8b6eebcec1": 1,
|
||||
"ffd3db4e96a3402fa89fc280ba15978f": 1,
|
||||
"c68f40bef7964f7d926aeb8af74fa247": 1,
|
||||
"7123897720f44079a478907144d54a9c": 1,
|
||||
"c65d651ffb25409ab2377929871c9bb7": 1,
|
||||
"56f06eda21734608ab37d9da36f223c0": 2,
|
||||
"0237853589e34b519e220dfe09c3d803": 1,
|
||||
"4ce5709d17e641e6a049b84023130b3e": 1,
|
||||
"1ed61009104e44049c924c00a86575a9": 1,
|
||||
"6e513e57f8e7403ab97b861cc11df65e": 1,
|
||||
"77f97233b58e45da954ddd73e9badddc": 1,
|
||||
"eb8dcaaee1c545d992762eb0f2a0168b": 1,
|
||||
"0cb2a315060c435b92eb9f2d7adfa851": 1,
|
||||
"051adb026436453db823946aa593d0ec": 1,
|
||||
"f09022f8deb442b683877e463932e995": 1,
|
||||
"6d7b066c92e745a989f67ad87117352f": 2,
|
||||
"a217f3ee3e1f4f17888aeedbb89a84f2": 1,
|
||||
"91de38e90be44f0fa38846ea46093027": 2,
|
||||
"b0d8a53d299d4f298aab5b0e26316fa2": 1,
|
||||
"83f6f974cd4942349fc33b95ace95e83": 1,
|
||||
"66182d10b57c44aaacd49fc51e837d38": 1,
|
||||
"264d032aad504ca6a724263e20226b1b": 1,
|
||||
"d989cc909dce427b8b14830be48afe6b": 1,
|
||||
"3ab7742fcbc74d7ab40cf4a4e6544e2f": 1,
|
||||
"a0c781ace57240c6acfd242e994acfa1": 1,
|
||||
"b3e1409fc2d54cf895ee52f70daea0ab": 1,
|
||||
"34b41dc5424d40c9a777c0f1ad933adb": 1,
|
||||
"cd5ca747b6a34bb7b08913c0abf79ae7": 1,
|
||||
"1d695d7585fb4ec98fbc1eb28c08097d": 1,
|
||||
"a4b600c9d46b45c7952ecc155d27727a": 2,
|
||||
"6723e54f7bea48e9bbf2753b080c0e85": 1,
|
||||
"78359370176e40f3bd683b5f02adb0dd": 1,
|
||||
"b3be7e54fff14a988eca58ad02c68ed7": 1,
|
||||
"081226491a5f45769317dfd6d77452e8": 1,
|
||||
"d06e73307baa4af6b54a6a71b25c707e": 1,
|
||||
"1fac7551b4944a1098c372160bc083a0": 1,
|
||||
"b19e218d65aa41adbff0099900237ead": 1,
|
||||
"a5e752432a1f403383d15140c2aca294": 1,
|
||||
"b69769a23e944a3db1ac68dadfbd9990": 1,
|
||||
"2f25b4a62b2947b8bbc0a04fc923ae5c": 1,
|
||||
"3be491c9a27f477195530b55a33d3c06": 1,
|
||||
"a1d48ccdc8774d349738651568481f3d": 1,
|
||||
"060e312c6c8140e2aeae21b9499e3e7f": 1,
|
||||
"223151846908451ca53b6df704f0f152": 1,
|
||||
"95a82cf85de94942b08ed706ad468a33": 1,
|
||||
"bb5776792a4647ca9e4a805a8dbc70b7": 1,
|
||||
"a4fceaff25c34b339035f656fe60f1fd": 1,
|
||||
"eccdcc7bac484af69c572257d8b70707": 1,
|
||||
"3458a11d495b450fbe81ec1d9beb11c5": 2,
|
||||
"a051129e790c4250a5a2f8c122f19649": 2,
|
||||
"4d3294fe8b924d86a38c74fc7eb52b3e": 1,
|
||||
"e7b9c84345ff4456b69c48f6a60e0253": 1,
|
||||
"d8dfdc67a3ac47c0bdeb111062bc9845": 1,
|
||||
"88e5887fa7304fec9fd2f3c946f86792": 1,
|
||||
"9bcba52cae894a8d9c6341bcae3e0d42": 3,
|
||||
"dc7bd237e4ed447e8085ecd73747bb7d": 1,
|
||||
"9e7985a7a7c4466b938a9094ab4fa203": 1,
|
||||
"274880abc7474fe3b60c84aea4e67586": 4,
|
||||
"89a35e9105224dbf8da5b4a3f333163f": 1
|
||||
},
|
||||
"block_symbol": {
|
||||
"2c109d00018f4c0f96205ebf64ee0098": 1
|
||||
},
|
||||
"project_uuid": "0c46759837334318aa4882d6d37f96fa",
|
||||
"g_ticket": 7049,
|
||||
"ticket": 37
|
||||
}
|
||||
@@ -38,5 +38,220 @@
|
||||
"skipped_files": [
|
||||
"pro_source: no branch_uuid in project meta for 7360e73de5dd428e9f29e10573f2d8ac"
|
||||
]
|
||||
}
|
||||
},
|
||||
"source_format": "easyeda-pro-legacy",
|
||||
"source_path": "source/",
|
||||
"source_documents": [
|
||||
{
|
||||
"doc_uuid": "560bd0a5ad4247b99a5038770b717786",
|
||||
"docType": 1,
|
||||
"path": "source/560bd0a5ad4247b99a5038770b717786.json",
|
||||
"size": 2607,
|
||||
"sha256": "a89f642869ad5b6dfafb559786b88b2ba21d1d4a283d5852063c3f540053910a"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "afd056d94ae848c3a866181a4890394b",
|
||||
"docType": 1,
|
||||
"path": "source/afd056d94ae848c3a866181a4890394b.json",
|
||||
"size": 1908,
|
||||
"sha256": "425c60b89042564aed24293d6b1f3f3edf91bc10b2a961971d418ef654b5bef5"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "388fe5b93cd749aaae609709b3c665cc",
|
||||
"docType": 1,
|
||||
"path": "source/388fe5b93cd749aaae609709b3c665cc.json",
|
||||
"size": 45844,
|
||||
"sha256": "edb693d67dc452e26b2962f2a02782008abc1853408de73fd0f61470b652905d"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "8978aa570ee146f8bd69a5fb6c8c60dd",
|
||||
"docType": 1,
|
||||
"path": "source/8978aa570ee146f8bd69a5fb6c8c60dd.json",
|
||||
"size": 30530,
|
||||
"sha256": "4b34d756f4c43ae391c13c4e089072f9ec4b44bbb098dae313331ecc76beb9ca"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "c25fe0ff97af465ab78960c749c53db1",
|
||||
"docType": 1,
|
||||
"path": "source/c25fe0ff97af465ab78960c749c53db1.json",
|
||||
"size": 52808,
|
||||
"sha256": "4078193c938073c6101c138c05a1569ff5d59a7c839e291aff6d91a864b326c2"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "81636a72fcce4361b8fd4e9a1a9a4e9b",
|
||||
"docType": 1,
|
||||
"path": "source/81636a72fcce4361b8fd4e9a1a9a4e9b.json",
|
||||
"size": 19318,
|
||||
"sha256": "c82e0cd4124c36cb07543ecc759cb8d3dc1926d98724f8daf81d4ab00c1792d7"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "ef83fee8093541a5bda0d0e4937b59b9",
|
||||
"docType": 1,
|
||||
"path": "source/ef83fee8093541a5bda0d0e4937b59b9.json",
|
||||
"size": 26094,
|
||||
"sha256": "1697d4db2ac188cb480ab13736a9fa375918447541fde7d1492dfe70269c32b6"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "759feacd725c47b7bb422003ca237677",
|
||||
"docType": 1,
|
||||
"path": "source/759feacd725c47b7bb422003ca237677.json",
|
||||
"size": 24578,
|
||||
"sha256": "4189a39c3538dfdf52ce145fabb49993dd2dbe0a449425437e2b8e0aa08db7d0"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "918c7c2b42ce4214b72a92733b1387f0",
|
||||
"docType": 1,
|
||||
"path": "source/918c7c2b42ce4214b72a92733b1387f0.json",
|
||||
"size": 24334,
|
||||
"sha256": "ddaa09d755057221f583bf91e8a79e15ad82d54dec8b178f210fc9e29a24ee44"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "d14da6d3d80242b0b40f4968d68ba56b",
|
||||
"docType": 1,
|
||||
"path": "source/d14da6d3d80242b0b40f4968d68ba56b.json",
|
||||
"size": 46386,
|
||||
"sha256": "510eab11d8645f96784b67d0904bef5975d83a3304c19a3341fd2b6c395a30a0"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "0f73056574c0440791bef8566f4ee66f",
|
||||
"docType": 1,
|
||||
"path": "source/0f73056574c0440791bef8566f4ee66f.json",
|
||||
"size": 10669,
|
||||
"sha256": "a5140d61215f4e51290003553550b95ae799079c8a4b6fa70153ae5439154daf"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "0bc01399ab3146faa20cc538add2623f",
|
||||
"docType": 1,
|
||||
"path": "source/0bc01399ab3146faa20cc538add2623f.json",
|
||||
"size": 8647,
|
||||
"sha256": "680116ef85ff46cc11eaf2c970b2b471e99685b5dd71fbdc20e29ffd410ec118"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "18527068e7b9496f8ab210bd80badaf8",
|
||||
"docType": 1,
|
||||
"path": "source/18527068e7b9496f8ab210bd80badaf8.json",
|
||||
"size": 49052,
|
||||
"sha256": "98b3bdeb62ec920f1b383a0d7a0ab305f377c4a7e4f2e8b60d13561c21505e98"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "c21722463acd45a394e68d9065952e3d",
|
||||
"docType": 1,
|
||||
"path": "source/c21722463acd45a394e68d9065952e3d.json",
|
||||
"size": 116026,
|
||||
"sha256": "a59c84e2245e9bc71255932f1b108434ceb2cd0a458c3f5c061db151795ec6aa"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "63c0af70041349518b4cb52eee44305e",
|
||||
"docType": 1,
|
||||
"path": "source/63c0af70041349518b4cb52eee44305e.json",
|
||||
"size": 25835,
|
||||
"sha256": "e0e2519e4f09bee493c67ae8f7655a2a8f62443ca7700a4b12e4a37dd5bb3a69"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "6beb4806ff3e497194aa203be71404a4",
|
||||
"docType": 1,
|
||||
"path": "source/6beb4806ff3e497194aa203be71404a4.json",
|
||||
"size": 29251,
|
||||
"sha256": "a8e44ac4ed97ec2945f912449aae28c3cc393aa755d3490be49b171e57cae336"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "73e72a6798e14da4a7f850412fa8e2aa",
|
||||
"docType": 1,
|
||||
"path": "source/73e72a6798e14da4a7f850412fa8e2aa.json",
|
||||
"size": 50973,
|
||||
"sha256": "e1ae8dedade3e997cc18eaccbef22a3d76ad0ea59a477c7398d98ce7220986ad"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "ee2b876552f54525babb9f18b84c8412",
|
||||
"docType": 1,
|
||||
"path": "source/ee2b876552f54525babb9f18b84c8412.json",
|
||||
"size": 823,
|
||||
"sha256": "157f7cbd50c201e7ed00ad64857dbe432382f2a1ac2f5b85ce766f6c1d68c0f8"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "a4d9c80b9ed04fbfa8887614143f69c1",
|
||||
"docType": 1,
|
||||
"path": "source/a4d9c80b9ed04fbfa8887614143f69c1.json",
|
||||
"size": 44032,
|
||||
"sha256": "b7f97f221ba06028742bc2c5581069d8ba5be3d2b7807f80b7e2a86e72fefe99"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "33158668940f4e6f8fd14bec7c34d622",
|
||||
"docType": 1,
|
||||
"path": "source/33158668940f4e6f8fd14bec7c34d622.json",
|
||||
"size": 9365,
|
||||
"sha256": "c3c8691ba7b38255eae60b6d1c11353c01789df8b6bc897cf1b84bcf837cd073"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "fa9c85ce30de40c38003ef12b8723134",
|
||||
"docType": 1,
|
||||
"path": "source/fa9c85ce30de40c38003ef12b8723134.json",
|
||||
"size": 41959,
|
||||
"sha256": "d454a4a938ffcbd52ab62ebda97f7b494d15fe22a9d3cf2636386c78dcc94965"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "c6346fddfbe44e1ca6d7d6b4c797cd81",
|
||||
"docType": 1,
|
||||
"path": "source/c6346fddfbe44e1ca6d7d6b4c797cd81.json",
|
||||
"size": 36524,
|
||||
"sha256": "13bb231c7d8c1f9bf59a07f9e27eeeb9bca54854e9413ba706b9949007c0fa71"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "60c401439f0242d6b8878d50b7420df7",
|
||||
"docType": 1,
|
||||
"path": "source/60c401439f0242d6b8878d50b7420df7.json",
|
||||
"size": 36153,
|
||||
"sha256": "7d34efae54fe5667f2dd1a7c13cd28049ef2570fb0e566997d18d6448bdd1b5f"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "12a94c86b6954795a15be0ef9d904ece",
|
||||
"docType": 1,
|
||||
"path": "source/12a94c86b6954795a15be0ef9d904ece.json",
|
||||
"size": 13383,
|
||||
"sha256": "2bf73d8712dbc904cf081599db13c6d8c93bd7c83891ee36cd4fa9b144d32610"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "617ae0c3ecda4008b528d33a30c09146",
|
||||
"docType": 1,
|
||||
"path": "source/617ae0c3ecda4008b528d33a30c09146.json",
|
||||
"size": 34656,
|
||||
"sha256": "cf6f067a3227b3111fbf7e5aba962e16b17144f0786568b73b820c7eb4ad4cd9"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "1a7e93d2007948609476b6fced37f663",
|
||||
"docType": 1,
|
||||
"path": "source/1a7e93d2007948609476b6fced37f663.json",
|
||||
"size": 25544,
|
||||
"sha256": "87a80686f2b538cecd7c4c5627646f585f11caba7ffb74c40d29a20ccdc76179"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "afac947683374ce4a0617e2f378df9e8",
|
||||
"docType": 1,
|
||||
"path": "source/afac947683374ce4a0617e2f378df9e8.json",
|
||||
"size": 13330,
|
||||
"sha256": "33252f933379357b54467b13908d3d47fab986c9710e8b997ba1a9151aa85e5b"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "87e45b6fd1ab42eda99b95e6beecaa64",
|
||||
"docType": 1,
|
||||
"path": "source/87e45b6fd1ab42eda99b95e6beecaa64.json",
|
||||
"size": 38933,
|
||||
"sha256": "44b53a3e68f09e112d5a9f3129babd44f15dd48a847511f4429f577696107fa3"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "77ac252964cc4a12a4e0e9fd07851f79",
|
||||
"docType": 1,
|
||||
"path": "source/77ac252964cc4a12a4e0e9fd07851f79.json",
|
||||
"size": 15607,
|
||||
"sha256": "ebf2284abe4df5ccab1a88bb14829363a4d918c81c5b22c1b80bc6ff145862ad"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "89ef5a826c7f494ab398b791825aa8f0",
|
||||
"docType": 3,
|
||||
"path": "source/pcb_89ef5a826c7f494ab398b791825aa8f0.json",
|
||||
"size": 782,
|
||||
"sha256": "026d63e79eca3212602dfccdce6cb722b1157ceaf0ab17dcb7ad4d0858b7c971"
|
||||
}
|
||||
],
|
||||
"editor_version": "2.1.40"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"uuid":"560bd0a5ad4247b99a5038770b717786","created_at":"2023-12-01 14:36:51","creator":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"dataStr":"[\"DOCTYPE\",\"SCH\",\"1.1\"]\n[\"HEAD\",{\"originX\":0,\"originY\":0,\"version\":\"2.1.39.1e0cbcef\",\"maxId\":104}]\n[\"COMPONENT\",\"e1\",\"\",0,0,0,0,{},0]\n[\"FONTSTYLE\",\"st1\",null,null,null,20,null,null,null,null,1,1]\n[\"ATTR\",\"e19\",\"e1\",\"Symbol\",\"560bd0a5ad4247b99a5038770b717786_sheet\",0,0,2506,-116,0,\"st1\",0]\n[\"FONTSTYLE\",\"st2\",null,null,null,null,null,null,null,null,null,null]\n[\"ATTR\",\"e34\",\"e1\",\"Footprint\",\"\",0,0,null,null,0,\"st2\",0]\n[\"ATTR\",\"e3\",\"e1\",\"Company\",\"嘉立创EDA\",0,0,998,30,0,\"st1\",0]\n[\"FONTSTYLE\",\"st3\",null,null,null,15,null,null,null,null,1,0]\n[\"ATTR\",\"e4\",\"e1\",\"Drawed\",\"\",0,0,558,120,0,\"st3\",0]\n[\"ATTR\",\"e5\",\"e1\",\"Reviewed\",\"\",0,0,558,100,0,\"st3\",0]\n[\"FONTSTYLE\",\"st4\",null,null,null,15,null,null,null,null,1,1]\n[\"ATTR\",\"e6\",\"e1\",\"Version\",\"V1.0\",0,0,718,30,0,\"st4\",0]\n[\"ATTR\",\"e7\",\"e1\",\"Page Size\",\"A4\",0,0,800,30,0,\"st4\",0]\n[\"ATTR\",\"e8\",\"e1\",\"@Project Name\",\"立创·泰山派开发板\",0,0,920,100,0,\"st1\",0]\n[\"ATTR\",\"e9\",\"e1\",\"@Page Count\",\"29\",0,0,1102,61,0,\"st4\",0]\n[\"ATTR\",\"e10\",\"e1\",\"@Update Date\",\"2023-12-01\",0,0,1010,180,0,\"st3\",0]\n[\"ATTR\",\"e11\",\"e1\",\"@Create Date\",\"2023-12-01\",0,0,1010,160,0,\"st3\",0]\n[\"ATTR\",\"e12\",\"e1\",\"@Schematic Name\",\"schematic\",0,0,730,170,0,\"st1\",0]\n[\"ATTR\",\"e13\",\"e1\",\"Part Number\",\"\",0,0,1010,140,0,\"st3\",0]\n[\"ATTR\",\"e14\",\"e1\",\"@Page No\",\"1\",0,0,985,61,0,\"st4\",0]\n[\"ATTR\",\"e15\",\"e1\",\"@Page Name\",\"立创·泰山派愿景\",0,0,730,140,0,\"st4\",0]\n[\"FONTSTYLE\",\"st5\",null,null,null,\"10\",null,null,null,null,null,null]\n[\"ATTR\",\"e18\",\"e1\",\"Device\",\"3147b110bcd447c49c6e9be850a52941\",0,0,null,null,0,\"st5\",0]\n[\"OBJ\",\"e87\",\"\",-15,815,1200,819,0,0,\"blob:337b532b50ca29c4a3d0d3c8a183a0b51f33f243bc77843f9f5a6eeb4833c137\",0]","description":"","display_title":"立创·泰山派愿景","docType":1,"modifier":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"project_uuid":"7360e73de5dd428e9f29e10573f2d8ac","schematic_uuid":"6394f41146404ead95ba248444940c6c","sheet_id":35,"ticket":3,"title":"立创·泰山派愿景","updateTime":1701414419,"thumb":"https://image-pro.lceda.cn/pullimages/0ad59617d4144490a454702f051ead9f.webp","guest":false,"writable":false}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"uuid":"afd056d94ae848c3a866181a4890394b","created_at":"2023-12-01 14:36:51","creator":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"dataStr":"[\"DOCTYPE\",\"SCH\",\"1.1\"]\n[\"HEAD\",{\"originX\":0,\"originY\":0,\"version\":\"2.1.39.1e0cbcef\",\"maxId\":120}]\n[\"OBJ\",\"e101\",\"\",10,815,1145,910,0,0,\"blob:1861f0a4e64308e961db12c44385b49127695b46990bb78fa3a92777bfb7c586\",0]\n[\"OBJ\",\"e103\",\"\",10,-90,1149,1535,0,0,\"blob:ffa3c8eb63af65aead1f39bc3470ac4d6c6a5f2fe98dab8d5c3d6e8f66bcbebb\",0]\n[\"OBJ\",\"e105\",\"\",0,-1615,1166,1260,0,0,\"blob:8c90c73fd15a0ce1a09833789aef43d8da4b19aad7f2581e08715f376c80144d\",0]\n[\"OBJ\",\"e107\",\"\",0,-2865,1165,1086,0,0,\"blob:e2d87a4da09ce1ae2d0aead4b6d02d35055efe3a3b7b3fd58d183e53f7922f0e\",0]\n[\"OBJ\",\"e109\",\"\",-5,-3955,1180,840,0,0,\"blob:5cefe8f5df05e95c4f27abb3533795fdd7873411da26b55df51fe84c82aafda0\",0]\n[\"OBJ\",\"e111\",\"\",-30,-4795,1233,985,0,0,\"blob:569bc7e255d26d0b3256827c1f3677592a40738c58b3b3eb5dfbd3da25ee532a\",0]\n[\"OBJ\",\"e113\",\"\",-50,-5780,1255,1251,0,0,\"blob:e02393b31dc68a460c99d067097b833b670d0f6bf1b5062f50b9bbcad53a32b2\",0]\n[\"OBJ\",\"e117\",\"\",-55,-7570,1262,1160,0,0,\"blob:f9775497ecf23a7689451136ff45f366ba1f9ddb862ba708460250f2231cca4d\",0]\n[\"OBJ\",\"e119\",\"\",-55,-7030,1270,551,0,0,\"blob:9016468c5a069f8459a3c9404bc96df7c4bf898aa483132fc157360ee24062cd\",0]","description":"","display_title":"立创·泰山派简介","docType":1,"modifier":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"project_uuid":"7360e73de5dd428e9f29e10573f2d8ac","schematic_uuid":"6394f41146404ead95ba248444940c6c","sheet_id":34,"ticket":3,"title":"立创·泰山派简介","updateTime":1701413723,"thumb":"https://image-pro.lceda.cn/pullimages/efc9af7c5482497889504c012db477cf.webp","guest":false,"writable":false}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"uuid":"ee2b876552f54525babb9f18b84c8412","created_at":"2023-12-01 14:36:52","creator":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"description":"","display_title":"LPDDR4","docType":1,"modifier":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"project_uuid":"7360e73de5dd428e9f29e10573f2d8ac","schematic_uuid":"6394f41146404ead95ba248444940c6c","sheet_id":18,"ticket":5,"title":"lpddr4","updateTime":1730173452,"thumb":"https://image-pro.lceda.cn/pullimages/44e0e07227184d8c8ca26985aa951269.webp","dataStrId":"https://modules.lceda.cn/datastr/1a/65/be/10/90db41cf964da8b0afc65972","iv":"6622440cbbb005885292818a","key":"872a915265d1b696ede0e8dd46453eb01cea77e9a149d75fae79f00aefcc8c1f","guest":false,"writable":false}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,239 @@
|
||||
{
|
||||
"project_uuid": "7360e73de5dd428e9f29e10573f2d8ac",
|
||||
"fetched_at": "2026-04-28T13:56:24.057828+00:00",
|
||||
"editor_version": "2.1.40",
|
||||
"boards": [
|
||||
{
|
||||
"sch": "6394f41146404ead95ba248444940c6c",
|
||||
"name": "Board",
|
||||
"pcb": "89ef5a826c7f494ab398b791825aa8f0"
|
||||
}
|
||||
],
|
||||
"documents": [
|
||||
{
|
||||
"doc_uuid": "560bd0a5ad4247b99a5038770b717786",
|
||||
"docType": 1,
|
||||
"path": "source/560bd0a5ad4247b99a5038770b717786.json",
|
||||
"size": 2607,
|
||||
"sha256": "a89f642869ad5b6dfafb559786b88b2ba21d1d4a283d5852063c3f540053910a"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "afd056d94ae848c3a866181a4890394b",
|
||||
"docType": 1,
|
||||
"path": "source/afd056d94ae848c3a866181a4890394b.json",
|
||||
"size": 1908,
|
||||
"sha256": "425c60b89042564aed24293d6b1f3f3edf91bc10b2a961971d418ef654b5bef5"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "388fe5b93cd749aaae609709b3c665cc",
|
||||
"docType": 1,
|
||||
"path": "source/388fe5b93cd749aaae609709b3c665cc.json",
|
||||
"size": 45844,
|
||||
"sha256": "edb693d67dc452e26b2962f2a02782008abc1853408de73fd0f61470b652905d"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "8978aa570ee146f8bd69a5fb6c8c60dd",
|
||||
"docType": 1,
|
||||
"path": "source/8978aa570ee146f8bd69a5fb6c8c60dd.json",
|
||||
"size": 30530,
|
||||
"sha256": "4b34d756f4c43ae391c13c4e089072f9ec4b44bbb098dae313331ecc76beb9ca"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "c25fe0ff97af465ab78960c749c53db1",
|
||||
"docType": 1,
|
||||
"path": "source/c25fe0ff97af465ab78960c749c53db1.json",
|
||||
"size": 52808,
|
||||
"sha256": "4078193c938073c6101c138c05a1569ff5d59a7c839e291aff6d91a864b326c2"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "81636a72fcce4361b8fd4e9a1a9a4e9b",
|
||||
"docType": 1,
|
||||
"path": "source/81636a72fcce4361b8fd4e9a1a9a4e9b.json",
|
||||
"size": 19318,
|
||||
"sha256": "c82e0cd4124c36cb07543ecc759cb8d3dc1926d98724f8daf81d4ab00c1792d7"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "ef83fee8093541a5bda0d0e4937b59b9",
|
||||
"docType": 1,
|
||||
"path": "source/ef83fee8093541a5bda0d0e4937b59b9.json",
|
||||
"size": 26094,
|
||||
"sha256": "1697d4db2ac188cb480ab13736a9fa375918447541fde7d1492dfe70269c32b6"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "759feacd725c47b7bb422003ca237677",
|
||||
"docType": 1,
|
||||
"path": "source/759feacd725c47b7bb422003ca237677.json",
|
||||
"size": 24578,
|
||||
"sha256": "4189a39c3538dfdf52ce145fabb49993dd2dbe0a449425437e2b8e0aa08db7d0"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "918c7c2b42ce4214b72a92733b1387f0",
|
||||
"docType": 1,
|
||||
"path": "source/918c7c2b42ce4214b72a92733b1387f0.json",
|
||||
"size": 24334,
|
||||
"sha256": "ddaa09d755057221f583bf91e8a79e15ad82d54dec8b178f210fc9e29a24ee44"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "d14da6d3d80242b0b40f4968d68ba56b",
|
||||
"docType": 1,
|
||||
"path": "source/d14da6d3d80242b0b40f4968d68ba56b.json",
|
||||
"size": 46386,
|
||||
"sha256": "510eab11d8645f96784b67d0904bef5975d83a3304c19a3341fd2b6c395a30a0"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "0f73056574c0440791bef8566f4ee66f",
|
||||
"docType": 1,
|
||||
"path": "source/0f73056574c0440791bef8566f4ee66f.json",
|
||||
"size": 10669,
|
||||
"sha256": "a5140d61215f4e51290003553550b95ae799079c8a4b6fa70153ae5439154daf"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "0bc01399ab3146faa20cc538add2623f",
|
||||
"docType": 1,
|
||||
"path": "source/0bc01399ab3146faa20cc538add2623f.json",
|
||||
"size": 8647,
|
||||
"sha256": "680116ef85ff46cc11eaf2c970b2b471e99685b5dd71fbdc20e29ffd410ec118"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "18527068e7b9496f8ab210bd80badaf8",
|
||||
"docType": 1,
|
||||
"path": "source/18527068e7b9496f8ab210bd80badaf8.json",
|
||||
"size": 49052,
|
||||
"sha256": "98b3bdeb62ec920f1b383a0d7a0ab305f377c4a7e4f2e8b60d13561c21505e98"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "c21722463acd45a394e68d9065952e3d",
|
||||
"docType": 1,
|
||||
"path": "source/c21722463acd45a394e68d9065952e3d.json",
|
||||
"size": 116026,
|
||||
"sha256": "a59c84e2245e9bc71255932f1b108434ceb2cd0a458c3f5c061db151795ec6aa"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "63c0af70041349518b4cb52eee44305e",
|
||||
"docType": 1,
|
||||
"path": "source/63c0af70041349518b4cb52eee44305e.json",
|
||||
"size": 25835,
|
||||
"sha256": "e0e2519e4f09bee493c67ae8f7655a2a8f62443ca7700a4b12e4a37dd5bb3a69"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "6beb4806ff3e497194aa203be71404a4",
|
||||
"docType": 1,
|
||||
"path": "source/6beb4806ff3e497194aa203be71404a4.json",
|
||||
"size": 29251,
|
||||
"sha256": "a8e44ac4ed97ec2945f912449aae28c3cc393aa755d3490be49b171e57cae336"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "73e72a6798e14da4a7f850412fa8e2aa",
|
||||
"docType": 1,
|
||||
"path": "source/73e72a6798e14da4a7f850412fa8e2aa.json",
|
||||
"size": 50973,
|
||||
"sha256": "e1ae8dedade3e997cc18eaccbef22a3d76ad0ea59a477c7398d98ce7220986ad"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "ee2b876552f54525babb9f18b84c8412",
|
||||
"docType": 1,
|
||||
"path": "source/ee2b876552f54525babb9f18b84c8412.json",
|
||||
"size": 823,
|
||||
"sha256": "157f7cbd50c201e7ed00ad64857dbe432382f2a1ac2f5b85ce766f6c1d68c0f8"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "a4d9c80b9ed04fbfa8887614143f69c1",
|
||||
"docType": 1,
|
||||
"path": "source/a4d9c80b9ed04fbfa8887614143f69c1.json",
|
||||
"size": 44032,
|
||||
"sha256": "b7f97f221ba06028742bc2c5581069d8ba5be3d2b7807f80b7e2a86e72fefe99"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "33158668940f4e6f8fd14bec7c34d622",
|
||||
"docType": 1,
|
||||
"path": "source/33158668940f4e6f8fd14bec7c34d622.json",
|
||||
"size": 9365,
|
||||
"sha256": "c3c8691ba7b38255eae60b6d1c11353c01789df8b6bc897cf1b84bcf837cd073"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "fa9c85ce30de40c38003ef12b8723134",
|
||||
"docType": 1,
|
||||
"path": "source/fa9c85ce30de40c38003ef12b8723134.json",
|
||||
"size": 41959,
|
||||
"sha256": "d454a4a938ffcbd52ab62ebda97f7b494d15fe22a9d3cf2636386c78dcc94965"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "c6346fddfbe44e1ca6d7d6b4c797cd81",
|
||||
"docType": 1,
|
||||
"path": "source/c6346fddfbe44e1ca6d7d6b4c797cd81.json",
|
||||
"size": 36524,
|
||||
"sha256": "13bb231c7d8c1f9bf59a07f9e27eeeb9bca54854e9413ba706b9949007c0fa71"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "60c401439f0242d6b8878d50b7420df7",
|
||||
"docType": 1,
|
||||
"path": "source/60c401439f0242d6b8878d50b7420df7.json",
|
||||
"size": 36153,
|
||||
"sha256": "7d34efae54fe5667f2dd1a7c13cd28049ef2570fb0e566997d18d6448bdd1b5f"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "12a94c86b6954795a15be0ef9d904ece",
|
||||
"docType": 1,
|
||||
"path": "source/12a94c86b6954795a15be0ef9d904ece.json",
|
||||
"size": 13383,
|
||||
"sha256": "2bf73d8712dbc904cf081599db13c6d8c93bd7c83891ee36cd4fa9b144d32610"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "617ae0c3ecda4008b528d33a30c09146",
|
||||
"docType": 1,
|
||||
"path": "source/617ae0c3ecda4008b528d33a30c09146.json",
|
||||
"size": 34656,
|
||||
"sha256": "cf6f067a3227b3111fbf7e5aba962e16b17144f0786568b73b820c7eb4ad4cd9"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "1a7e93d2007948609476b6fced37f663",
|
||||
"docType": 1,
|
||||
"path": "source/1a7e93d2007948609476b6fced37f663.json",
|
||||
"size": 25544,
|
||||
"sha256": "87a80686f2b538cecd7c4c5627646f585f11caba7ffb74c40d29a20ccdc76179"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "afac947683374ce4a0617e2f378df9e8",
|
||||
"docType": 1,
|
||||
"path": "source/afac947683374ce4a0617e2f378df9e8.json",
|
||||
"size": 13330,
|
||||
"sha256": "33252f933379357b54467b13908d3d47fab986c9710e8b997ba1a9151aa85e5b"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "87e45b6fd1ab42eda99b95e6beecaa64",
|
||||
"docType": 1,
|
||||
"path": "source/87e45b6fd1ab42eda99b95e6beecaa64.json",
|
||||
"size": 38933,
|
||||
"sha256": "44b53a3e68f09e112d5a9f3129babd44f15dd48a847511f4429f577696107fa3"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "77ac252964cc4a12a4e0e9fd07851f79",
|
||||
"docType": 1,
|
||||
"path": "source/77ac252964cc4a12a4e0e9fd07851f79.json",
|
||||
"size": 15607,
|
||||
"sha256": "ebf2284abe4df5ccab1a88bb14829363a4d918c81c5b22c1b80bc6ff145862ad"
|
||||
},
|
||||
{
|
||||
"doc_uuid": "89ef5a826c7f494ab398b791825aa8f0",
|
||||
"docType": 3,
|
||||
"path": "source/pcb_89ef5a826c7f494ab398b791825aa8f0.json",
|
||||
"size": 782,
|
||||
"sha256": "026d63e79eca3212602dfccdce6cb722b1157ceaf0ab17dcb7ad4d0858b7c971"
|
||||
}
|
||||
],
|
||||
"structure_summary": {
|
||||
"boards": 1,
|
||||
"schematic_containers": 1,
|
||||
"schematic_sheets": 29,
|
||||
"pcbs": 1,
|
||||
"symbols": 299,
|
||||
"footprints": 524,
|
||||
"devices": 295,
|
||||
"coppers": 0,
|
||||
"textpath": 0,
|
||||
"blobs": 32
|
||||
},
|
||||
"aux": {
|
||||
"blobs_count": 32
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"uuid":"89ef5a826c7f494ab398b791825aa8f0","created_at":"2023-12-01 14:37:18","creator":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"description":"","display_title":"PCB","docType":3,"modifier":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"pcb_id":1,"project_uuid":"7360e73de5dd428e9f29e10573f2d8ac","schematic_uuid":"","ticket":9,"title":"pcb","updateTime":1730173850,"thumb":"https://image-pro.lceda.cn/pullimages/eaf315c5b2e44d788deb56c89cdf8d7f.webp","dataStrId":"https://modules.lceda.cn/datastr/e4/45/5a/0a/cf65489d895b3d213e09a85c","iv":"0a58d2540fa78298ef3701dd","key":"d9762cfaf5bae12b30abd6c5293704980d395bc4689ce80225eefab30ea0efd4","guest":false,"writable":false}
|
||||
1205
data/raw/oshwhub/7360e73de5dd428e9f29e10573f2d8ac/source/ticket.json
Normal file
1205
data/raw/oshwhub/7360e73de5dd428e9f29e10573f2d8ac/source/ticket.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -45,14 +45,17 @@
|
||||
|
||||
| 维度 | Pro 2.x 旧版 | Pro 3.x 新版 |
|
||||
|---|---|---|
|
||||
| `editorVersion` | "2.1.40" 等 | "3.2.91" / "3.2.127" |
|
||||
| `editorVersion` | "2.1.30" / "2.1.40" 等 | "3.2.15" / "3.2.69" / "3.2.91" / "3.2.127" 等 |
|
||||
| `branch_uuid` | **null**(无分支模型) | UUID(有 main 分支) |
|
||||
| 文档定位 | 项目 meta 的 **`boards: [{sch, name, pcb}]`** 直接指向 doc UUID | `/structures` 返回多 document 树 |
|
||||
| 历史链 | **不存在**(无 `/branches/<B>/histories/<H>` 端点) | 完整 git-style chain,本节后续描述 |
|
||||
| 状态 | ⏳ **本爬虫暂不支持**;HAR 待录 | ✅ 已打通 |
|
||||
| 实例 | `7360e73d...`(立创·泰山派RK3566)、`0c467598...`(立创·梁山派) | `2507dcb6...`(立创·泰山派RK3576)、`b7784066...`(X86电脑主板)、`ba64bd6f...`(ESP-VoCat) |
|
||||
| 文档定位 | 项目 meta 的 **`boards: [{sch, name, pcb}]`** + ticket 端点 manifest | `/structures` 返回多 document 树 |
|
||||
| 历史链 | **不存在** | 完整 git-style linear chain |
|
||||
| 文档存储 | **plaintext** dataStr(同 Std `["DOCTYPE","SCH","1.1"]\n[HEAD,...]`),按 doc UUID 批量 GET | AES-128-GCM 加密的 EPRO2 增量消息流,按 history 重放 |
|
||||
| 加密 | 仅组件库(symbols/devices)走 AES,文档本身明文 | 全部 history blob 都加密 |
|
||||
| 实例 | `7360e73d...`(RK3566 / 2.1.40 / 30 docs)、`0c467598...`(梁山派 / 2.1.30 / 3 docs) | `2507dcb6...`(RK3576)、`b7784066...`(X86 / 7374 docs)、`ba64bd6f...`(ESP-VoCat / 278 docs) |
|
||||
| 状态 | ✅ 已打通(HAR `tmp/prodownload3.har` 反推) | ✅ 已打通 |
|
||||
| schema source_format | `easyeda-pro-legacy` | `easyeda-pro` |
|
||||
|
||||
**判别**:先 GET `/api/v4/projects/<P>`,看 `branch_uuid` 是否非空。`null` 即旧版;记录跳过原因到 `data/state/oshwhub_excluded.jsonl`。**旧版工程的 sch/pcb document UUID 在 `boards[]` 字段里**(每个 board = 一对 sch+pcb),但访问端点未知 —— 候选探测:`/api/documents/<doc>`(实测 401,需要不同 cookie scope)、`/api/v4/projects/<P>/snapshots`(200 但返回的是 project meta 而非 doc)。
|
||||
**判别**:先 GET `/api/v4/projects/<P>`,看 `branch_uuid` 是否非空。`null` 即旧版,走 §2.7 的旧版抓取路径;非空走 §2.1-§2.6 的新版路径。`crawlers/oshwhub/crawler.py:fetch_pro_source()` 是 dispatcher,根据 `branch_uuid` 自动分流到 `_fetch_pro_modern()` 或 `_fetch_pro_legacy()`。
|
||||
|
||||
---
|
||||
|
||||
@@ -233,6 +236,51 @@ Accept: application/json
|
||||
|
||||
chain 只有 1 条就包含整个 project,因为只有 1 个 document。
|
||||
|
||||
### 2.7 Pro 2.x 旧版抓取(无 branch / 无 history chain)
|
||||
|
||||
适用于 `branch_uuid: null` 的工程(`editorVersion` 形如 `2.1.40`)。文档以 **EasyEDA Std plaintext dataStr** 形式存储,按 UUID 批量 GET,不需要解密 / 解压 / 重放。
|
||||
|
||||
#### 流程
|
||||
|
||||
```
|
||||
GET /api/v4/projects/<P> → boards: [{sch, pcb, name}]
|
||||
GET /api/projects/<P>/ticket?uuid=<P>&g_ticket=-1 → manifest: {schematics, schs, pcbs, coppers, textpath, blobs, symbols, footprints, devices, ...}
|
||||
POST /api/schematic/lists {uuids:[<sch>]} → 父 schematic 容器,含 sort: [{uuid: <sheet>, ticket}, ...]
|
||||
POST /api/v2/documents/lists {uuids:[<sheets>], docType:1} → 每个 sheet 的 dataStr 明文
|
||||
POST /api/v2/documents/lists {uuids:[<pcbs>], docType:3} → 每个 PCB 的 dataStr 明文
|
||||
POST /api/coppers/search {paths:[<copper_paths>]} → 铺铜数据(PCB 增量层)
|
||||
POST /api/textpath/search {paths:[<textpath_paths>], project_uuid, path} → 字体 / 文字路径
|
||||
POST /api/v2/resources/search {hash:[<sha256>], project_uuid} → BLOB(嵌入图片等)
|
||||
POST /api/v2/components/searchByIds {uuids:[<symbol_uuids>]} → 元件符号定义(含 dataStrId/key/iv,AES 加密的 lib 数据;可选)
|
||||
POST /api/devices/searchByIds {uuids:[<device_uuids>]} → 元件库 metadata
|
||||
```
|
||||
|
||||
#### 必需 headers
|
||||
|
||||
与 §2.5 相同(`Editor-Version` / `path: <PROJ_UUID>` / `Cookie`)。
|
||||
|
||||
#### 实测数据
|
||||
|
||||
| 工程 | editorVersion | sheets | pcbs | symbols | footprints | devices | blobs | coppers | size |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| 立创·梁山派 | 2.1.30 | 2 | 1 | 78 | 191 | 128 | 1 | 29 | 1.0 MB |
|
||||
| 立创·泰山派 RK3566 | 2.1.40 | 29 | 1 | 299 | 524 | 295 | 32 | 0 | 0.8 MB |
|
||||
|
||||
**关键观察**:
|
||||
- 旧版项目体量比新版小**两个数量级**(梁山派 1 MB vs RK3576 66 MB plain)—— 因为没有 history 增量、组件库走单独端点、本身就是当前快照。
|
||||
- `manifest_ticket['schematics']` ↔ schematic CONTAINER(板级"原理图"实体);`manifest_ticket['schs']` ↔ 单个 SHEET(一页图纸)。`boards[].sch` 指向前者,需要 schematic/lists 一步把 sort 拆出 sheet UUIDs。
|
||||
- 抓 plaintext docs 后,**无需** AES 解密(这点跟 Std 一样)。但 symbols/devices 端点返回的 lib 数据**仍然是 AES 加密的 dataStrId blob**,跟 Pro 3.x 同方案;如需还原 lib 内容需照 §2.3 解密流程。
|
||||
|
||||
#### 落盘约定
|
||||
|
||||
- `source/ticket.json` — 完整 manifest_ticket(保留以备后续 lib 重建)
|
||||
- `source/<sheet_uuid>.json` — 每张原理图(含 `dataStr` 字段)
|
||||
- `source/pcb_<pcb_uuid>.json` — 每块 PCB
|
||||
- `source/coppers.json` / `source/textpath.json` / `source/blobs.json` — 辅助层资源
|
||||
- `source/manifest.json` — 索引 + structure_summary
|
||||
|
||||
实现:`crawlers/oshwhub/crawler.py:_fetch_pro_legacy()`。
|
||||
|
||||
#### B. 大项目 `泰山派3M (RK3576)`(36 documents)
|
||||
|
||||
| 步骤 | 数值 |
|
||||
@@ -491,3 +539,4 @@ PY
|
||||
| 2026-04-24 (rev 1) | 首版:单 history 4 步链 + AES-128-GCM + gzip + EPRO2 消息流(40 种 types 覆盖 BOARD 全要素) |
|
||||
| 2026-04-24 (rev 2) | 加入 `/structures` 枚举、`/projects/branches/histories?...` 批量 chain 端点、完整重放流水线;大项目(泰山派 36 docs / 35 histories / 66 MB)实测;对他人 public Pro 项目已验证;29 条 `/api/v4/` 端点清单 |
|
||||
| 2026-04-28 (rev 3) | HAR 实测:`/branches/{branch}/histories/{head}` 即返回整条 chain(无需走 `?limit=N` 批量端点);落地 `crawlers/oshwhub/crawler.py:fetch_pro_source` 端到端打通(5 项目批量抓 EPRO2);schema docType 兼容 string 取值 + 增 message_count 字段 |
|
||||
| 2026-04-28 (rev 4) | HAR `prodownload3.har` 反推 **Pro 2.x 旧版抓取链**:`/api/projects/<P>/ticket` + `/api/v2/documents/lists` 批量端点(plaintext dataStr)+ supplementary coppers/textpath/blobs/components/devices;新增 `_fetch_pro_legacy()` + 在 `fetch_pro_source()` 按 `branch_uuid` 自动 dispatch;schema source_format enum 增 `easyeda-pro-legacy`;5/5 Pro 项目(3 modern + 2 legacy)全部打通 |
|
||||
|
||||
71
log.md
71
log.md
@@ -4,6 +4,77 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-04-28 22:00 Pro 2.x 旧版工程源抓取链路打通,5/5 Pro 项目全部 ✅
|
||||
|
||||
**Claude 会话**
|
||||
|
||||
承接刚做的 3/5 modern Pro 批量。用户录了第三份 HAR(`tmp/prodownload3.har` 103 MB / 178 请求,目标是登录态打开**梁山派** legacy Pro 2.x 项目),让我把 RK3566 / 梁山派两个旧版项目也补上。
|
||||
|
||||
### HAR 反推:Pro 2.x 用一套完全不同的端点
|
||||
|
||||
旧版(`editorVersion: 2.1.x`)没有 git-style branch + history 模型。HAR 里看到的关键端点:
|
||||
|
||||
| 端点 | 作用 |
|
||||
|---|---|
|
||||
| `GET /api/projects/<P>/ticket?uuid=<P>&g_ticket=-1` | 完整项目 manifest(schematics / schs / pcbs / coppers / textpath / blobs / symbols / footprints / devices / block_symbol) |
|
||||
| `POST /api/schematic/lists {uuids:[<sch>]}` | 父 schematic 容器,含 `sort: [{uuid: <sheet>, ticket}]` 即子图 UUIDs |
|
||||
| `POST /api/v2/documents/lists {uuids:[...], docType:1}` | 抓 schematic 子图(**plaintext** dataStr,跟 Std 一样的 `["DOCTYPE","SCH","1.1"]\n[HEAD,...]` 格式) |
|
||||
| `POST /api/v2/documents/lists {uuids:[...], docType:3}` | 抓 PCB(同样 plaintext dataStr) |
|
||||
| `POST /api/coppers/search {paths:[...]}` | 铺铜层数据(PCB 上独立分发的增量层) |
|
||||
| `POST /api/textpath/search {paths, project_uuid, path}` | 字体 / 文字路径(同上) |
|
||||
| `POST /api/v2/resources/search {hash, project_uuid}` | BLOB(嵌入图片) |
|
||||
| `POST /api/v2/components/searchByIds` / `/api/devices/searchByIds` | 元件库 metadata(其 `dataStrId` 仍走 modules.lceda.cn AES 加密 blob) |
|
||||
|
||||
**关键差异**:旧版的工程**主体 plaintext**(无加密 / 无 history 重放),只有元件库走 Pro 3.x 的 AES 方案。这反而比 3.x 简单很多。
|
||||
|
||||
**判别规则**:`/api/v4/projects/<P>` 返回的 `branch_uuid` 是不是 null。null 即旧版。
|
||||
|
||||
### 实现
|
||||
|
||||
`crawlers/oshwhub/crawler.py` refactor:
|
||||
- `fetch_pro_source()` 拆成 dispatcher(先 GET project meta → 检查 `branch_uuid`)
|
||||
- `_fetch_pro_modern()` —— 原 EPRO2 chain 流程,去掉重复的 project meta 调用
|
||||
- `_fetch_pro_legacy()` —— 新增,按上面 9 步流程拉所有 doc + 辅助层
|
||||
- `_pro_post_json()` —— POST helper(与 GET helper 对称)
|
||||
|
||||
落盘约定(旧版):
|
||||
- `source/ticket.json` —— 完整 manifest(保留备 lib 重建)
|
||||
- `source/<sheet_uuid>.json` —— 每张原理图
|
||||
- `source/pcb_<pcb_uuid>.json` —— 每块 PCB
|
||||
- `source/coppers.json` / `textpath.json` / `blobs.json` —— 辅助 PCB 层资源
|
||||
- `source/manifest.json` —— 索引 + structure_summary
|
||||
|
||||
schema:`source_format` enum 加 `easyeda-pro-legacy`。
|
||||
|
||||
### 实测:2/2 legacy 项目打通
|
||||
|
||||
| 项目 | editor | sheets | pcbs | sym | fp | dev | coppers | textpath | blobs | size |
|
||||
|---|---|---|---|---|---|---|---|---|---|---|
|
||||
| 立创·梁山派 | 2.1.30 | 2 | 1 | 78 | 191 | 128 | 29 | 3 | 1 | 1.0 MB |
|
||||
| 立创·泰山派 RK3566 | 2.1.40 | 29 | 1 | 299 | 524 | 295 | 0 | 0 | 32 | 0.8 MB |
|
||||
|
||||
**旧版项目比新版小两个数量级**(梁山派 1 MB vs RK3576 66 MB)—— 没有增量 history、组件库走单独端点、本身就是当前快照。
|
||||
|
||||
### 5/5 Pro 项目终极汇总
|
||||
|
||||
| # | 项目 | source_format | editor | docs | size |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | X86 主板 | easyeda-pro | 3.2.15 | 7374 | 481 MB |
|
||||
| 2 | 立创·泰山派 RK3566 | easyeda-pro-legacy | 2.1.40 | 30 | 0.8 MB |
|
||||
| 3 | 立创·梁山派 | easyeda-pro-legacy | 2.1.30 | 3 | 1.0 MB |
|
||||
| 4 | 220V 桌面电源 | easyeda-pro | 3.2.69 | 771 | 26 MB |
|
||||
| 5 | ESP-VoCat 喵伴 | easyeda-pro | 3.2.91 | 278 | 7.5 MB |
|
||||
|
||||
合计 8456 docs / ~516 MB plain 源数据,5/5 端到端打通。
|
||||
|
||||
### 下一步
|
||||
|
||||
1. EPRO2 → KiCad 转换器(仍是 Forge 投影硬门槛,ESP-VoCat 7.5 MB 是不错的小样本起手)
|
||||
2. 旧版 dataStr → KiCad 复用 Std 转换链(同格式,已有 `easyeda2kicad.py` 支持)
|
||||
3. 阶梯放量到 50 / 500 项目时做风控压测
|
||||
|
||||
---
|
||||
|
||||
## 2026-04-28 21:35 Pro 工程源(EPRO2)批量抓取打通:3/5 modern Pro 项目 ✅,2/5 legacy 2.x ❌
|
||||
|
||||
**Claude 会话**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Crawled Projects Index
|
||||
|
||||
_自动生成,最近更新 2026-04-28 13:44 UTC_
|
||||
_自动生成,最近更新 2026-04-28 13:56 UTC_
|
||||
|
||||
**当前**:15 个项目 · 73 个附件 · 739.1 MB
|
||||
|
||||
|
||||
@@ -92,8 +92,8 @@
|
||||
},
|
||||
"source_format": {
|
||||
"type": "string",
|
||||
"description": "EDA 工程源格式标记。如 'easyeda-std'(u.lceda.cn)/ 'easyeda-pro'(pro.lceda.cn EPRO2)/ 'kicad'。",
|
||||
"enum": ["easyeda-std", "easyeda-pro", "kicad", "altium", "eagle", "other"]
|
||||
"description": "EDA 工程源格式标记。easyeda-std (u.lceda.cn) / easyeda-pro (Pro 3.x EPRO2) / easyeda-pro-legacy (Pro 2.x v2/documents/lists) / kicad / altium / eagle.",
|
||||
"enum": ["easyeda-std", "easyeda-pro", "easyeda-pro-legacy", "kicad", "altium", "eagle", "other"]
|
||||
},
|
||||
"source_path": {
|
||||
"type": "string",
|
||||
|
||||
Reference in New Issue
Block a user