#!/usr/bin/env python3
import sys
import json
import requests

params = dict(arg.split("=", 1) for arg in sys.argv[1:] if "=" in arg)
action = params.get("action")

if action == "manifest":

    channel_id = params.get("id")

    url = "https://default.any-any.prd.api.discoveryplus.com/any/playback/v1/playbackInfo"

    headers = {
        "user-agent": "Mozilla/5.0",
        "content-type": "application/json",
        "x-disco-client": "WEB:10:dplus:7.0.0",
        "x-disco-params": "realm=bolt,bid=dplus,features=ar",
        "x-device-info": "dplus/7.0.0 (desktop/desktop; Windows/10; test/test)",
        "cookie": "st=eyJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJ0b2tlbi0wYzMyODJkNS0zOTdjLTQzNTgtYTc5Ny1mZGUwMjIxNjAwZjIiLCJpc3MiOiJmcGEtaXNzdWVyIiwic3ViIjoiVVNFUklEOmJvbHQ6YzkwN2JjMjctN2ZhZi00YTRmLTgxYjUtNTI1Mjc5N2RkNzQ4IiwiaWF0IjoxNzc2NTMyNzk0LCJleHAiOjIwOTE4OTI3OTQsInR5cGUiOiJBQ0NFU1NfVE9LRU4iLCJzdWJkaXZpc2lvbiI6ImRwbHVzX2VtZWEiLCJzY29wZSI6ImRlZmF1bHQiLCJpaWQiOiI4YTZmMDEzYi1lYzcxLTQ0N2MtYjg4ZS1jY2M2MjE1YjE2NzAiLCJ2ZXJzaW9uIjoidjQiLCJhbm9ueW1vdXMiOmZhbHNlLCJkZXZpY2VJZCI6Ijg2OTBmYzUzLWM2ODUtNGRlOS04ZjNjLTRlZmUxZTEyYzRiMCJ9.cT-ZPWkxqAAGLHyWv9ovA-U8ZdHvs8g_MA0CZ3EaaubVF3Gd-XQqPflXOi-K-Oud4Ws4e5uSMyjTgjl4YS_aMgNz6saLkP3vtlg1pwTLC7LvcISmwDYVogImYM6EWCzr_R6-rQu8FyfkFOsbcdXbeZ29bd-afUb6qvFIetMrxd2ts4csFgW5w1JgBJbzQRUS54miIkdUbQ376LQplCfmpyJqwAK7HROsYE7lkfEmQRcOqOVjiyJcp89_cLUKNWAcoUIjF7H0zfRmHYptG0Oo_Ior1xuRSC4WcePTD-hlo0lRD5q0RIzm8kK4VbWYgCRWl9hgNR_wMbZ-T_pNQ5t6vQ"
    }

    payload = {
        "appBundle": "dplus",
        "editId": channel_id,
        "consumptionType": "streaming",
        "firstPlay": False,
        "gdpr": False,
        "playbackSessionId": "test-session",
        "applicationSessionId": "test-app",
        "userPreferences": {
            "videoQuality": "best",
            "uiLanguage": "it-IT"
        },
        "capabilities": {
            "manifests": {
                "formats": {
                    "dash": {}
                }
            }
        },
        "deviceInfo": {
            "platform": "WEB",
            "player": {
                "sdk": {
                    "name": "Beam Player Desktop",
                    "version": "7.0.0"
                },
                "mediaEngine": {
                    "name": "GLUON_BROWSER",
                    "version": "8.2.0"
                },
                "playerView": {
                    "width": 1920,
                    "height": 1080
                }
            }
        }
    }

    r = requests.post(url, headers=headers, json=payload)
    data = r.json()

    try:
        manifest = data["manifest"]["url"]
    except:
        print("ERROR")
        print(json.dumps(data, indent=2))
        sys.exit(1)

    print(json.dumps({
        "ManifestUrl": manifest
    }))