dev: roll back resolver routing changes and publish 0.1.65-dev

This commit is contained in:
2026-02-24 21:36:04 +01:00
parent 482e0b0cc6
commit 74d15cb25e
5 changed files with 10 additions and 101 deletions

View File

@@ -3666,21 +3666,6 @@ def _resolveurl_last_error() -> str:
return ""
def _resolveurl_resolve(url: str) -> str | None:
try:
from resolveurl_backend import resolve as _resolve # type: ignore
except Exception:
return None
try:
result = _resolve(url)
except Exception as exc:
_log(f"ResolveURL direkter Aufruf fehlgeschlagen: {exc}", xbmc.LOGWARNING)
return None
if not result:
return None
return str(result)
def _is_cloudflare_challenge_error(message: str) -> bool:
text = str(message or "").casefold()
if not text:
@@ -3692,37 +3677,6 @@ def _is_resolveurl_missing_error(message: str) -> bool:
return str(message or "").strip().casefold() == "resolveurl missing"
def _is_resolveurl_soft_error(message: str) -> bool:
text = str(message or "").strip().casefold()
return text in {"resolveurl missing", "unresolved", "invalid url"}
def _looks_like_media_url(url: str) -> bool:
raw = str(url or "").strip()
if not raw:
return False
source = raw.split("|", 1)[0]
path = urlparse(source).path.casefold()
return bool(
re.search(r"\.(m3u8|mpd|mp4|mkv|webm|avi|mov|ts)(?:$|[/?#])", path)
)
def _looks_like_embed_page_url(url: str) -> bool:
raw = str(url or "").strip()
if not raw:
return False
source = raw.split("|", 1)[0]
parsed = urlparse(source)
host = (parsed.netloc or "").casefold()
path = (parsed.path or "").casefold()
if not host.startswith(("voe.", "streamtape.", "dood.", "filemoon.", "vidmoly.", "supervideo.", "veev.", "vidnest.", "vidara.", "strmup.")):
return False
if _looks_like_media_url(source):
return False
return bool(re.search(r"/(e|embed|v)/", path))
def _play_final_link(
link: str,
*,
@@ -3855,24 +3809,13 @@ def _play_episode(
return
_log(f"Stream-Link: {link}", xbmc.LOGDEBUG)
resolved_link = plugin.resolve_stream_link(link)
err = _resolveurl_last_error()
if err:
_log(f"ResolveURL Status: {err}", xbmc.LOGDEBUG)
if resolved_link and _looks_like_embed_page_url(resolved_link) and _is_resolveurl_soft_error(err):
_log("Unaufgeloester Hoster-Link erkannt: versuche ResolveURL-Reparatur.", xbmc.LOGWARNING)
_ensure_resolveurl_installed(force=True, silent=True)
resolved_link = plugin.resolve_stream_link(link)
err = _resolveurl_last_error()
if err:
_log(f"ResolveURL Status (nach Reparatur): {err}", xbmc.LOGDEBUG)
if not resolved_link:
err = _resolveurl_last_error()
if _is_resolveurl_missing_error(err):
_log("ResolveURL fehlt: versuche Auto-Installation.", xbmc.LOGWARNING)
_ensure_resolveurl_installed(force=True, silent=True)
resolved_link = plugin.resolve_stream_link(link)
err = _resolveurl_last_error()
if err:
_log(f"ResolveURL Status (nach Auto-Installation): {err}", xbmc.LOGDEBUG)
if _is_cloudflare_challenge_error(err):
_log(f"ResolveURL Cloudflare-Challenge: {err}", xbmc.LOGWARNING)
xbmcgui.Dialog().notification(
@@ -3885,20 +3828,6 @@ def _play_episode(
final_link = resolved_link or link
final_link = normalize_resolved_stream_url(final_link, source_url=link)
err = _resolveurl_last_error()
if _looks_like_embed_page_url(final_link):
direct_resolved = _resolveurl_resolve(final_link)
if direct_resolved:
_log(f"ResolveURL Direkt-Fallback Treffer: {direct_resolved}", xbmc.LOGDEBUG)
final_link = normalize_resolved_stream_url(direct_resolved, source_url=final_link)
_log(f"Hoster-Link nicht aufgeloest: {final_link}", xbmc.LOGWARNING)
if _looks_like_embed_page_url(final_link):
xbmcgui.Dialog().notification(
"Wiedergabe",
"Hoster-Link konnte nicht aufgeloest werden. ResolveURL pruefen.",
xbmcgui.NOTIFICATION_INFO,
5000,
)
return
if _is_cloudflare_challenge_error(err) and final_link.strip() == link.strip():
_log(f"ResolveURL Cloudflare-Challenge (unresolved): {err}", xbmc.LOGWARNING)
xbmcgui.Dialog().notification(
@@ -3995,24 +3924,13 @@ def _play_episode_url(
return
_log(f"Stream-Link: {link}", xbmc.LOGDEBUG)
resolved_link = plugin.resolve_stream_link(link)
err = _resolveurl_last_error()
if err:
_log(f"ResolveURL Status: {err}", xbmc.LOGDEBUG)
if resolved_link and _looks_like_embed_page_url(resolved_link) and _is_resolveurl_soft_error(err):
_log("Unaufgeloester Hoster-Link erkannt: versuche ResolveURL-Reparatur.", xbmc.LOGWARNING)
_ensure_resolveurl_installed(force=True, silent=True)
resolved_link = plugin.resolve_stream_link(link)
err = _resolveurl_last_error()
if err:
_log(f"ResolveURL Status (nach Reparatur): {err}", xbmc.LOGDEBUG)
if not resolved_link:
err = _resolveurl_last_error()
if _is_resolveurl_missing_error(err):
_log("ResolveURL fehlt: versuche Auto-Installation.", xbmc.LOGWARNING)
_ensure_resolveurl_installed(force=True, silent=True)
resolved_link = plugin.resolve_stream_link(link)
err = _resolveurl_last_error()
if err:
_log(f"ResolveURL Status (nach Auto-Installation): {err}", xbmc.LOGDEBUG)
if _is_cloudflare_challenge_error(err):
_log(f"ResolveURL Cloudflare-Challenge: {err}", xbmc.LOGWARNING)
xbmcgui.Dialog().notification(
@@ -4025,20 +3943,6 @@ def _play_episode_url(
final_link = resolved_link or link
final_link = normalize_resolved_stream_url(final_link, source_url=link)
err = _resolveurl_last_error()
if _looks_like_embed_page_url(final_link):
direct_resolved = _resolveurl_resolve(final_link)
if direct_resolved:
_log(f"ResolveURL Direkt-Fallback Treffer: {direct_resolved}", xbmc.LOGDEBUG)
final_link = normalize_resolved_stream_url(direct_resolved, source_url=final_link)
_log(f"Hoster-Link nicht aufgeloest: {final_link}", xbmc.LOGWARNING)
if _looks_like_embed_page_url(final_link):
xbmcgui.Dialog().notification(
"Wiedergabe",
"Hoster-Link konnte nicht aufgeloest werden. ResolveURL pruefen.",
xbmcgui.NOTIFICATION_INFO,
5000,
)
return
if _is_cloudflare_challenge_error(err) and final_link.strip() == link.strip():
_log(f"ResolveURL Cloudflare-Challenge (unresolved): {err}", xbmc.LOGWARNING)
xbmcgui.Dialog().notification(