#!/usr/bin/env python3

import requests
import json
from pathlib import Path

OUTPUT_TOKEN = Path("/opt/epg/token.txt")

# ============================================================
# SWEET.TV - AuthenticationService/Token.json
# ============================================================

URL = "https://api.sweet.tv/AuthenticationService/Token.json"

#REFRESH_TOKEN = "cff2a17c-4d45-4fe1-8aac-ea9b91d0106f"

REFRESH_TOKEN = "44e3d29c-246b-4513-943e-0c8c44d628ba"

USER_AGENT = (
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
    "AppleWebKit/537.36 (KHTML, like Gecko) "
    "Chrome/154.0.0.0 Safari/537.36 Edg/154.0.0.0"
)

# ============================================================
# DEVICE
# ============================================================

DEVICE_ID = "95aaf03b-f372-49c1-8f90-ea86a23b4687"

payload = {
    "device": {
        "type": "DT_Web_Browser",
        "sub_type": "DST_WINDOWS",

        "application": {
            "type": "AT_SWEET_TV_Player"
        },

        "model": USER_AGENT,

        "firmware": {
            "versionCode": 1,
            "versionString": "9.0.96"
        },

        "uuid": DEVICE_ID,

        "screen_info": {
            "width": 1536,
            "height": 864,
            "aspectRatio": 6
        },

        "supported_drm": {
            "widevine_modular": True
        },

        "drm_info": {
            "widevine_info": {
                "security_level": "SECURITY_LEVEL_L3",
                "system_id": None,
                "version": None
            }
        }
    },

    "refresh_token": REFRESH_TOKEN
}

# ============================================================
# HEADERS
# ============================================================

headers = {
    "Accept": "application/json, text/plain, */*",
    "Accept-Language": "sk,cs,hu,pl,en",
    "Content-Type": "application/json",
    "Origin": "https://sweet.tv",
    "Referer": "https://sweet.tv/",
    "User-Agent": USER_AGENT
}

# ============================================================
# REQUEST
# ============================================================

print("=" * 60)
print("SWEET.TV AuthenticationService / Token")
print("=" * 60)
print()

print("URL:", URL)
print("FIRMWARE: 9.0.96")
print()

print("POSIELAM REQUEST...")
print()

try:

    r = requests.post(
        URL,
        headers=headers,
        json=payload,
        timeout=20
    )

    print("HTTP:", r.status_code)
    print()

    try:
        data = r.json()
    except Exception:
        print("RESPONSE NIE JE JSON:")
        print(r.text[:1000])
        raise SystemExit

    # Bezpečný výpis – token sa nezobrazí
    safe_data = {}

    for key, value in data.items():

        if "token" in key.lower():
            safe_data[key] = "***HIDDEN***"
        else:
            safe_data[key] = value

    print("RESPONSE:")
    print(json.dumps(
        safe_data,
        indent=4,
        ensure_ascii=False
    ))

    # ========================================================
    # TOKEN
    # ========================================================

    if r.status_code == 200 and data.get("status") == "OK":

        access_token = data.get("access_token")
        expires_in = data.get("expires_in")

        if not access_token:
            print()
            print("ACCESS TOKEN CHÝBA")
            raise SystemExit

        OUTPUT_TOKEN.write_text(
            access_token,
            encoding="utf-8"
        )

        OUTPUT_TOKEN.chmod(0o600)

        print()
        print("=" * 60)
        print("TOKEN ZÍSKANÝ")
        print("=" * 60)
        print()
        print("expires_in:", expires_in)
        print("ACCESS TOKEN ULOŽENÝ DO:")
        print(OUTPUT_TOKEN)

    else:

        print()
        print("=" * 60)
        print("AUTHENTICATION FAILED")
        print("=" * 60)

except requests.RequestException as e:

    print("REQUEST ERROR:")
    print(type(e).__name__, e)