Fix streamsb
This commit is contained in:
@@ -504,3 +504,49 @@ def title_unify(title):
|
|||||||
u_title = spl[0] if len(spl[0]) > 5 else spl[1]
|
u_title = spl[0] if len(spl[0]) > 5 else spl[1]
|
||||||
|
|
||||||
return u_title.strip()
|
return u_title.strip()
|
||||||
|
|
||||||
|
|
||||||
|
def girc(page_data, url, co):
|
||||||
|
"""
|
||||||
|
Code adapted from https://github.com/vb6rocod/utils/
|
||||||
|
Copyright (C) 2019 vb6rocod
|
||||||
|
and https://github.com/addon-lab/addon-lab_resolver_Project
|
||||||
|
Copyright (C) 2021 ADDON-LAB, KAR10S
|
||||||
|
"""
|
||||||
|
import re
|
||||||
|
from core import httptools
|
||||||
|
hdrs = {'Referer': url}
|
||||||
|
rurl = 'https://www.google.com/recaptcha/api.js'
|
||||||
|
aurl = 'https://www.google.com/recaptcha/api2'
|
||||||
|
key = re.search(r'(?:src="{0}\?.*?render|data-sitekey)="?([^"]+)'.format(rurl), page_data)
|
||||||
|
if key:
|
||||||
|
key = key.group(1)
|
||||||
|
rurl = '{0}?render={1}'.format(rurl, key)
|
||||||
|
page_data1 = httptools.downloadpage(rurl, headers=hdrs).data
|
||||||
|
v = re.findall('releases/([^/]+)', page_data1)[0]
|
||||||
|
rdata = {'ar': 1,
|
||||||
|
'k': key,
|
||||||
|
'co': co,
|
||||||
|
'hl': 'en',
|
||||||
|
'v': v,
|
||||||
|
'size': 'invisible',
|
||||||
|
'cb': '123456789'}
|
||||||
|
page_data2 = httptools.downloadpage('{0}/anchor?{1}'.format(aurl, httptools.urlparse.urlencode(rdata)), headers=hdrs).data
|
||||||
|
rtoken = re.search('recaptcha-token.+?="([^"]+)', page_data2)
|
||||||
|
if rtoken:
|
||||||
|
rtoken = rtoken.group(1)
|
||||||
|
else:
|
||||||
|
return ''
|
||||||
|
pdata = {'v': v,
|
||||||
|
'reason': 'q',
|
||||||
|
'k': key,
|
||||||
|
'c': rtoken,
|
||||||
|
'sa': '',
|
||||||
|
'co': co}
|
||||||
|
hdrs.update({'Referer': aurl})
|
||||||
|
page_data3 = httptools.downloadpage('{0}/reload?k={1}'.format(aurl, key), post=pdata, headers=hdrs).data
|
||||||
|
gtoken = re.search('rresp","([^"]+)', page_data3)
|
||||||
|
if gtoken:
|
||||||
|
return gtoken.group(1)
|
||||||
|
|
||||||
|
return ''
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
"ignore_urls": [],
|
"ignore_urls": [],
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"pattern": "(?:streamsb|sbembed|sbembed1|sbplay1|sbplay|pelistop|tubesb|playersb|embedsb|watchsb).\\w{2,4}/(?:embed-|d/|e/)?([A-z0-9]+)",
|
"pattern": "(?:streamsb|sbembed|sbembed1|sbplay1|sbplay|pelistop|tubesb|playersb|embedsb|watchsb|streamas).\\w{2,5}/(?:embed-|d/|e/)?([A-z0-9]+)",
|
||||||
"url": "https://streamsb.net/\\1"
|
"url": "https://streamsb.net/d/\\1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pattern": "(?:cloudemb.com)/([A-z0-9]+)",
|
"pattern": "(?:cloudemb.com)/([A-z0-9]+)",
|
||||||
"url": "https://streamsb.net/\\1"
|
"url": "https://streamsb.net/d/\\1"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
+11
-8
@@ -2,10 +2,8 @@
|
|||||||
# https://github.com/tvaddonsco/script.module.urlresolver/blob/master/lib/urlresolver/plugins/streamsb.py
|
# https://github.com/tvaddonsco/script.module.urlresolver/blob/master/lib/urlresolver/plugins/streamsb.py
|
||||||
|
|
||||||
from core import httptools, scrapertools
|
from core import httptools, scrapertools
|
||||||
from platformcode import config, logger
|
from platformcode import config
|
||||||
import time
|
import base64
|
||||||
|
|
||||||
host = 'streamsb.net'
|
|
||||||
|
|
||||||
|
|
||||||
def test_video_exists(page_url):
|
def test_video_exists(page_url):
|
||||||
@@ -21,8 +19,8 @@ def test_video_exists(page_url):
|
|||||||
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
||||||
video_urls = []
|
video_urls = []
|
||||||
global data
|
global data
|
||||||
|
host = scrapertools.get_domain_from_url(page_url)
|
||||||
sources = scrapertools.find_multiple_matches(data, r'download_video([^"]+)[^\d]+\d+x(\d+)')
|
sources = scrapertools.find_multiple_matches(data, r'download_video([^"]+)[^\d]+\d+x(\d+)')
|
||||||
time.sleep(1)
|
|
||||||
if sources:
|
if sources:
|
||||||
sources.sort(key=lambda x: int(x[1]), reverse=True)
|
sources.sort(key=lambda x: int(x[1]), reverse=True)
|
||||||
sources = [(x[1] + 'p', x[0]) for x in sources]
|
sources = [(x[1] + 'p', x[0]) for x in sources]
|
||||||
@@ -30,9 +28,14 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
|
|||||||
code, mode, hash = eval(s[1])
|
code, mode, hash = eval(s[1])
|
||||||
dl_url = 'https://{0}/dl?op=download_orig&id={1}&mode={2}&hash={3}'.format(host, code, mode, hash)
|
dl_url = 'https://{0}/dl?op=download_orig&id={1}&mode={2}&hash={3}'.format(host, code, mode, hash)
|
||||||
data = httptools.downloadpage(dl_url).data
|
data = httptools.downloadpage(dl_url).data
|
||||||
media_url = scrapertools.find_single_match(data, 'href="([^"]+)">Direct')
|
|
||||||
if media_url:
|
captcha = scrapertools.girc(data, 'https://{0}/'.format(host), base64.b64encode('https://{0}:443'.format(host).encode('utf-8')).decode('utf-8').replace('=', ''))
|
||||||
video_urls.append([s[0], media_url])
|
if captcha:
|
||||||
|
data = httptools.downloadpage(dl_url, post={'op': 'download_orig', 'id': code, 'mode': mode,
|
||||||
|
'hash': hash, 'g-recaptcha-response': captcha}, timeout=10).data
|
||||||
|
media_url = scrapertools.find_single_match(data, 'href="([^"]+)">Direct')
|
||||||
|
if media_url:
|
||||||
|
video_urls.append([s[0], media_url])
|
||||||
return video_urls
|
return video_urls
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user