From e5bb7fbca9af379012812f4cbee6545fa724a809 Mon Sep 17 00:00:00 2001 From: Alhaziel01 Date: Fri, 23 Jun 2023 11:44:43 +0200 Subject: [PATCH] Fix DooD Stream --- core/httptools.py | 5 +++-- servers/doodstream.json | 4 ++-- servers/doodstream.py | 17 +++++++++++------ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/core/httptools.py b/core/httptools.py index 7ea8c2d7..d47b6a58 100755 --- a/core/httptools.py +++ b/core/httptools.py @@ -429,8 +429,9 @@ def downloadpage(url, **opt): else: logger.debug("CF retry with proxy for domain: %s" % domain) if not opt.get('headers'): - opt['headers'] = [] - opt['headers'].extend([['Px-Host', domain], ['Px-Token', cf_proxy['token']]]) + opt['headers'] = {} + opt['headers']['Px-Host'] = domain + opt['headers']['Px-Token'] = cf_proxy['token'] opt['real-url'] = url ret = downloadpage(urlparse.urlunparse((parse.scheme, cf_proxy['url'], parse.path, parse.params, parse.query, parse.fragment)), **opt) ret.url = url diff --git a/servers/doodstream.json b/servers/doodstream.json index dc0c485e..b88db6d7 100644 --- a/servers/doodstream.json +++ b/servers/doodstream.json @@ -4,8 +4,8 @@ "ignore_urls": [], "patterns": [ { - "pattern": "dood(?:stream)?.[^/]+/+(?:e|d)/([a-z0-9]+)", - "url": "https://dood.yt/e/\\1" + "pattern": "(do*d(?:stream)?.[^/]+)/+(?:e|d)/([a-z0-9]+)", + "url": "https://\\1/e/\\2" } ] }, diff --git a/servers/doodstream.py b/servers/doodstream.py index a3da8440..1b191bfc 100644 --- a/servers/doodstream.py +++ b/servers/doodstream.py @@ -1,15 +1,20 @@ # -*- coding: utf-8 -*- -import time, string, random -from core import httptools, support, servertools +import time, string, random, sys +from core import httptools, support from platformcode import logger, config +if sys.version_info[0] >= 3: + from urllib.parse import urlparse +else: + from urllib import urlparse + def test_video_exists(page_url): global data logger.debug('page url=', page_url) - response = httptools.downloadpage(page_url) + response = httptools.downloadpage(page_url, cloudscraper=True) if response.code == 404 or 'dsplayer' not in response.data: return False, config.get_localized_string(70449) % 'DooD Stream' else: @@ -22,13 +27,13 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= logger.debug("URL", page_url) video_urls = [] - host = 'https://' + servertools.get_server_host('doodstream')[0] - headers = {'User-Agent': httptools.get_user_agent(), 'Referer': page_url} + host = 'https://{}'.format(urlparse(page_url).netloc) + headers = {'User-Agent': httptools.get_user_agent(), 'Referer': host} match = support.match(data, patron=r'''dsplayer\.hotkeys[^']+'([^']+).+?function\s*makePlay.+?return[^?]+([^"]+)''').match if match: url, token = match - ret = httptools.downloadpage(host + url, headers=headers).data + ret = httptools.downloadpage(host + url, headers=headers, cloudscraper=True).data video_urls.append(['mp4 [DooD Stream]', '{}{}{}{}|Referer={}'.format(randomize(ret), url, token, int(time.time() * 1000), host)])