import json,subprocess,os,time
for line in open('/home/ultimo/claude-workspace/sino-diagnostico/.env',encoding='utf-8'):
    if line.startswith('CNPJA_TOKEN='): TOK=line.split('=',1)[1].strip().strip('"').strip("'")
CAND={
 "imobiliária":["6821801","6822600"],
 "oficina / auto peças":["4520001","4530703"],
 "móveis / decoração":["4754701","4754703"],
 "eletrônicos / celular":["4752100","4753900"],
 "papelaria":["4761003"],
 "joalheria / relojoaria":["4783101","4783102"],
 "hotel / pousada":["5510801","5590699"],
 "agropecuária":["4692300","4683400","4623109"],
 "escola / curso":["8513900","8520100","8599604"],
 "posto de combustível":["4731800"],
}
def conta(cod,cnaes):
    p=f"address.municipality.in={cod}&status.id.in=2&mainActivity.id.in={','.join(cnaes)}&limit=3"
    for i in range(4):
        out=subprocess.run(["curl","-s","--max-time","30",f"https://api.cnpja.com/office?{p}",
            "-H",f"Authorization: {TOK}"],capture_output=True,text=True).stdout
        try: d=json.loads(out)
        except Exception: d={}
        if d.get("count") is not None:
            ex=[(r.get('alias') or (r.get('company') or {}).get('name','?'))[:38] for r in d.get('records',[])[:2]]
            return d["count"], ex
        time.sleep(16)
    return "ERRO", str(d.get("message") or d)[:60]
with open('/tmp/valida_cnae.out','w',encoding='utf-8') as f:
    for r,c in CAND.items():
        n,ex=conta('2207009',c)
        f.write(f"{r:24} {str(n):>6}  {ex}\n"); f.flush()
        time.sleep(14)
    f.write("FIM\n")
