#!/usr/bin/env python3
"""Update Bonanzo deck slides 2, 3, 4 with Anton-approved Ozawa illustrations."""
import json
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload

with open('/home/clawd/.clawdbot/skills/gmail/tokens/bot-calendar.json') as f:
    token_data = json.load(f)
with open('/home/clawd/.clawdbot/skills/gmail/credentials.json') as f:
    cred_data = json.load(f)['installed']

creds = Credentials(
    token=token_data['token'],
    refresh_token=token_data['refresh_token'],
    token_uri=cred_data['token_uri'],
    client_id=cred_data['client_id'],
    client_secret=cred_data['client_secret'],
    scopes=token_data.get('scopes', [])
)

PRES_ID = '1QvQ7WTuOX9ampVhfJLmGSwE8KVTIEbWRsjYs7B9G0jQ'
slides_service = build('slides', 'v1', credentials=creds)
drive_service = build('drive', 'v3', credentials=creds)

def upload_image(filepath, filename):
    media = MediaFileUpload(filepath, mimetype='image/png')
    file = drive_service.files().create(
        body={'name': filename, 'mimeType': 'image/png'},
        media_body=media, fields='id'
    ).execute()
    drive_service.permissions().create(
        fileId=file['id'], body={'type': 'anyone', 'role': 'reader'}
    ).execute()
    url = f"https://drive.google.com/uc?export=download&id={file['id']}"
    print(f"Uploaded {filename} -> {url}")
    return url

def emu(inches):
    return int(inches * 914400)

# Upload all three
slide2_url = upload_image('/home/clawd/workspace/2026-02-03-bonanzo-slide2-ozawa-r2.png', 'bonanzo-slide2-ozawa-final.png')
slide3_url = upload_image('/home/clawd/workspace/2026-02-03-bonanzo-slide3-ozawa-r2.png', 'bonanzo-slide3-ozawa-final.png')
slide4_url = upload_image('/home/clawd/workspace/2026-02-03-bonanzo-slide4-ozawa-r2.png', 'bonanzo-slide4-ozawa-final.png')

# First, remove existing images on slides 4 (from previous attempt)
pres = slides_service.presentations().get(presentationId=PRES_ID).execute()
slides = pres.get('slides', [])

delete_requests = []
for slide_idx in [1, 2, 3]:  # slides 2,3,4 (0-indexed)
    for elem in slides[slide_idx].get('pageElements', []):
        if 'image' in elem:
            delete_requests.append({'deleteObject': {'objectId': elem['objectId']}})

if delete_requests:
    slides_service.presentations().batchUpdate(
        presentationId=PRES_ID, body={'requests': delete_requests}
    ).execute()
    print(f"Deleted {len(delete_requests)} existing images")

# Place new images as right-side portrait panels
# 3:4 portrait at full slide height (5.625") = 4.22" wide
requests = []
for slide_id, url in [('slide02', slide2_url), ('slide03', slide3_url), ('slide04', slide4_url)]:
    requests.append({
        'createImage': {
            'url': url,
            'elementProperties': {
                'pageObjectId': slide_id,
                'size': {
                    'width': {'magnitude': emu(4.2), 'unit': 'EMU'},
                    'height': {'magnitude': emu(5.625), 'unit': 'EMU'}
                },
                'transform': {
                    'scaleX': 1, 'scaleY': 1,
                    'translateX': emu(5.8),
                    'translateY': 0,
                    'unit': 'EMU'
                }
            }
        }
    })

result = slides_service.presentations().batchUpdate(
    presentationId=PRES_ID, body={'requests': requests}
).execute()

print(f"\nDone! Updated slides 2, 3, 4.")
print(f"Deck: https://docs.google.com/presentation/d/{PRES_ID}/edit")
