Unify menu labels, centralize hoster URL normalization, and add auto-update toggle
This commit is contained in:
@@ -15,7 +15,9 @@ from __future__ import annotations
|
||||
from datetime import datetime
|
||||
import hashlib
|
||||
import os
|
||||
import re
|
||||
from typing import Optional
|
||||
from urllib.parse import parse_qsl, urlencode
|
||||
|
||||
try: # pragma: no cover - Kodi runtime
|
||||
import xbmcaddon # type: ignore[import-not-found]
|
||||
@@ -237,3 +239,40 @@ def dump_response_html(
|
||||
max_files = get_setting_int(addon_id, max_files_setting_id, default=200)
|
||||
_prune_dump_files(log_dir, prefix=filename_prefix, max_files=max_files)
|
||||
_append_text_file(path, content)
|
||||
|
||||
|
||||
def normalize_resolved_stream_url(final_url: str, *, source_url: str = "") -> str:
|
||||
"""Normalisiert hoster-spezifische Header im finalen Stream-Link.
|
||||
|
||||
`final_url` kann ein Kodi-Header-Suffix enthalten: `url|Key=Value&...`.
|
||||
Die Funktion passt nur bekannte Problemfaelle an und laesst sonst alles unveraendert.
|
||||
"""
|
||||
|
||||
url = (final_url or "").strip()
|
||||
if not url:
|
||||
return ""
|
||||
normalized = _normalize_supervideo_serversicuro(url, source_url=source_url)
|
||||
return normalized
|
||||
|
||||
|
||||
def _normalize_supervideo_serversicuro(final_url: str, *, source_url: str = "") -> str:
|
||||
if "serversicuro.cc/hls/" not in final_url.casefold() or "|" not in final_url:
|
||||
return final_url
|
||||
|
||||
source = (source_url or "").strip()
|
||||
code_match = re.search(
|
||||
r"supervideo\.(?:tv|cc)/(?:e/)?([a-z0-9]+)(?:\\.html)?",
|
||||
source,
|
||||
flags=re.IGNORECASE,
|
||||
)
|
||||
if not code_match:
|
||||
return final_url
|
||||
|
||||
code = (code_match.group(1) or "").strip()
|
||||
if not code:
|
||||
return final_url
|
||||
|
||||
media_url, header_suffix = final_url.split("|", 1)
|
||||
headers = dict(parse_qsl(header_suffix, keep_blank_values=True))
|
||||
headers["Referer"] = f"https://supervideo.cc/e/{code}"
|
||||
return f"{media_url}|{urlencode(headers)}"
|
||||
|
||||
Reference in New Issue
Block a user