# -*- coding: utf-8 -*-
"""Upload compressed mp4s to existing Trello card."""
import io, os, sys, json, time
import requests
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

KEY = 'd72121bbecb3634a9a7d8a31b24b8550'
TOKEN = 'ATTA71c15300bac07eac27c965971d7c714a690daed23bab7fea83076917f46e8689F9C43023'

WORK = r"C:\Users\ferna\proyecto cero\_factory_3d_demo\_runs\flow_2026-05-09T22-23-35-000Z_ComfortSleep\_trello_card_input"
COMP = os.path.join(WORK, 'compressed')

card = json.load(open(os.path.join(WORK, '_trello_card.json'), encoding='utf-8'))
card_id = card['card_id']
print(f'card_id: {card_id}')
print(f'short_url: {card["short_url"]}')

UPLOADS = [
    ('V2_thePillowHome_PT_gap_cervical_903351665947429.mp4', 'V2_REF_thePillowHome_gap_cervical_903351665947429.mp4'),
    ('V3_drRalphChiropractor25y_dual_height_80634156.mp4', 'V3_REF_drRalph_chiropractor_25y_Mello_80634156.mp4'),
    ('V4_dailyWellness_cervicalTraction_84922360.mp4', 'V4_REF_DailyWellness_CervicalTraction_84922360.mp4'),
    ('V5_NoctisRest_ES_15000personas_1470376311155120.mp4', 'V5_REF_NoctisRest_ES_15000_personas_1470376311155120.mp4'),
    ('V6_AnthonyMoll_testimonio_mello_88110246.mp4', 'V6_REF_AnthonyMoll_testimonio_mello_88110246.mp4'),
]

success = 0
for fname, name in UPLOADS:
    path = os.path.join(COMP, fname)
    size = os.path.getsize(path)
    print(f'uploading {name} ({size//1024} KB)...')
    with open(path, 'rb') as fh:
        r = requests.post(
            f'https://api.trello.com/1/cards/{card_id}/attachments',
            params={'key': KEY, 'token': TOKEN, 'name': name},
            files={'file': (name, fh, 'video/mp4')},
            timeout=600,
        )
    if r.status_code in (200, 201):
        print(f'  OK {r.json().get("id")}')
        success += 1
    else:
        print(f'  FAIL {r.status_code} {r.text[:300]}')
    time.sleep(0.5)

# Final count
r = requests.get(f'https://api.trello.com/1/cards/{card_id}/attachments', params={'key': KEY, 'token': TOKEN})
atts = r.json() if r.status_code == 200 else []
final_count = len(atts)
print(f'success uploads: {success}/5')
print(f'final attachments_count: {final_count}')

# Update output JSON
card['attachments_count'] = final_count
card['mp4s_compressed'] = True
with open(os.path.join(WORK, '_trello_card.json'), 'w', encoding='utf-8') as fh:
    json.dump(card, fh, ensure_ascii=False, indent=2)

# Print attachments inventory
print('\nAttachments on card:')
for a in atts:
    print(f"  - {a.get('name')} ({a.get('bytes', 0)//1024} KB)")

print('\nFINAL OUTPUT:')
print(json.dumps({
    'card_id': card_id,
    'short_url': card['short_url'],
    'attachments_count': final_count,
}, ensure_ascii=False))
