astra/iphone-encoder-counter

A CR2450-powered MSP430 FRAM counter combines an always-on dual-channel TMR rotation sensor, pushbutton input, and ST25DV NFC tag with an integrated tuned printed antenna and I²C/GPIO interface.

Version
1.0.3
License
unset
Stars
0

scripts/check_parts.py

"""Capture fresh JLC catalog results without placing an order."""
from pathlib import Path
import concurrent.futures,subprocess,json,datetime
root=Path(__file__).resolve().parents[1]
parts=json.loads((root/'selected-parts.json').read_text())
ids=sorted({x[0] for x in parts.values()}|{'C191026','C5267456','C470426','C964809','C17208043'})
def query(c):
 p=subprocess.run(['tsci','search','--jlcpcb','--json',c],capture_output=True,text=True,check=True)
 return c,json.loads(p.stdout)
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:results=dict(pool.map(query,ids))
out={'checked_at_utc':datetime.datetime.now(datetime.timezone.utc).isoformat(),'source':'tsci search --jlcpcb --json','parts':results}
(root/'jlc-catalog-check.json').write_text(json.dumps(out,indent=2)+'\n')
for c,r in results.items():
 p=r['results'][0] if r['results'] else None
 print(c,p['mfr'] if p else 'not found',p.get('stock') if p else 'separate source')