#!/usr/bin/env python3
"""Sobe apenas o C5 v3b no Drive (mantendo v3 antigo pra comparacao).
Estrutura: PASTA DA MIA > Borrello > Criativos_IG > 01_Para_Aprovacao > v3_2026-09-18 > estaticos_v3/
"""
import json
import os
import requests
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request

TOKENS = "/opt/mia/config/drive_tokens.json"
MIA_ROOT = "1F-0M5zBPDVTjQh3QIQFc0pIcQUuDX0hE"
FILE = "/opt/mia/workspace/clientes/borrello/criativos_ig_teste_v3_2026-09-18/estaticos_v3/05_conversa_quarto_pesado_v3b.png"

with open(TOKENS) as f:
    t = json.load(f)
creds = Credentials(
    token=t.get("access_token"),
    refresh_token=t.get("refresh_token"),
    token_uri=t.get("token_uri", "https://oauth2.googleapis.com/token"),
    client_id=t.get("client_id"),
    client_secret=t.get("client_secret"),
    scopes=t.get("scopes", ["https://www.googleapis.com/auth/drive"]),
)
if not creds.valid:
    creds.refresh(Request())
    t["access_token"] = creds.token
    t["token"] = creds.token
    with open(TOKENS, "w") as f:
        json.dump(t, f, indent=2)
H = {"Authorization": f"Bearer {creds.token}"}


def get_or_create_folder(name, parent):
    q = f"'{parent}' in parents and name = '{name}' and mimeType = 'application/vnd.google-apps.folder' and trashed = false"
    r = requests.get(
        "https://www.googleapis.com/drive/v3/files",
        params={"q": q, "fields": "files(id,name)"},
        headers=H,
    )
    files = r.json().get("files", [])
    if files:
        return files[0]["id"]
    metadata = {"name": name, "parents": [parent], "mimeType": "application/vnd.google-apps.folder"}
    r = requests.post("https://www.googleapis.com/drive/v3/files", headers=H, json=metadata)
    r.raise_for_status()
    return r.json()["id"]


def upload(path, parent):
    name = os.path.basename(path)
    # Se ja existe UM v3b, substitui. NUNCA toca o v3 (nome diferente).
    q = f"'{parent}' in parents and name = '{name}' and trashed = false"
    r = requests.get(
        "https://www.googleapis.com/drive/v3/files",
        params={"q": q, "fields": "files(id,name)"},
        headers=H,
    )
    files = r.json().get("files", [])
    if files:
        for f in files:
            requests.delete(f"https://www.googleapis.com/drive/v3/files/{f['id']}", headers=H)
        print(f"substitui versao anterior de {name}")
    metadata = {"name": name, "parents": [parent]}
    files_payload = {
        "data": ("metadata", json.dumps(metadata), "application/json"),
        "file": (name, open(path, "rb"), "image/png"),
    }
    r = requests.post(
        "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
        headers=H,
        files=files_payload,
    )
    r.raise_for_status()
    return r.json()["id"]


f_borrello = get_or_create_folder("Borrello", MIA_ROOT)
f_criativos = get_or_create_folder("Criativos_IG", f_borrello)
f_aprovacao = get_or_create_folder("01_Para_Aprovacao", f_criativos)
f_v3 = get_or_create_folder("v3_2026-09-18", f_aprovacao)
f_estaticos = get_or_create_folder("estaticos_v3", f_v3)

fid = upload(FILE, f_estaticos)
print(f"upload OK: 05_conversa_quarto_pesado_v3b.png ({fid})")
print(f"pasta v3: https://drive.google.com/drive/folders/{f_v3}")
print(f"arquivo: https://drive.google.com/file/d/{fid}/view")
