Files
dj/integration-work/historical_cleanup_status.py
2026-11-13 11:46:25 +08:00

14 lines
1.2 KiB
Python

import pathlib,sqlite3,json,collections
root=pathlib.Path('/home/ps/huobao-video-cleanup');out=root/'historical-20261112';cfg=json.loads((root/'config.json').read_text())
approved=json.loads((root/'historical-approved.json').read_text());ids={r['id']:r['task'] for r in approved};results=[]
for b in cfg['bridges']:
with sqlite3.connect('file:'+b['database']+'?mode=ro',uri=True) as db:
db.row_factory=sqlite3.Row
for r in db.execute('select id,status,attempts,error,manifest from video_cleanup_acks'):
if r['id'] not in ids:continue
results.append({'task':ids[r['id']],'id':r['id'],'bridge':b['name'],'status':r['status'],'attempts':r['attempts'],'error':r['error']})
(out/'cleanup-status.json').write_text(json.dumps(results,indent=2))
print(json.dumps({'approved':len(approved),'acknowledged':len(results),'counts':dict(collections.Counter(r['status'] for r in results)),'enqueueDone':(out/'enqueue-done.json').exists(),'errors':[r for r in results if r['error']]}))
if (out/'enqueue-results.json').exists():
enqueued=json.loads((out/'enqueue-results.json').read_text());print(json.dumps({'prepared':sum(r['enqueued'] for r in enqueued),'blocked':[r for r in enqueued if not r['enqueued']]}))