@@ -4,12 +4,8 @@
|
|||||||
"ignore_urls": [],
|
"ignore_urls": [],
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"pattern": "https?://maxstream.video/(?:e/)?([a-z0-9]+)",
|
"pattern": "https?://maxstream.video/.*?([^\/]+)$",
|
||||||
"url": "https://maxstream.video/\\1"
|
"url": "https://maxstream.video/cast/\\1"
|
||||||
},
|
|
||||||
{
|
|
||||||
"pattern": "https?://maxstream.video/embed-([a-z0-9]+).html",
|
|
||||||
"url": "https://maxstream.video/\\1"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
+30
-6
@@ -2,21 +2,45 @@ from core import httptools
|
|||||||
from core import scrapertools, support
|
from core import scrapertools, support
|
||||||
from lib import jsunpack
|
from lib import jsunpack
|
||||||
from platformcode import logger, config
|
from platformcode import logger, config
|
||||||
|
import re, ast, requests
|
||||||
|
|
||||||
def test_video_exists(page_url):
|
def test_video_exists(page_url):
|
||||||
logger.debug("(page_url='%s')" % page_url)
|
logger.debug("(page_url='%s')" % page_url)
|
||||||
|
|
||||||
global data
|
global data
|
||||||
data = httptools.downloadpage(page_url).data
|
data = httptools.downloadpage(page_url).data
|
||||||
|
|
||||||
if "File Not Found" in data or "File was deleted" in data:
|
if "file was deleted" in data:
|
||||||
return False, config.get_localized_string(70449) % "MaxStream"
|
return False, config.get_localized_string(70449) % "MaxStream"
|
||||||
|
|
||||||
return True, ""
|
return True, ""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
||||||
logger.debug("url=" + page_url)
|
logger.debug("url=" + page_url)
|
||||||
global data
|
|
||||||
packed = scrapertools.find_single_match(data, r'(eval.*?)</script>')
|
lastIndexStart = data.rfind('<script>')
|
||||||
unpacked = jsunpack.unpack(packed)
|
lastIndexEnd = data.rfind('</script>')
|
||||||
return support.get_jwplayer_mediaurl(unpacked, 'MaxStream')
|
|
||||||
|
script = data[ (lastIndexStart + len('<script>')):lastIndexEnd ]
|
||||||
|
|
||||||
|
char_codes = ast.literal_eval(re.search('\[[^]+]+]',script).group(0))
|
||||||
|
hidden_js = "".join([chr(c - int(re.search('parseInt\(value\)\s?-\s?([0-9]+)', script).group(1))) for c in char_codes])
|
||||||
|
|
||||||
|
# newurl = re.search('\$.get\(\'([^\']+)', hidden_js).group(1)
|
||||||
|
newurl = scrapertools.find_single_match(hidden_js, r'\$.get\(\'([^\']+)')
|
||||||
|
|
||||||
|
url_video = None
|
||||||
|
|
||||||
|
castpage = httptools.downloadpage(newurl, headers={'x-requested-with': 'XMLHttpRequest', 'Referer': page_url }).data
|
||||||
|
|
||||||
|
url_video = scrapertools.find_single_match(castpage, r"cc\.cast\('(http[s]?.*?)'")
|
||||||
|
|
||||||
|
if url_video:
|
||||||
|
video_urls = []
|
||||||
|
video_urls.append(["mp4 [MaxStream]", url_video])
|
||||||
|
return video_urls
|
||||||
|
else:
|
||||||
|
raise "Something wrong: no url found before that :("
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user