import builtins
import json
import re
from os.path import join
from urllib.parse import urlencode, urlparse, urlunparse, parse_qs
import requests
from utils.main_service import main_service
from utils.structs import BaseElement, BaseService
from utils.tools.args import check_range
from utils.tools.common import get_valid_filename
class wittytv_it(BaseService):
DEMO_URLS = [
"https://www.wittytv.it/?trasmissioni=cat-originals&category_name=google-bar",
"https://www.wittytv.it/?trasmissioni=cat-amici&category_name=clip",
"https://www.wittytv.it/?trasmissioni=cat-amici&category_name=le-puntate",
"https://www.wittytv.it/tu-si-que-vales/prima-puntata-sabato-18-settembre/",
"https://www.wittytv.it/ce-posta-per-te/quarta-puntata-sabato-3-febbraio/",
"https://www.wittytv.it/maurizio-costanzo-show/ultima-puntata-venerdi-25-novembre/",
"https://www.wittytv.it/uomini-e-donne/lunedi-11-marzo-2",
"https://www.wittytv.it/uomini-e-donne/venerdi-8-marzo-2/",
"https://www.wittytv.it/uomini-e-donne/esterna-di-ida-e-pierpaolo-8-marzo/",
]
LOGIN_URL = "https://api-ott-prod-fe.mediaset.net/PROD/play/idm/anonymous/login/v2.0"
ACCOUNT_URL = "http://access.auth.theplatform.com/data/Account/{a_id}"
PLAYBACK_URL = 'https://api-ott-prod-fe.mediaset.net/PROD/play/playback/check/v2.0'
PROGRAM_URL = 'https://feed.entertainment.tv.theplatform.eu/f/-/mediaset-prod-ext-programs-v2/guid/-/{guid}'
QUERY_URL = 'https://www.wittytv.it/wp-admin/admin-ajax.php?action=load_more&query[category_name]={category_name}&query[trasmissioni]={broadcast}&query[paged]={page}'
MEDIASET_URL = 'https://mediasetinfinity.mediaset.it'
LICENSE_URL = 'https://widevine.entitlement.theplatform.eu/wv/web/ModularDrm/getRawWidevineLicense'
USER_AGENT = None
BEARER_TOKEN = None
RES_PRIORITY = ["hd", "hr", "sd"]
@staticmethod
def test_service():
main_service.run_service(wittytv_it)
@staticmethod
def credentials_needed():
return {"NONE_NEEDED": True}
@staticmethod
def get_bearer_token():
return json.loads(requests.post(
wittytv_it.LOGIN_URL, json={'client_id': 'client_id', 'appName': 'embed//mediasetplay-embed'}
).content.decode())["response"]["beToken"]
@staticmethod
def initialize_service():
if wittytv_it.USER_AGENT is None:
wittytv_it.USER_AGENT = builtins.CONFIG["USER_AGENT"]
if wittytv_it.BEARER_TOKEN is None:
wittytv_it.BEARER_TOKEN = wittytv_it.get_bearer_token()
return wittytv_it
@staticmethod
def get_keys(challenge, additional):
licence = requests.post(
wittytv_it.LICENSE_URL, data=challenge,
params={
'releasePid': additional['release_pid'],
'account': wittytv_it.ACCOUNT_URL.format(a_id=additional["account"]),
'schema': '1.0', 'token': wittytv_it.BEARER_TOKEN
}
)
licence.raise_for_status()
return licence.content
@staticmethod
def get_manifest_info(manifest, formats, manifest_info):
try:
raise
return manifest, str(min(re.findall(
r'(.+?)',
requests.get(f"{manifest}?formats={formats}").content.decode()
), key=len))
except:
pass
matches = re.findall(r'