#!/usr/bin/env python3
"""Releitura de confirmacao da campanha de marca 24124167284. READ ONLY."""
import json
from google.ads.googleads.client import GoogleAdsClient
TOK=json.load(open('/opt/mia/config/google_ads_tokens.json'))
CUSTOMER_ID="2186917336"; CID="24124167284"
c=GoogleAdsClient.load_from_dict({"developer_token":TOK["developer_token"],"client_id":TOK["client_id"],"client_secret":TOK["client_secret"],"refresh_token":TOK["refresh_token"],"login_customer_id":TOK["mcc_id"],"use_proto_plus":True})
ga=c.get_service("GoogleAdsService")
def micros(v): return (v or 0)/1_000_000

print("=== CAMPANHA ===")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
  SELECT campaign.name, campaign.status, campaign.advertising_channel_type,
         campaign.bidding_strategy_type, campaign.maximize_conversions.target_cpa_micros,
         campaign.network_settings.target_google_search,
         campaign.network_settings.target_search_network,
         campaign.network_settings.target_partner_search_network,
         campaign_budget.amount_micros
  FROM campaign WHERE campaign.id = {CID}"""):
    cc=r.campaign
    print(f"  nome: {cc.name}")
    print(f"  status: {cc.status.name}  channel: {cc.advertising_channel_type.name}")
    print(f"  bidding: {cc.bidding_strategy_type.name}  tCPA: R${micros(cc.maximize_conversions.target_cpa_micros):.2f}")
    print(f"  budget/dia: R${micros(r.campaign_budget.amount_micros):.2f}")
    n=cc.network_settings
    print(f"  gsearch={n.target_google_search} searchnet={n.target_search_network} partner={n.target_partner_search_network}")

print("=== GEO + IDIOMAS ===")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
  SELECT campaign_criterion.type, campaign_criterion.location.geo_target_constant,
         campaign_criterion.language.language_constant
  FROM campaign_criterion WHERE campaign.id={CID}
  AND campaign_criterion.type IN ('LOCATION','LANGUAGE')"""):
    cr=r.campaign_criterion
    if cr.type_.name=="LOCATION": print(f"  GEO {cr.location.geo_target_constant}")
    else: print(f"  LANG {cr.language.language_constant}")

print("=== NEGATIVE LIST vinculada ===")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
  SELECT shared_set.name, shared_set.id, campaign_shared_set.status
  FROM campaign_shared_set WHERE campaign.id={CID}"""):
    print(f"  {r.shared_set.name} (id {r.shared_set.id}) status={r.campaign_shared_set.status.name}")

print("=== KEYWORDS ===")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
  SELECT ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type,
         ad_group_criterion.status
  FROM ad_group_criterion WHERE campaign.id={CID}
  AND ad_group_criterion.type='KEYWORD' ORDER BY ad_group_criterion.keyword.match_type"""):
    k=r.ad_group_criterion
    print(f"  [{k.keyword.match_type.name}] {k.keyword.text}  ({k.status.name})")

print("=== RSAs ===")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
  SELECT ad_group_ad.ad.id, ad_group_ad.status, ad_group_ad.ad.final_urls,
         ad_group_ad.policy_summary.approval_status
  FROM ad_group_ad WHERE campaign.id={CID}"""):
    a=r.ad_group_ad
    print(f"  ad {a.ad.id} status={a.status.name} approval={a.policy_summary.approval_status.name} url={list(a.ad.final_urls)}")
