fix(movie-resolve): route DoodStream clones to phone-side resolve, skip yt-dlp

extract_stream_from_hoster fell through to yt-dlp for DoodStream clones (playmogo,
doply, myvidplay, dood.*), which yt-dlp does not support -> "ERROR: Unsupported URL"
spam dominating the movie-resolve logs, plus wasted seconds per resolve before the
caller returned the embed as type='hoster' anyway. Now detects the dood-clone family
up front and returns None immediately (same pattern as the filemoon SPA handling), so
the embed goes straight to the mobile doodstream.ts resolver (pass_md5 with the user's
residential IP, which clears the invisible Turnstile). Verified: playmogo/myvidplay/
doply URLs now return None with no yt-dlp attempt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
goon-foss 2026-07-08 00:05:11 +02:00
parent e30f6830f4
commit 62c2548450

View file

@ -238,6 +238,20 @@ def extract_stream_from_hoster(
):
log.debug("hoster %s: filemoon SPA → type=hoster (mobile-side resolve)", iframe_url)
return None
# DoodStream + klony (playmogo/doply/myvidplay/dood.*/doodstream) — protokół pass_md5
# + niewidzialny Cloudflare Turnstile wiązany z IP requestera. Server-side resolve
# bezcelowy (VPS dostaje Turnstile gate / IP-bound token). Zwracamy None → caller
# oddaje embed jako type='hoster' → mobile doodstream.ts robi pass_md5 z IP usera
# (residential przechodzi Turnstile). Bez tego leciało do yt-dlp → "Unsupported URL"
# spam (playmogo zalewał logi movie-resolve) + marnowanie ~sekund na martwy resolve.
if re.search(
r"//(?:[a-z0-9-]+\.)?(?:playmogo|doply|myvidplay|doodstream|dood|d0+d|"
r"dooood|do0od|do7go|ds2play|doodcdn)\.[a-z]{2,6}/",
iframe_url,
re.IGNORECASE,
):
log.debug("hoster %s: doodstream clone → type=hoster (mobile-side resolve)", iframe_url)
return None
headers = {
"User-Agent": _DEFAULT_UA,
"Accept": "text/html,application/xhtml+xml",