# -*- coding: utf-8 -*- import io, json, os, sys, time HERE = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, HERE) from eda import run JS = (u"const v=(await eda.pcb_PrimitiveVia.getAll()).length;" u"const l=(await eda.pcb_PrimitiveLine.getAll()).length;" u"const t=(document.body.innerText||'').split(String.fromCharCode(10))" u".map(s=>s.trim()).filter(s=>s.indexOf('自动布线中')===0);" u"return {v,l,p:t[0]||''};") log = io.open(os.path.join(HERE, '_route_watch.log'), 'w', encoding='utf-8') last, same, seen_running = None, 0, False for i in range(400): r = run(JS, timeout=60) if not r.get('success'): log.write(u'%d ERR %s\n' % (i, json.dumps(r, ensure_ascii=False)[:200])); log.flush() time.sleep(40); continue d = r['result'] log.write(u'%s v=%d l=%d %s\n' % (time.strftime('%H:%M:%S'), d['v'], d['l'], d['p'])); log.flush() if d['p']: seen_running = True key = (d['v'], d['l'], d['p']) same = same + 1 if key == last else 0 last = key if seen_running and not d['p']: log.write(u'DONE 进度条消失\n'); log.flush(); break if same >= 10: log.write(u'DONE 连续 10 次无变化\n'); log.flush(); break time.sleep(40) log.close() print(u'watch finished')