#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Upload das 5 featured images pro Drive.
Destino: PASTA DA MIA > Borrello > Blog > featured_images_v1_2026-09-18
"""
import json
import os
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload

TOKENS_PATH = '/opt/mia/config/drive_tokens.json'
CLIENT_PATH = '/opt/mia/config/oauth_client.json'
BORRELLO_FOLDER_ID = '1a9fQeMsIdQtFeP-hpOmzDeSzGXqOcxvn'
IMGS_DIR = '/opt/mia/workspace/clientes/borrello/blog/artigos_v1_2026-09-18/featured_images'

IMAGES = [
    'featured_01_entrada.jpg',
    'featured_02_quarto.jpg',
    'featured_03_plantas.jpg',
    'featured_04_animais.jpg',
    'featured_05_bagua.jpg',
]

MIME_JPG = 'image/jpeg'


def get_service():
    with open(TOKENS_PATH) as f:
        tokens = json.load(f)
    with open(CLIENT_PATH) as f:
        client_data = json.load(f)['installed']

    creds = Credentials(
        token=tokens.get('access_token'),
        refresh_token=tokens.get('refresh_token'),
        token_uri='https://oauth2.googleapis.com/token',
        client_id=client_data['client_id'],
        client_secret=client_data['client_secret'],
        scopes=['https://www.googleapis.com/auth/drive']
    )

    if creds.expired and creds.refresh_token:
        creds.refresh(Request())
        tokens['access_token'] = creds.token
        with open(TOKENS_PATH, 'w') as f:
            json.dump(tokens, f)
        print("Token renovado.")

    return build('drive', 'v3', credentials=creds)


def get_or_create_folder(service, name, parent_id):
    query = (
        f"name='{name}' and "
        f"'{parent_id}' in parents and "
        f"mimeType='application/vnd.google-apps.folder' and "
        f"trashed=false"
    )
    results = service.files().list(q=query, fields='files(id, name)').execute()
    files = results.get('files', [])
    if files:
        return files[0]['id']
    meta = {
        'name': name,
        'mimeType': 'application/vnd.google-apps.folder',
        'parents': [parent_id]
    }
    folder = service.files().create(body=meta, fields='id').execute()
    return folder['id']


def upload_file(service, local_path, filename, parent_id):
    media = MediaFileUpload(local_path, mimetype=MIME_JPG)
    meta = {'name': filename, 'parents': [parent_id]}
    f = service.files().create(body=meta, media_body=media, fields='id, webViewLink').execute()
    return f


def main():
    service = get_service()
    blog_id = get_or_create_folder(service, 'Blog', BORRELLO_FOLDER_ID)
    leva_id = get_or_create_folder(service, 'featured_images_v1_2026-09-18', blog_id)

    uploaded = []
    for fname in IMAGES:
        local = os.path.join(IMGS_DIR, fname)
        if not os.path.exists(local):
            print(f"NÃO ENCONTRADO: {local}")
            continue
        f = upload_file(service, local, fname, leva_id)
        print(f"OK {fname} -> {f.get('webViewLink')}")
        uploaded.append((fname, f.get('webViewLink')))

    pasta_link = f"https://drive.google.com/drive/folders/{leva_id}"
    print(f"\nPasta: {pasta_link}")
    print("\n--- RESUMO ---")
    for fname, link in uploaded:
        print(f"  {fname}: {link}")

    return leva_id, pasta_link, uploaded


if __name__ == '__main__':
    main()
