def __getlinks(self, e, h, sLang, sName, token, url): url = url + '/stream' # hardcoded german language params = {'e': e, 'h': h, 'lang': 'de', 'q': '', 'grecaptcha': ''} sHtmlContent = self.scraper.post(url, headers={ 'X-CSRF-TOKEN': token[0], 'X-Requested-With': 'XMLHttpRequest' }, data=params).content pattern = 'ct[^>]":[^>]"([^"]+).*?iv[^>]":[^>]"([^"]+).*?s[^>]":[^>]"([^"]+).*?e"[^>]([^}]+)' aResult = re.compile(pattern, re.DOTALL).findall(sHtmlContent) token = base64.b64encode(token[0]) for ct, iv, s, e in aResult: ct = re.sub(r"\\", "", ct[::-1]) s = re.sub(r"\\", "", s) from resources.lib.modules import source_utils sUrl2 = source_utils.evp_decode(ct, token, s.decode('hex')) fUrl = sUrl2.replace('\/', '/').replace('"', '') return fUrl
def sources(self, url, hostDict, hostprDict): sources = [] try: if not url: return sources data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) url = urlparse.urljoin(self.base_link, data.get('url')) episode = data.get('episode') r = client.request(url) aj = self.__get_ajax_object(r) b = dom_parser.parse_dom(r, 'img', attrs={'class': 'dgvaup'}, req='data-img')[0].attrs['data-img'] if episode: r = dom_parser.parse_dom(r, 'a', attrs={'class': 'btn-stream-ep', 'data-episode': episode}, req=['data-episode', 'data-server']) else: r = dom_parser.parse_dom(r, 'div', attrs={'id': 'lang-de'}) r = dom_parser.parse_dom(r, 'div', attrs={'class': 'movie'}) r = dom_parser.parse_dom(r, 'a', attrs={'class': 'btn-stream'}, req=['data-episode', 'data-server']) r = [(i.attrs['data-episode'], i.attrs['data-server']) for i in r] for epi, server in r: try: x = {'action': aj.get('load_episodes'), 'episode': epi, 'pid': aj.get('postid'), 'server': server, 'nonce': aj.get('nonce'), 'b': b} x = client.request(aj.get('ajax_url'), post=x, XHR=True, referer=url) x = json.loads(x) q = source_utils.label_to_quality(x.get('q')) x = json.loads(base64.decodestring(x.get('u'))) u = source_utils.evp_decode(x.get('ct'), base64.decodestring(b), x.get('s').decode("hex")) u = u.replace('\/', '/').strip('"') valid, host = source_utils.is_host_valid(u, hostDict) if not valid: continue sources.append({'source': host, 'quality': q, 'language': 'de', 'url': u, 'direct': False, 'debridonly': False, 'checkquality': True}) except: pass return sources except: return sources