delqhi/sin-github-issues
0
1#!/usr/bin/env python32"""3A2A Consumer Rotator (HF VM Pull Script)4Pulls a fresh OpenAI token from SIN-Supabase when a rate-limit is hit.5Infinite Scaling Architecture.6"""7 8import os9import json10import requests11from pathlib import Path12 13SUPABASE_URL = os.environ.get("SUPABASE_URL")14SUPABASE_KEY = os.environ.get("SUPABASE_SERVICE_ROLE_KEY")15AUTH_FILE = Path.home() / ".local" / "share" / "opencode" / "auth.json"16 17def pull_fresh_token():18 if not SUPABASE_URL or not SUPABASE_KEY:19 print("❌ FEHLER: SUPABASE_URL oder SUPABASE_SERVICE_ROLE_KEY fehlen!")20 return False21 22 base_url = SUPABASE_URL.rstrip('/')23 headers = {24 "apikey": SUPABASE_KEY,25 "Authorization": f"Bearer {SUPABASE_KEY}",26 "Content-Type": "application/json",27 "Prefer": "return=representation"28 }29 30 print("🔍 Suche frischen Token im Pool...")31 get_url = f"{base_url}/rest/v1/openai_account_pool?status=eq.FRESH&limit=1"32 resp = requests.get(get_url, headers=headers, timeout=5)33 34 if resp.status_code != 200 or not resp.json():35 print("❌ FEHLER: Kein frischer Token im Pool verfügbar!")36 return False37 38 row = resp.json()[0]39 row_id = row["id"]40 new_auth_data = row["auth_json_data"]41 42 patch_url = f"{base_url}/rest/v1/openai_account_pool?id=eq.{row_id}"43 requests.patch(patch_url, headers=headers, json={"status": "IN_USE"}, timeout=5)44 45 AUTH_FILE.parent.mkdir(parents=True, exist_ok=True)46 current_data = {}47 if AUTH_FILE.exists():48 try:49 current_data = json.loads(AUTH_FILE.read_text())50 except:51 pass52 53 current_data["openai"] = new_auth_data54 AUTH_FILE.write_text(json.dumps(current_data, indent=2))55 print(f"🚀 ERFOLG: Lokale auth.json überschrieben. (ID: {row_id})")56 return True57 58if __name__ == "__main__":59 pull_fresh_token()60 