Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/nightly' into nightly
Browse files Browse the repository at this point in the history
# Conflicts:
#	sites/moviestream.py
  • Loading branch information
oli committed Jan 2, 2021
2 parents 4d1798b + 12ce365 commit 1ebc198
Show file tree
Hide file tree
Showing 12 changed files with 302 additions and 436 deletions.
5 changes: 5 additions & 0 deletions addon.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
<platform>all</platform>
<news>
3.5.20~nightly
- [streamworld] Seite hinzugefügt
- [kinoger] fix hoster TNX kasi
- [view4U] Seite hinzugefügt
- [moviestream] Seite entfernt
- [topstreamfilm] Seite entfernt
- [kinox] fix hoster
- [TMDB] Fix Problem mit Jahr
- xStream Einstellungen TMDB neu gestaltet
Expand Down
5 changes: 5 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
3.5.20~nightly
- [streamworld] Seite hinzugefügt
- [kinoger] fix hoster TNX kasi
- [view4U] Seite hinzugefügt
- [moviestream] Seite entfernt
- [topstreamfilm] Seite entfernt
- [kinox] fix hoster
- [TMDB] Fix Problem mit Jahr
- xStream Einstellungen TMDB neu gestaltet
Expand Down
Binary file removed resources/art/sites/moviestream.png
Binary file not shown.
Binary file added resources/art/sites/streamworld.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed resources/art/sites/topstreamfilm.png
Binary file not shown.
Binary file added resources/art/sites/view4u.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
75 changes: 60 additions & 15 deletions resources/lib/handler/requestHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
from urlparse import urlparse
from urllib import quote, urlencode
from urllib2 import HTTPError, URLError, HTTPHandler, HTTPSHandler, HTTPCookieProcessor, build_opener, Request, urlopen
from cookielib import LWPCookieJar
from cookielib import LWPCookieJar, Cookie
from httplib import HTTPSConnection, HTTPException
except ImportError:
from urllib.parse import quote, urlencode, urlparse
from urllib.error import HTTPError, URLError
from urllib.request import HTTPHandler, HTTPSHandler, HTTPCookieProcessor, build_opener, Request, urlopen
from http.cookiejar import LWPCookieJar
from http.cookiejar import LWPCookieJar, Cookie
from http.client import HTTPSConnection, HTTPException


Expand Down Expand Up @@ -123,8 +123,7 @@ def __callRequest(self):
data = e.fp.read()
if 'DDOS-GUARD' in str(data):
opener = build_opener(HTTPCookieProcessor(cookieJar))
opener.addheaders = [('User-Agent', self.__USER_AGENT)]
opener.addheaders = [('Referer', self.__sUrl)]
opener.addheaders = [('User-agent', self.__USER_AGENT), ('Referer', self.__sUrl)]
response = opener.open('https://check.ddos-guard.net/check.js')
if sys.version_info[0] == 2:
content = response.read()
Expand All @@ -134,14 +133,11 @@ def __callRequest(self):
url3 = urlparse(self.__sUrl)
url3 = '%s://%s/%s' % (url3.scheme, url3.netloc, url2[0])
opener = build_opener(HTTPCookieProcessor(cookieJar))
opener.addheaders = [('User-Agent', self.__USER_AGENT)]
opener.addheaders = [('Referer', self.__sUrl)]
opener.addheaders = [('User-agent', self.__USER_AGENT), ('Referer', self.__sUrl)]
response = opener.open(url3)
content = response.read()
time.sleep(2)
opener = build_opener(HTTPCookieProcessor(cookieJar))
opener.addheaders = [('User-Agent', self.__USER_AGENT)]
opener.addheaders = [('Referer', self.__sUrl)]
opener.addheaders = [('User-agent', self.__USER_AGENT), ('Referer', self.__sUrl)]
oResponse = opener.open(self.__sUrl)

if not oResponse:
Expand Down Expand Up @@ -172,15 +168,19 @@ def __callRequest(self):
self.__sResponseHeader = oResponse.info()
if self.__sResponseHeader.get('Content-Encoding') == 'gzip':
sContent = gzip.GzipFile(fileobj=io.BytesIO(oResponse.read())).read()
if sys.version_info[0] == 2:
sContent = sContent
else:
if sys.version_info[0] == 3:
sContent = sContent.decode('utf-8').encode('utf-8', 'replace').decode('utf-8')
else:
if sys.version_info[0] == 2:
sContent = oResponse.read()
else:
sContent = oResponse.read().decode('utf-8').encode('utf-8', 'replace').decode('utf-8')
if 'lazingfast' in sContent:
bf = cBF().resolve(self.__sUrl, sContent, cookieJar, self.__USER_AGENT)
if bf:
sContent = bf
else:
logger.error('Failed BF Url: ' + self.__sUrl)
cookieJar.save(ignore_discard=self.__bIgnoreDiscard, ignore_expires=self.__bIgnoreExpired)
if self.__bRemoveNewLines:
sContent = sContent.replace('\n', '')
Expand Down Expand Up @@ -293,9 +293,7 @@ def clearCache(self):
files = os.listdir(self.__cachePath)
for file in files:
cacheFile = os.path.join(self.__cachePath, file)
fileAge = self.getFileAge(cacheFile)
if fileAge > self.cacheTime:
os.remove(cacheFile)
os.remove(cacheFile)


