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}") if __name__ == "__main__": main()