数据 (CLM 气动夹紧缸分类): - 1 系列 demo -> 11 个官方系列, 6 型号 -> 859 个真实型号 - 参数化升级: 仅缸径 -> 最多 5 维 (缸径/臂位置/臂类型/臂样式/传感器) - 11 系列各含官方图册附图 (84 张) + datasheet PDF - 修复: 枚举维度空串必须为合法值 (否则级联过滤后下拉全空) - 修复: catalog.json 分类 series 数组未更新导致新系列不进包 - 修复: _step 副本后缀归一化错误 (产生假型号) 工具: - gen-clamp-series.py 数据清洗 (X盘数模 -> CSV/meta/STEP) - copy-clamp-step.py 8线程并行复制 (网络盘 I/O 优化) - gen-clamp-manual.py 官方图册 PDF -> 附图 - update-clamp-meta-attach.py / fix-clamp-meta-empty-enum.py 仓库瘦身: - .gitignore 排除数模(5GB)/.opc(1.2GB)/编译产物/发布产物 - 移出索引: release/ bin产物 STEP数模 .opc 大型PDF 等 - 提交体积 17MB (原 15.97GB) 其他: SelfTest.cs 可解析选型逻辑放宽 (稀疏数据用真实变体回验) Co-Authored-By: Claude Code <noreply@anthropic.com>
28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""按 manual/<系列>/ 下实际存在的 p*.png 更新 meta.json 的附件引用。"""
|
||
import json, os, glob, re
|
||
|
||
CAT = r'D:/开发/OnebotCatalog/onebot-data/catalog'
|
||
SERIES = ['UCBP','UCBM','UCBT','UCBQ','UCBH','UCDP','UCIM','UCIP','UCNM','UCNP','UFL']
|
||
|
||
for s in SERIES:
|
||
d = os.path.join(CAT, 'manual', s)
|
||
if not os.path.isdir(d):
|
||
print(f'[{s}] 无 manual 目录,跳过'); continue
|
||
pngs = sorted(glob.glob(os.path.join(d, 'p*.png')))
|
||
if not pngs:
|
||
print(f'[{s}] 无 png,跳过'); continue
|
||
atts = []
|
||
for p in pngs:
|
||
atts.append({"kind": "manual", "lang": "", "source": f"manual/{s}/{os.path.basename(p)}", "model": None})
|
||
pdf = os.path.join(d, f'{s}_manual.pdf')
|
||
if os.path.exists(pdf):
|
||
atts.append({"kind": "datasheet", "lang": "", "source": f"manual/{s}/{s}_manual.pdf", "model": None})
|
||
mp = os.path.join(CAT, 'series', s + '.meta.json')
|
||
with open(mp, encoding='utf-8') as f:
|
||
meta = json.load(f)
|
||
meta['attachments'] = atts
|
||
with open(mp, 'w', encoding='utf-8') as f:
|
||
json.dump(meta, f, ensure_ascii=False, indent=1)
|
||
print(f'[{s}] 附件 {len(atts)} 个 ({len(pngs)}图 + {"1PDF" if os.path.exists(pdf) else "无PDF"})')
|