32 lines
2.0 KiB
Plaintext
Executable File
32 lines
2.0 KiB
Plaintext
Executable File
import os,json,base64,subprocess,glob,time
|
|
from datetime import datetime
|
|
SS='/var/www/html/l99-screenshots'
|
|
OUT='/var/www/html/api/l99-analysis.json'
|
|
pngs=sorted(glob.glob(SS+'/*.png'),key=os.path.getmtime,reverse=True)[:10]
|
|
scans={};ok=w=f=0
|
|
for p in pngs:
|
|
name=os.path.basename(p).replace('.png','')
|
|
try:
|
|
b64=base64.b64encode(open(p,'rb').read()).decode()
|
|
if len(b64)>2000000: print(f'SKIP {name}');continue
|
|
body=json.dumps({'model':'moondream','prompt':'Is this dashboard working correctly? Reply OK, WARN or FAIL then describe in 1 sentence.','images':[b64],'stream':False})
|
|
open('/tmp/vr-visual.json','w').write(body)
|
|
r=subprocess.run(['curl','-sS','-X','POST','http://127.0.0.1:11435/api/generate','-H','Content-Type: application/json','-d','@/tmp/vr-visual.json','--max-time','40'],capture_output=True,text=True,timeout=45)
|
|
d=json.loads(r.stdout)
|
|
resp=d.get('response','').strip()
|
|
dur=round(d.get('total_duration',0)/1e9,1)
|
|
st='success'
|
|
if any(x in resp.lower() for x in ['fail','error','broken','blank','crash']): st='fail';f+=1
|
|
elif any(x in resp.lower() for x in ['warn','issue','missing','loading']): st='warn';w+=1
|
|
else: st='success';ok+=1
|
|
scans[name]={'status':st,'analysis':resp[:150],'duration':dur,'engine':'moondream','ts':datetime.now().isoformat()}
|
|
print(f'{st} {name} ({dur}s)')
|
|
except Exception as e:
|
|
scans[name]={'status':'partial','analysis':str(e)[:80],'duration':0,'engine':'error','ts':datetime.now().isoformat()}
|
|
print(f'ERR {name}: {e}')
|
|
time.sleep(1)
|
|
total=ok+w+f+len([s for s in scans.values() if s['status']=='partial'])
|
|
out={'scans':scans,'stats':{'total':total,'success':ok,'warn':w,'fail':f,'partial':total-ok-w-f},'engine':'moondream-sovereign (Ollama local, 0 cost)','total':total,'timestamp':datetime.now().isoformat()}
|
|
open(OUT,'w').write(json.dumps(out,indent=2))
|
|
print(f'DONE: {total} analyzed | {ok} OK | {w} WARN | {f} FAIL')
|