# python 2.7.9 and 2.7.10 certificate workaround
Expand All @@ -310,3 +308,50 @@ def __init__(self, host, port=None, key_file=None, cert_file=None, strict=None,
import ssl
context = ssl._create_unverified_context()
HTTPSConnection.__init__(self, host, port, key_file, cert_file, strict, timeout, source_address, context)


class cBF:
def resolve(self, url, html, cookie_jar, user_agent):
page = urlparse(url).scheme + '://' + urlparse(url).netloc
j = re.findall('<script[^>]src="([^"]+)', html)
if j:
opener = build_opener(HTTPCookieProcessor(cookie_jar))
opener.addheaders = [('User-agent', user_agent), ('Referer', url)]
opener.open(page + j[0])
a = re.findall('xhr\.open\("GET","([^,]+)",', html)
if a:
import random
aespage = page + a[0].replace('" + ww +"', str(random.randint(700, 1500)))
opener = build_opener(HTTPCookieProcessor(cookie_jar))
opener.addheaders = [('User-agent', user_agent), ('Referer', url)]
if sys.version_info[0] == 2:
html = opener.open(aespage).read()
else:
html = opener.open(aespage).read().decode('utf-8').encode('utf-8', 'replace').decode('utf-8')
cval = self.aes_decode(html)
cdata = re.findall('cookie="([^="]+).*?domain[^>]=([^;]+)', html)
if cval and cdata:
c = Cookie(version=0, name=cdata[0][0], value=cval, port=None, port_specified=False, domain=cdata[0][1], domain_specified=True, domain_initial_dot=False, path="/", path_specified=True, secure=False, expires=time.time() + 21600, discard=False, comment=None, comment_url=None, rest={})
cookie_jar.set_cookie(c)
opener = build_opener(HTTPCookieProcessor(cookie_jar))
opener.addheaders = [('User-agent', user_agent), ('Referer', url)]
if sys.version_info[0] == 2:
return opener.open(url).read()
else:
return opener.open(url).read().decode('utf-8').encode('utf-8', 'replace').decode('utf-8')

def aes_decode(self, html):
try:
import pyaes
keys = re.findall('toNumbers\("([^"]+)"', html)
if keys:
from binascii import hexlify, unhexlify
msg = unhexlify(keys[2])
key = unhexlify(keys[0])
iv = unhexlify(keys[1])
decrypter = pyaes.Decrypter(pyaes.AESModeOfOperationCBC(key, iv))
plain_text = decrypter.feed(msg)
plain_text += decrypter.feed()
return hexlify(plain_text).decode()
except Exception as e:
logger.error(e)
12 changes: 9 additions & 3 deletions sites/kinoger.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,30 +237,36 @@ def showHosters():
oRequest = cRequestHandler(sUrl)
oRequest.addHeaderEntry('Referer', URL_MAIN)
sHtmlContent = oRequest.request()
isMatch, aResult = cParser.parse(sHtmlContent, 'file":"[^>](\d+p)[^>]([^",]+)')
if sHtmlContent == '': continue
isMatch, aResult = cParser.parse(sHtmlContent, 'file":"[^>](\d+p)[^>]([^",\s]+)')
for sQualy, sUrl in aResult:
hoster = {'link': sUrl, 'name': sQualy + ' ProtonVideo'}
hosters.append(hoster)
if 'sst' in sUrl:

elif 'sst' in sUrl:
oRequest = cRequestHandler(sUrl)
oRequest.addHeaderEntry('Referer', sUrl)
sHtmlContent = oRequest.request()
if sHtmlContent == '': continue
isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, 'file:"(.*?)"')
isMatch, aResult = cParser().parse(sContainer[0], '(http[^",]+)')
for sUrl in aResult:
hoster = {'link': sUrl, 'name': Qualy(sUrl) + ' Fsst.Online'}
hosters.append(hoster)
if 'kinoger.re' in sUrl:

elif 'kinoger.re' in sUrl:
oRequest = cRequestHandler(sUrl.replace('/v/', '/api/source/'))
oRequest.addHeaderEntry('Referer', sUrl)
oRequest.addParameters('r', URL_MAIN)
oRequest.addParameters('d', 'kinoger.re')
sHtmlContent = oRequest.request()
if sHtmlContent == '': continue
pattern = 'file":"([^"]+)","label":"([^"]+)'
isMatch, aResult = cParser.parse(sHtmlContent, pattern)
for sUrl, sQualy in aResult:
hoster = {'link': sUrl, 'name': sQualy + ' Kinoger.re'}
hosters.append(hoster)

if hosters:
hosters.append('getHosterUrl')
return hosters
Expand Down
203 changes: 0 additions & 203 deletions sites/moviestream.py

This file was deleted.

Loading

0 comments on commit 1ebc198

Please sign in to comment.