import requests
import json
from datetime import date, timedelta

with open("/opt/mia/config/meta_token_renato.txt") as f:
    TOKEN = f.read().strip()

ACCOUNT_ID = "517468148842987"
ontem = (date.today() - timedelta(days=1)).strftime("%Y-%m-%d")

def get_actions(actions, key):
    if not actions:
        return None
    for a in actions:
        if a.get("action_type") == key:
            return a.get("value")
    return None

# 1. Campanhas ativas
url = f"https://graph.facebook.com/v21.0/act_{ACCOUNT_ID}/campaigns"
params = {
    "access_token": TOKEN,
    "fields": "id,name,status,effective_status",
    "filtering": '[{"field":"effective_status","operator":"IN","value":["ACTIVE"]}]',
    "limit": 50
}
r = requests.get(url, params=params)
camps = r.json()

if "error" in camps:
    print("ERRO CAMPANHAS:", json.dumps(camps["error"], ensure_ascii=False))
    raise SystemExit

print(f"=== Dia: {ontem} ===")
print(f"Campanhas ativas: {len(camps.get('data', []))}\n")

IC_KEY = "offsite_conversion.fb_pixel_initiate_checkout"
PUR_KEY = "offsite_conversion.fb_pixel_purchase"

for c in camps.get("data", []):
    cid = c["id"]
    cname = c["name"]
    # Insights por campanha
    ui = f"https://graph.facebook.com/v21.0/{cid}/insights"
    pi = {
        "access_token": TOKEN,
        "fields": "spend,impressions,clicks,ctr,cpm,actions,cost_per_action_type,inline_link_clicks",
        "time_range": f'{{"since":"{ontem}","until":"{ontem}"}}',
        "level": "campaign"
    }
    ri = requests.get(ui, params=pi).json()
    print(f"### CAMPANHA: {cname} (id {cid})")
    if "error" in ri:
        print("  ERRO:", ri["error"].get("message"))
        print()
        continue
    data = ri.get("data", [])
    if not data:
        print("  Sem dados/gasto ontem.\n")
        continue
    d = data[0]
    ic = get_actions(d.get("actions"), IC_KEY)
    pur = get_actions(d.get("actions"), PUR_KEY)
    cpic = get_actions(d.get("cost_per_action_type"), IC_KEY)
    cppur = get_actions(d.get("cost_per_action_type"), PUR_KEY)
    print(f"  Gasto: R${d.get('spend')}")
    print(f"  Impressoes: {d.get('impressions')}")
    print(f"  Cliques(all): {d.get('clicks')} | LinkClicks: {d.get('inline_link_clicks')}")
    print(f"  CTR: {d.get('ctr')}")
    print(f"  CPM: {d.get('cpm')}")
    print(f"  InitiateCheckout: {ic} | Custo/IC: {cpic}")
    print(f"  Purchase: {pur} | Custo/Purchase: {cppur}")

    # Breakdown por adset
    ua = f"https://graph.facebook.com/v21.0/{cid}/insights"
    pa = {
        "access_token": TOKEN,
        "fields": "adset_name,spend,impressions,clicks,ctr,cpm,actions,cost_per_action_type,inline_link_clicks",
        "time_range": f'{{"since":"{ontem}","until":"{ontem}"}}',
        "level": "adset"
    }
    ra = requests.get(ua, params=pa).json()
    for ad in ra.get("data", []):
        ic2 = get_actions(ad.get("actions"), IC_KEY)
        cpic2 = get_actions(ad.get("cost_per_action_type"), IC_KEY)
        pur2 = get_actions(ad.get("actions"), PUR_KEY)
        print(f"    - CONJUNTO: {ad.get('adset_name')}")
        print(f"        Gasto: R${ad.get('spend')} | Impr: {ad.get('impressions')} | LinkClicks: {ad.get('inline_link_clicks')} | CTR: {ad.get('ctr')} | CPM: {ad.get('cpm')}")
        print(f"        IC: {ic2} | Custo/IC: {cpic2} | Purchase: {pur2}")
    print()
