#!/usr/bin/env python3
"""
RunPod Anime Opening Automation Script
Francis B. Morissette Sci-Fi Series
"""

import argparse
import json
import os
import time
from pathlib import Path
import requests

CONFIG = {
    "runpod_api_key": os.getenv("RUNPOD_API_KEY", "rpa_BPMP3KEJYGMN7LR05B1Z8B2E39JN5KAGPA9CHX1Om70kcp"),
    "pod_id": os.getenv("POD_ID", "bvlnsjffdkgdkt"),
    "comfyui_port": "8188",
}

RUNPOD_API_BASE = "https://api.runpod.io/graphql"

def get_comfyui_url():
    return f"https://{CONFIG['pod_id']}-{CONFIG['comfyui_port']}.proxy.runpod.net"

def run_graphql(query, variables=None):
    headers = {"Authorization": f"Bearer {CONFIG['runpod_api_key']}"}
    payload = {"query": query}
    if variables:
        payload["variables"] = variables
    try:
        response = requests.post(RUNPOD_API_BASE, headers=headers, json=payload, timeout=30)
        response.raise_for_status()
        return response.json()
    except Exception as e:
        print(f"Error: {e}")
        return None

def check_pod_status():
    query = """
    query GetPod($podId: String!) {
        pod(input: {podId: $podId}) {
            id
            name
            runtime { uptimeInSeconds }
        }
    }
    """
    result = run_graphql(query, {"podId": CONFIG["pod_id"]})
    if result and "data" in result:
        return result["data"].get("pod")
    return None

def start_pod():
    query = """
    mutation ResumePod($podId: String!) {
        podResume(input: {podId: $podId}) { id }
    }
    """
    result = run_graphql(query, {"podId": CONFIG["pod_id"]})
    if result and "data" in result:
        print("Pod started")
        return True
    return False

def stop_pod():
    query = """
    mutation StopPod($podId: String!) {
        podStop(input: {podId: $podId}) { id }
    }
    """
    result = run_graphql(query, {"podId": CONFIG["pod_id"]})
    if result and "data" in result:
        print("Pod stopped - cost saved")
        return True
    return False

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--status", action="store_true")
    parser.add_argument("--start", action="store_true")
    parser.add_argument("--stop", action="store_true")
    args = parser.parse_args()
    
    if args.status:
        pod = check_pod_status()
        if pod:
            print(f"Pod: {pod.get('name')} ({pod.get('id')})")
            runtime = pod.get("runtime")
            if runtime:
                uptime = runtime.get("uptimeInSeconds", 0)
                hours = uptime // 3600
                minutes = (uptime % 3600) // 60
                print(f"Uptime: {hours}h {minutes}m")
            else:
                print("Status: Stopped")
        else:
            print("Status: Unknown")
    elif args.start:
        start_pod()
    elif args.stop:
        stop_pod()

if __name__ == "__main__":
    main()