#!/usr/bin/env python3
"""Ler geo/idioma/final_url da SEARSH CLOUD pra replicar na campanha de marca. 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="23567395804"
cfg = {"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}
client = GoogleAdsClient.load_from_dict(cfg)
ga = client.get_service("GoogleAdsService")

print("=== GEO targets ===")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
    SELECT campaign_criterion.location.geo_target_constant, campaign_criterion.negative,
           campaign_criterion.type
    FROM campaign_criterion
    WHERE campaign.id = {CID} AND campaign_criterion.type = 'LOCATION'"""):
    print(f"  geo={r.campaign_criterion.location.geo_target_constant} negative={r.campaign_criterion.negative}")

print("=== LANGUAGE targets ===")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
    SELECT campaign_criterion.language.language_constant, campaign_criterion.type
    FROM campaign_criterion
    WHERE campaign.id = {CID} AND campaign_criterion.type = 'LANGUAGE'"""):
    print(f"  lang={r.campaign_criterion.language.language_constant}")

print("=== Network settings / advertising channel ===")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
    SELECT campaign.advertising_channel_type, campaign.network_settings.target_google_search,
           campaign.network_settings.target_search_network,
           campaign.network_settings.target_content_network,
           campaign.network_settings.target_partner_search_network
    FROM campaign WHERE campaign.id = {CID}"""):
    n=r.campaign.network_settings
    print(f"  channel={r.campaign.advertising_channel_type.name} gsearch={n.target_google_search} "
          f"searchnet={n.target_search_network} content={n.target_content_network} partner={n.target_partner_search_network}")

print("=== Final URLs dos ads existentes ===")
seen=set()
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
    SELECT ad_group_ad.ad.final_urls, ad_group_ad.ad.type
    FROM ad_group_ad WHERE campaign.id = {CID}"""):
    for u in r.ad_group_ad.ad.final_urls:
        if u not in seen:
            seen.add(u); print(f"  {u} ({r.ad_group_ad.ad.type_.name})")
