import json
import os
import requests
from pathlib import Path

ROOT = Path(__file__).resolve().parent.parent
CLASPRC_PATH = ROOT / ".clasprc.json"
SPREADSHEET_ID = "1e1TNlLfnT69nvw-I1wU_oBHmEtI2pfbld3e0fFmtrZM"
OUTPUT_XLSX = ROOT / "GatherTradingData.xlsx"

def get_tokens():
    if not CLASPRC_PATH.exists():
        raise FileNotFoundError(".clasprc.json not found")
    with open(CLASPRC_PATH, "r", encoding="utf-8") as f:
        return json.load(f)["tokens"]["default"]

def refresh_access_token(tokens):
    url = "https://oauth2.googleapis.com/token"
    payload = {
        "grant_type": "refresh_token",
        "refresh_token": tokens["refresh_token"],
        "client_id": tokens["client_id"],
        "client_secret": tokens["client_secret"],
    }
    resp = requests.post(url, data=payload)
    resp.raise_for_status()
    return resp.json()["access_token"]

def download_spreadsheet(spreadsheet_id, access_token, output_path):
    print(f"Downloading spreadsheet {spreadsheet_id} as XLSX...")
    url = f"https://www.googleapis.com/drive/v3/files/{spreadsheet_id}/export?mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    headers = {"Authorization": f"Bearer {access_token}"}
    resp = requests.get(url, headers=headers)
    resp.raise_for_status()
    with open(output_path, "wb") as f:
        f.write(resp.content)
    print(f"Successfully downloaded to {output_path}")

def main():
    try:
        tokens = get_tokens()
        access_token = refresh_access_token(tokens)
        download_spreadsheet(SPREADSHEET_ID, access_token, OUTPUT_XLSX)
        print("\nNext step: npm run prepare-upload-zip")
    except Exception as e:
        print(f"Error: {e}")
        raise SystemExit(1)

if __name__ == "__main__":
    main()
