SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
1.5 KB · 28 lines python
Raw Blame History
1#!/usr/bin/env python32"""Manual smoke test of the scanner endpoint. Usage: scan-smoke.py <text|photo|url> [value] [port]"""3import base64, json, sys, urllib.request45mode = sys.argv[1]6value = sys.argv[2] if len(sys.argv) > 2 else ''7port = sys.argv[3] if len(sys.argv) > 3 else '3002'8if mode == 'photo':9    body = {"mode": "photo", "images": [{"data": base64.b64encode(open(value, 'rb').read()).decode(), "mediaType": "image/jpeg"}]}10elif mode == 'url':11    body = {"mode": "url", "url": value}12else:13    body = {"mode": "text", "text": value}14req = urllib.request.Request(f'http://127.0.0.1:{port}/api/scanner', data=json.dumps(body).encode(), headers={'content-type': 'application/json'})15try:16    r = json.load(urllib.request.urlopen(req, timeout=180))17except urllib.error.HTTPError as e:18    print('HTTP', e.code, e.read().decode()[:500]); sys.exit(1)19print(json.dumps({k: r.get(k) for k in ('sessionId', 'mode', 'guessConfidence', 'model', 'usdEst', 'durationMs', 'notes')}, indent=1))20g = r.get('guess') or {}21print('guess', {k: g.get(k) for k in ('categorySlug', 'name', 'brand', 'set', 'number', 'year', 'variant', 'grader', 'grade', 'likelyGradeRange')})22print('warnings', g.get('warnings'))23print('candidates', [(c['title'], round(c['score'], 2)) for c in r.get('candidates', [])])24print('best', (r.get('best') or {}).get('title'))25if r.get('listing'):26    l = r['listing']27    print('listing', l['sourceId'], l['rawTitle'], l['price'], l['currency'], l['verdict'], l['discountToRiv'])28