def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: tvshowtitle, year = re.compile('(.+?) [(](\d{4})[)]$').findall( url)[0] query = self.search_link % (urllib.quote_plus(tvshowtitle)) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) result = client.parseDOM(result, 'div', attrs={'id': 'post-.+?'}) tvshowtitle = cleantitle.tv(tvshowtitle) season = '%01d' % int(season) episode = '%01d' % int(episode) years = [ '%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1) ] result = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a', ret='title')[0], client.parseDOM(i, 'div', attrs={'class': 'status status-year'})) for i in result] result = [x for y, x in enumerate(result) if x not in result[:y]] result = [(i[0], i[1], i[2][0]) for i in result if len(i[2]) > 0] result = [(i[0], re.compile('(.+?) Season (\d*)$').findall(i[1]), i[2]) for i in result] result = [(i[0], i[1][0][0], i[1][0][1], i[2]) for i in result if len(i[1]) > 0] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i for i in result if season == i[2]] result = [(i[0], i[1], str(int(i[3]) - int(i[2]) + 1)) for i in result] result = [i[0] for i in result if any(x in i[2] for x in years)][0] url = urlparse.urljoin(self.base_link, result) result = cloudflare.source(url) result = client.parseDOM(result, 'div', attrs={'id': 'episode_show'})[0] result = re.compile('(<a.+?</a>)').findall(result) result = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a')[0]) for i in result] result = [i[0] for i in result if episode == i[1]][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources content = re.compile('(.+?)\?S\d*E\d*$').findall(url) try: url, season, episode = re.compile('(.+?)\?S(\d*)E(\d*)$').findall(url)[0] except: pass url = urlparse.urljoin(self.base_link, url) result = cloudflare.source(url, safe=True) if len(content) == 0: u = client.parseDOM(result, 'source', ret='src', attrs = {'type': 'video.+?'})[0] else: u = re.compile('playSeries\((\d+),(%01d),(%01d)\)' % (int(season), int(episode))).findall(result)[0] u = self.episode_link % (u[0], u[1], u[2]) u = urlparse.urljoin(self.base_link, u) u = cloudflare.source(u, safe=True, headers=self.headers) u = json.loads(u)['url'] url = '%s|User-Agent=%s&Referer=%s' % (u, urllib.quote_plus(client.agent()), urllib.quote_plus(url)) sources.append({'source': 'MovieTV', 'quality': 'HD', 'provider': 'MovieTV', 'url': url}) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources url = urlparse.urljoin(self.base_link, url) result = cloudflare.source(url) query = urlparse.urljoin(self.base_link, self.ajax_link) post = re.compile('var\s*view_id\s*=\s*"(\d*)"').findall(result)[0] post = self.player_link % post result = cloudflare.source(query, post=post, headers=self.headers) result = json.loads(result) result = result['data'] result = re.compile('"file"\s*:\s*"(.+?)".+?"label"\s*:\s*"(\d*p)"').findall(result) links = [{'url': i[0], 'quality': i[1]} for i in result if 'google' in i[0]] links += [{'url': '%s|User-Agent=%s&Referer=%s' % (i[0], urllib.quote_plus(client.agent()), urllib.quote_plus(url)), 'quality': i[1]} for i in result if not 'google' in i[0]] try: sources.append({'source': 'GVideo', 'quality': '1080p', 'provider': 'Dizigold', 'url': [i['url'] for i in links if i['quality'] == '1080p'][0]}) except: pass try: sources.append({'source': 'GVideo', 'quality': 'HD', 'provider': 'Dizigold', 'url': [i['url'] for i in links if i['quality'] == '720p'][0]}) except: pass try: sources.append({'source': 'GVideo', 'quality': 'SD', 'provider': 'Dizigold', 'url': [i['url'] for i in links if i['quality'] == '480p'][0]}) except: sources.append({'source': 'GVideo', 'quality': 'SD', 'provider': 'Dizigold', 'url': [i['url'] for i in links if i['quality'] == '360p'][0]}) return sources except: return sources
def get_movie(self, imdb, title, year): try: query = urlparse.urljoin(self.base_link, self.moviesearch_link + urllib.quote_plus(title)) result = cloudflare.source(query) if result == None: result = cloudflare.source(self.proxy_link + urllib.quote_plus(query)) r = client.parseDOM(result, "li", attrs={"class": "first element.+?"}) r += client.parseDOM(result, "li", attrs={"class": "element.+?"}) r += client.parseDOM(result, "header", attrs={"class": "entry-header"}) title = cleantitle.movie(title) years = ["(%s)" % str(year), "(%s)" % str(int(year) + 1), "(%s)" % str(int(year) - 1)] result = [(client.parseDOM(i, "a", ret="href"), client.parseDOM(i, "a")) for i in r] result = [(i[0][0], i[1][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], re.compile("(.+? [(]\d{4}[)])").findall(i[1])) for i in result] result = [(i[0], i[1][0]) for i in result if len(i[1]) > 0] result = [i for i in result if title == cleantitle.movie(i[1])] result = [i[0] for i in result if any(x in i[1] for x in years)][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)["u"][0] except: pass url = urlparse.urlparse(url).path url = url.encode("utf-8") return url except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources url = self.base_link + url result = cloudflare.source(url) result = re.compile('src="/player_data(.+?)"></script>').findall(result)[0] url = self.base_link + '/player_data' + result result = cloudflare.source(url) result = re.compile('[[]"(.+?)"[]]').findall(result)[0] url = self.Hexadecoder(str(result)).replace('download','xmas-stream') audio_filme = '' try: quality = url.strip().upper() if '1080P' in quality: quality = '1080p' elif 'BRRIP' in quality or 'BDRIP' in quality or 'HDRIP' in quality or '720P' in quality: quality = 'HD' elif 'SCREENER' in quality: quality = 'SCR' elif 'CAM' in quality or 'TS' in quality: quality = 'CAM' else: quality = 'SD' if 'PT-PT' in quality or 'PORTUGU' in quality: audio_filme = ' | PT-PT' else: audio_filme = '' except: quality = 'SD' sources.append({'source': 'TugaIO'+audio_filme, 'quality': quality, 'provider': 'TugaIO', 'url': url}) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources url = urlparse.urljoin(self.base_link, url) result = cloudflare.source(url) links = re.compile('<a href="(.+?)?alternatif=(.+?)">').findall( result) url = links[-1][0] + 'alternatif=' + links[-1][1] result = cloudflare.source(url) iframe_link = re.compile('<iframe.+src="(.+).mp4"').findall( result)[0] try: sources.append({ 'source': 'openload', 'quality': 'HD', 'provider': 'Dizilab', 'url': iframe_link + '.mp4' }) except: pass return sources except: return sources
def get_show(self, imdb, tvdb, tvshowtitle, year): try: query = urlparse.urljoin(self.base_link, self.ajax_link) post = self.search_link % (urllib.quote_plus(tvshowtitle)) result = cloudflare.source(query, post=post, headers=self.headers) result = json.loads(result) tvshowtitle = cleantitle.tv(tvshowtitle) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'h3'), re.compile('<h5>.+?(\d{4}).+?</h5>').findall(i)) for i in result] result = [(i[0][0], i[1][0], i[2][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i[0] for i in result if any(x in i[2] for x in years)][0] url = urlparse.urljoin(self.base_link, result) result = cloudflare.source(url) url = client.parseDOM(result, 'div', ret='value', attrs = {'id': 'icerikid'})[0] url = url.encode('utf-8') return url except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): sources = [] if url == None: return sources orgUrl = url url = urlparse.urljoin(self.base_link, url) url = url.replace('·', '\xb7') result = cloudflare.source(url) if '?' not in url: url = client.parseDOM(result, 'a', attrs={'href':orgUrl+'/Movie.+?'}, ret='href')[0] url = urlparse.urljoin(self.base_link, url) result = cloudflare.source(url) items = client.parseDOM(result, 'select', attrs={'id':'selectQuality'}) items = re.compile('"(.+?)".+?(\d+?)p').findall(items[0]) for item in items: try: u = base64.b64decode(item[0]) u = u.encode('utf-8') if item[1] not in ['720', '1080']: quality = 'SD' else: quality = 'HD' sources.append({'source': 'GVideo', 'quality': quality, 'provider': 'KissCartoon', 'url': u}) except: pass return sources
def get_movie(self, imdb, title, year): try: query = urlparse.urljoin(self.base_link, self.moviesearch_link + urllib.quote_plus(title)) result = cloudflare.source(query) if result == None: result = cloudflare.source(self.proxy_link + urllib.quote_plus(query)) r = client.parseDOM(result, 'li', attrs = {'class': 'first element.+?'}) r += client.parseDOM(result, 'li', attrs = {'class': 'element.+?'}) r += client.parseDOM(result, 'header', attrs = {'class': 'entry-header'}) title = cleantitle.movie(title) years = ['(%s)' % str(year), '(%s)' % str(int(year)+1), '(%s)' % str(int(year)-1)] result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in r] result = [(i[0][0], i[1][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], re.compile('(.+? [(]\d{4}[)])').findall(i[1])) for i in result] result = [(i[0], i[1][0]) for i in result if len(i[1]) > 0] result = [i for i in result if title == cleantitle.movie(i[1])] result = [i[0] for i in result if any(x in i[1] for x in years)][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['u'][0] except: pass url = urlparse.urlparse(url).path url = url.encode('utf-8') return url except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: if url == None: return season = '%01d' % int(season) episode = '%01d' % int(episode) query = '%s "Season %s" "Episode %s"' % (url, season, episode) query = urlparse.urljoin(self.base_link, self.tvsearch_link + urllib.quote_plus(query)) result = cloudflare.source(query) if result == None: result = cloudflare.source(self.proxy_link + urllib.quote_plus(query)) r = client.parseDOM(result, 'li', attrs = {'class': 'first element.+?'}) r += client.parseDOM(result, 'li', attrs = {'class': 'element.+?'}) r += client.parseDOM(result, 'header', attrs = {'class': 'entry-header'}) tvshowtitle = cleantitle.tv(url) result = [(client.parseDOM(i, 'a', ret='href'), re.compile('(.+?): Season (\d*).+?Episode (\d*)').findall(i)) for i in r] result = [(i[0][0], i[1][-1]) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], i[1][0].split('>')[-1], i[1][1], i[1][2]) for i in result] result = [i for i in result if season == '%01d' % int(i[2]) and episode == '%01d' % int(i[3])] result = [i[0] for i in result if tvshowtitle == cleantitle.tv(i[1])][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['u'][0] except: pass url = urlparse.urlparse(url).path url = url.encode('utf-8') return url except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources content = re.compile('(.+?)\?S\d*E\d*$').findall(url) try: url, season, episode = re.compile( '(.+?)\?S(\d*)E(\d*)$').findall(url)[0] except: pass self.base_link = random.choice( [self.base_link_1, self.base_link_2]) post_id = re.compile('/.+?/(.+)').findall(url)[0].rsplit('/')[0] player = urlparse.urljoin(self.base_link, self.player_link) if len(content) == 0: post = self.player_post_1 % post_id else: post = cloudflare.source(player, post=self.player_post_2 % post_id, headers=self.headers) post = client.parseDOM(post, 'ul', attrs={'class': 'movie-parts'})[0] post = client.parseDOM(post, 'li') post = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in post] post = [(i[0][0], i[1][0]) for i in post if len(i[0]) > 0 and len(i[1]) > 0] post = [i[0] for i in post if '%01d' % int(episode) == i[1]][0] post = urlparse.parse_qs( urlparse.urlparse(post).query)['part_id'][0] post = self.player_post_3 % (post_id, post) url = cloudflare.source(player, post=post, headers=self.headers) url = re.compile('<source\s+src="([^"]+)').findall(url)[0] url = client.replaceHTMLCodes(url) if 'google' in url: quality = googleplus.tag(url)[0]['quality'] else: quality = 'HD' sources.append({ 'source': 'GVideo', 'quality': quality, 'provider': 'Xmovies', 'url': url }) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources content = re.compile('(.+?)\?S\d*E\d*$').findall(url) try: url, season, episode = re.compile( '(.+?)\?S(\d*)E(\d*)$').findall(url)[0] except: pass url = urlparse.urljoin(self.base_link, url) result = cloudflare.source( url, safe=True, timeout='10', headers={'Referer': 'http://movietv.to/'}) if len(content) == 0: u = client.parseDOM(result, 'source', ret='src', attrs={'type': 'video.+?'})[0] else: u = re.compile('playSeries\((\d+),(%01d),(%01d)\)' % (int(season), int(episode))).findall(result)[0] u = '/series/getLink?id=%s&s=%s&e=%s' % (u[0], u[1], u[2]) u = urlparse.urljoin(self.base_link, u) u = cloudflare.source(u, safe=True, timeout='10', headers={ 'X-Requested-With': 'XMLHttpRequest', 'Referer': url }) u = json.loads(u)['url'] url = '%s|User-Agent=%s&Referer=%s' % ( u, urllib.quote_plus(client.agent()), urllib.quote_plus(url)) sources.append({ 'source': 'MovieTV', 'quality': 'HD', 'provider': 'MovieTV', 'url': url }) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources url = urlparse.urljoin(self.base_link, url) result = cloudflare.source(url) links = re.compile('file\s*:\s*"(.+?)"').findall(result) links = [i for i in links if 'google' in i] for link in links: try: i = googleplus.tag(link)[0] sources.append({ 'source': 'GVideo', 'quality': i['quality'], 'provider': 'Dizilab', 'url': i['url'] }) except: pass return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources result = cloudflare.source(url) iframeUrl = client.parseDOM(result, 'iframe', ret='src')[0] headers = {'Referer': url} result = client.source(iframeUrl, headers=headers) for match in re.compile( '"file"\s*:\s*"([^"]+)"\s*,\s*"label"\s*:\s*"([^"]+)' ).findall(result): if match[1] == '720p': quality = 'HD' else: quality = 'SD' sources.append({ 'source': 'gvideo', 'quality': quality, 'provider': 'USMoviesHD', 'url': match[0].replace(' ', '') }) return sources except: return sources
def get_movie(self, imdb, title, year): try: query = self.search_link % urllib.quote(title) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) title = cleantitle.movie(title) years = ["%s" % str(year), "%s" % str(int(year) + 1), "%s" % str(int(year) - 1)] result = client.parseDOM(result, "div", attrs={"class": "ml-item"}) result = [ ( client.parseDOM(i, "a", ret="href"), client.parseDOM(i, "h2"), re.compile("class *= *['|\"]jt-info['|\"]>(\d{4})<").findall(i), ) for i in result ] result = [(i[0][0], i[1][0], i[2][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] result = [i for i in result if any(x in i[2] for x in years)] result = [(i[0], re.sub("\d{4}$", "", i[1]).strip()) for i in result] result = [i[0] for i in result if title == cleantitle.movie(i[1])][0] try: url = re.compile("//.+?(/.+)").findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode("utf-8") return url except: return
def get_movie(self, imdb, title, year): try: #title,genero_imdb = self.get_portuguese_name(imdb, title, year) query = self.base_link + self.search_link + str( title.replace(' ', '+')) result = self.abrir_url(query) result = client.parseDOM(result, 'div', attrs={'class': 'short-film'}) a = str(len(result)) for div in result: try: result_url = re.compile('href="(.+?)"').findall(div)[0] except: pass O_title = cloudflare.source(result_url) try: O_title = re.compile( 'tulooriginal.+?/span><pclass="text"><strong>(.+?)</strong></p>' ).findall(O_title.replace('\n', '').replace(' ', ''))[0] except: O_title = 'O_title' if O_title == title.replace(' ', ''): url = result_url break return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: result = cache.get(self.moviefarsi_shows, 168, table='chronic') if result == None: return tvshowtitle = cleantitle.tv(tvshowtitle) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = [i[0] for i in result if tvshowtitle == cleantitle.tv(i[1])][0] url = urlparse.urljoin(self.base_link, result) result = client.source(url, cookie=self.cookie_link) if result == None: result = cloudflare.source(url) result = client.parseDOM(result, 'article', attrs = {'id': 'post-\d*'})[0] y = client.parseDOM(result, 'strong')[0] y = re.compile('(\d{4})').findall(y)[0] if not y in years: return result = client.parseDOM(result, 'a', ret='href')[0] url = re.compile('//.+?/(\d*)').findall(result)[0] url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link % urllib.quote_plus(title) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) result = result.decode("iso-8859-1").encode("utf-8") result = client.parseDOM(result, "div", attrs={"class": "movie_table"}) title = cleantitle.movie(title) years = ["(%s)" % str(year), "(%s)" % str(int(year) + 1), "(%s)" % str(int(year) - 1)] result = [(client.parseDOM(i, "a", ret="href")[0], client.parseDOM(i, "a", ret="title")[1]) for i in result] result = [i for i in result if title == cleantitle.movie(i[1])] result = [i[0] for i in result if any(x in i[1] for x in years)][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)["u"][0] except: pass url = urlparse.urlparse(url).path url = url.encode("utf-8") return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link % (urllib.quote_plus(title)) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) result = client.parseDOM(result, 'div', attrs = {'id': 'post-.+?'}) title = cleantitle.movie(title) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a', ret='title')[0], client.parseDOM(i, 'div', attrs = {'class': 'status status-year'}), client.parseDOM(i, 'div', attrs = {'class': 'mark-8'})) for i in result] result = [(i[0], i[1], i[2][0], i[3]) for i in result if len(i[2]) > 0] result = [(i[0], i[1], i[2], i[3], re.compile('Season (\d*)$').findall(i[1])) for i in result] result = [(i[0], i[1], i[2], i[3]) for i in result if len(i[4]) == 0] result = [(i[0], i[1], i[2]) for i in result if len(i[3]) == 0] result = [i for i in result if title == cleantitle.movie(i[1])] result = [i[0] for i in result if any(x in i[2] for x in years)][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link % (urllib.quote_plus(title)) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) #result = client.source(query).decode('utf-8').encode('utf-8') result = result.decode('utf-8').encode('utf-8') result = client.parseDOM(result, 'li') title = cleantitle.movie(title) result = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a')[0]) for i in result] result = [(i[0], re.sub('<.+?>|</.+?>', '', i[1])) for i in result] result = [i for i in result if title == cleantitle.movie(i[1])] result = result[-1][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources content = re.compile('(s\d+e\d+)').findall(url) if len(content) == 0: url = urlparse.urljoin(self.base_link, url) else: url = urlparse.urljoin(self.tvbase_link, url) result = cloudflare.source(url) #if result == None: result = client.source(self.__proxy() + urllib.quote_plus(url)) result = client.parseDOM(result, 'iframe', ret='src') url = [i for i in result if 'openload.' in i][0] url = client.replaceHTMLCodes(url) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['u'][0] except: pass try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['q'][0] except: pass if openload.check(url) == False: raise Exception() sources.append({'source': 'Openload', 'quality': 'HD', 'provider': 'YIFYstreamv2', 'url': url}) return sources except: return sources
def get_movie(self, imdb, title, year): try: #title,genero_imdb = self.get_portuguese_name(imdb, title, year) query = self.base_link + self.search_link + str( title.replace(' ', '+')) #result = self.abrir_url(query) result = cloudflare.source(query) result = re.compile( '<div class="browse-movie-wrap.+?"> <a href="(.+?)" class="browse-movie-link"> <figure>' ).findall(result) a = str(len(result)) for result_url in result: try: result_imdb = re.compile('=(.*)').findall(result_url)[0] except: result_imdb = 'result_imdb' if imdb == 'tt' + result_imdb: url = self.base_link + '/Filme?F=' + result_imdb break return url except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: if url == None: return query = '%s S%02dE%02d' % (url, int(season), int(episode)) query = urlparse.urljoin(self.tvbase_link, self.search_link + urllib.quote_plus(query)) result = cloudflare.source(query) #if result == None: result = client.source(self.__proxy() + urllib.quote_plus(query)) r = client.parseDOM(result, 'li', attrs = {'class': 'first element.+?'}) r += client.parseDOM(result, 'li', attrs = {'class': 'element.+?'}) r += client.parseDOM(result, 'header', attrs = {'class': 'entry-heade.+?'}) tvshowtitle = cleantitle.tv(url) hdlr = 'S%02dE%02d' % (int(season), int(episode)) result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in r] result = [(i[0][0], i[1][0].upper()) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], re.compile('(.+?) (S\d+E\d+)').findall(i[1])) for i in result] result = [(i[0], i[1][0][0], i[1][0][-1]) for i in result if len(i[1]) > 0] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i[0] for i in result if hdlr == i[2]][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['u'][0] except: pass try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['q'][0] except: pass url = urlparse.urlparse(url).path url = url.encode('utf-8') return url except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: tvshowtitle, year = re.compile('(.+?) [(](\d{4})[)]$').findall(url)[0] query = self.search_link % urllib.quote(tvshowtitle) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) tvshowtitle = cleantitle.tv(tvshowtitle) season = '%01d' % int(season) episode = '%01d' % int(episode) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = client.parseDOM(result, 'div', attrs = {'class': 'ml-item'}) result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'h2'), re.compile('class *= *[\'|\"]jt-info[\'|\"]>(\d{4})<').findall(i)) for i in result] result = [(i[0][0], i[1][0], i[2][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] result = [(i[0], re.compile('(.+?) - Season (\d*)$').findall(i[1]), i[2]) for i in result] result = [(i[0], i[1][0][0], i[1][0][1], i[2]) for i in result if len(i[1]) > 0] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i for i in result if season == i[2]] result = [(i[0], i[1], str(int(i[3]) - int(i[2]) + 1)) for i in result] result = [i[0] for i in result if any(x in i[2] for x in years)][0] result += '?S%02dE%02d' % (int(season), int(episode)) try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: query = urlparse.urljoin(self.base_link, self.moviesearch_link + urllib.quote_plus(title)) result = cloudflare.source(query) if result == None: result = client.source(self.proxy_link + urllib.quote_plus(query)) r = client.parseDOM(result, 'li', attrs = {'class': 'first element.+?'}) r += client.parseDOM(result, 'li', attrs = {'class': 'element.+?'}) r += client.parseDOM(result, 'header', attrs = {'class': 'entry-header'}) title = cleantitle.movie(title) years = ['(%s)' % str(year), '(%s)' % str(int(year)+1), '(%s)' % str(int(year)-1)] result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in r] result = [(i[0][0], i[1][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], re.compile('(.+? [(]\d{4}[)])').findall(i[1])) for i in result] result = [(i[0], i[1][0]) for i in result if len(i[1]) > 0] result = [i for i in result if title == cleantitle.movie(i[1])] result = [i[0] for i in result if any(x in i[1] for x in years)][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['q'][0] except: pass url = urlparse.urlparse(url).path url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link % urllib.quote(title) query = urlparse.urljoin(self.base_link, query) control.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %s" % query) result = cloudflare.source(query) title = cleantitle.movie(title) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] r = client.parseDOM(result, 'div', attrs = {'class': 'ml-item'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title')) for i in r] r = [(i[0][0], i[1][-1]) for i in r if len(i[0]) > 0 and len(i[1]) > 0] r = [(re.sub('http.+?//.+?/','', i[0]), i[1]) for i in r] r = [('/'.join(i[0].split('/')[:2]), i[1]) for i in r] r = [x for y,x in enumerate(r) if x not in r[:y]] r = [i for i in r if title == cleantitle.movie(i[1])] u = [i[0] for i in r][0] url = urlparse.urljoin(self.base_link, u) url = urlparse.urlparse(url).path url = client.replaceHTMLCodes(url) url = url.encode('utf-8') control.log("@@@@@@@@@@@@@@@ URL %s" % url) return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link % (urllib.quote_plus(title)) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) result = client.parseDOM(result, "ul", attrs={"class": "listing-videos.+?"})[0] result = client.parseDOM(result, "li", attrs={"class": ".+?"}) title = cleantitle.movie(title) years = ["(%s)" % str(year), "(%s)" % str(int(year) + 1), "(%s)" % str(int(year) - 1)] result = [(client.parseDOM(i, "a", ret="href")[0], client.parseDOM(i, "a", ret="title")[0]) for i in result] result = [i for i in result if title == cleantitle.movie(i[1])] result = [i[0] for i in result if any(x in i[1] for x in years)][0] try: url = re.compile("//.+?(/.+)").findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode("utf-8") return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: query = self.search_link % (urllib.quote_plus(tvshowtitle)) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) result = client.parseDOM(result, 'div', attrs = {'class': 'tv-series-single'}) tvshowtitle = cleantitle.tv(tvshowtitle) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', {'class': 'title'}), re.compile('<span>\s*(\d{4})\s*</span>').findall(i)) for i in result] result = [(i[0][0], i[1][0], i[2][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] result = [(i[0], re.compile('([^>]+)$').findall(i[1]), i[2]) for i in result] result = [(i[0], i[1][0], i[2]) for i in result if len(i[1]) > 0] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i[0] for i in result if any(x in i[2] for x in years)][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link % (urllib.quote_plus(title)) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) title = cleantitle.movie(title) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = client.parseDOM(result, 'li', attrs = {'class': 'border.+?'}) result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in result] result = [(i[0][0], i[1][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], client.parseDOM(i[1], 'span')) for i in result] result = [(i[0], i[1][0]) for i in result if len(i[1]) > 0] result = [(i[0], re.compile('(.+)[\.|\(|\[|\s](\d{4})[\.|\)|\]|\s|]').findall(i[1])) for i in result] result = [(i[0], i[1][0][0].strip(), i[1][0][1]) for i in result if len(i[1]) > 0] result = [i for i in result if any(x in i[2] for x in years)] result = [i[0] for i in result if title == cleantitle.movie(i[1])][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link % (urllib.quote_plus(title)) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) result = client.parseDOM(result, 'ul', attrs={'class': 'listing-videos.+?'})[0] result = client.parseDOM(result, 'li', attrs={'class': '.+?'}) title = cleantitle.movie(title) years = [ '(%s)' % str(year), '(%s)' % str(int(year) + 1), '(%s)' % str(int(year) - 1) ] result = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a', ret='title')[0]) for i in result] result = [i for i in result if title == cleantitle.movie(i[1])] result = [i[0] for i in result if any(x in i[1] for x in years)][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link % urllib.quote_plus(title) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) result = result.decode('iso-8859-1').encode('utf-8') result = client.parseDOM(result, 'div', attrs={'class': 'movie_table'}) title = cleantitle.movie(title) years = [ '(%s)' % str(year), '(%s)' % str(int(year) + 1), '(%s)' % str(int(year) - 1) ] result = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a', ret='title')[1]) for i in result] result = [i for i in result if title == cleantitle.movie(i[1])] result = [i[0] for i in result if any(x in i[1] for x in years)][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['u'][0] except: pass url = urlparse.urlparse(url).path url = url.encode('utf-8') return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: query = self.search_link % urllib.quote_plus(tvshowtitle) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query, safe=True) result = client.parseDOM(result, 'div', {'class': 'movie-grid grid-.+?'}) tvshowtitle = cleantitle.tv(tvshowtitle) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'div', {'class': 'movie-grid-title'})) for i in result] result = [(i[0][0], i[1][0], i[1][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], i[1].split('<')[0].strip(), client.parseDOM(i[2], 'span', {'class': '[^"]*year'})) for i in result] result = [(i[0], i[1], i[2][0]) for i in result if len(i[2]) > 0] result = [i for i in result if '/series/' in i[0]] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i[0] for i in result if any(x in i[2] for x in years)][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: query = self.search_link query = urlparse.urljoin(self.base_link, query) if title == 'WALLAE': title = 'WALL·E' post = urllib.urlencode({'keyword': title}) result = cloudflare.source(query, post=post) result = client.parseDOM(result, 'table', attrs={'class': 'listing'}) result = client.parseDOM(result, 'a', ret='href') title = cleantitle.movie(title) try: url = [i for i in result if title in cleantitle.movie(i)][0] except: pass url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: if url == None: return query = urlparse.urljoin(self.base_link, self.ajax_link) post = self.episode_link % ('%01d' % int(season), url) result = cloudflare.source(query, post=post, headers=self.headers) result = json.loads(result) result = result['data'] result = re.compile('href="(.+?)"').findall(result) result = [ i for i in result if '/%01d-sezon/%01d-bolum' % (int(season), int(episode)) in i ][-1] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: if url == None: return season = '%01d' % int(season) episode = '%01d' % int(episode) query = '%s "Season %s" "Episode %s"' % (url, season, episode) query = urlparse.urljoin(self.base_link, self.tvsearch_link + urllib.quote_plus(query)) result = cloudflare.source(query) if result == None: result = client.source(self.proxy_link + urllib.quote_plus(query)) r = client.parseDOM(result, 'li', attrs = {'class': 'first element.+?'}) r += client.parseDOM(result, 'li', attrs = {'class': 'element.+?'}) r += client.parseDOM(result, 'header', attrs = {'class': 'entry-header'}) tvshowtitle = cleantitle.tv(url) result = [(client.parseDOM(i, 'a', ret='href'), re.compile('(.+?): Season (\d*).+?Episode (\d*)').findall(i)) for i in r] result = [(i[0][0], i[1][-1]) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], i[1][0].split('>')[-1], i[1][1], i[1][2]) for i in result] result = [i for i in result if season == '%01d' % int(i[2]) and episode == '%01d' % int(i[3])] result = [i[0] for i in result if tvshowtitle == cleantitle.tv(i[1])][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['q'][0] except: pass url = urlparse.urlparse(url).path url = url.encode('utf-8') return url except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources content = re.compile('(.+?)\?S\d*E\d*$').findall(url) try: url, season, episode = re.compile( '(.+?)\?S(\d*)E(\d*)$').findall(url)[0] except: pass url = urlparse.urljoin(self.base_link, url) url = urlparse.urljoin(url, 'watching.html') result = cloudflare.source(url) try: quality = client.parseDOM(result, 'span', attrs={'class': 'quality'})[0] except: quality = 'HD' if '1080p' in quality: quality = '1080p' else: quality = 'HD' url = re.compile('var\s+url_playlist *= *"(.+?)"').findall( result)[0] if len(content) == 0: url = '%s/0/0' % url else: episode = '%01d' % int(episode) result = client.parseDOM(result, 'div', attrs={'class': 'les-content'}) result = zip(client.parseDOM(result, 'a', ret='onclick'), client.parseDOM(result, 'a')) result = [(i[0], re.compile('(\d+)').findall(i[1])) for i in result] result = [(i[0], '%01d' % int(i[1][0])) for i in result if len(i[1]) > 0] result = [i[0] for i in result if episode == i[1]][0] result = re.compile('(\d+)').findall(result) url = '%s/%s/%s' % (url, result[0], result[1]) sources.append({ 'source': 'Muchmovies', 'quality': quality, 'provider': 'Muchmoviesv2', 'url': url }) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources content = re.compile("(.+?)\?S\d*E\d*$").findall(url) try: url, season, episode = re.compile("(.+?)\?S(\d*)E(\d*)$").findall(url)[0] except: pass self.base_link = random.choice([self.base_link_1, self.base_link_2]) post_id = re.compile("/.+?/(.+)").findall(url)[0].rsplit("/")[0] player = urlparse.urljoin(self.base_link, self.player_link) if len(content) == 0: post = self.player_post_1 % post_id else: post = cloudflare.source(player, post=self.player_post_2 % post_id, headers=self.headers) post = client.parseDOM(post, "ul", attrs={"class": "movie-parts"})[0] post = client.parseDOM(post, "li") post = [(client.parseDOM(i, "a", ret="href"), client.parseDOM(i, "a")) for i in post] post = [(i[0][0], i[1][0]) for i in post if len(i[0]) > 0 and len(i[1]) > 0] post = [i[0] for i in post if "%01d" % int(episode) == i[1]][0] post = urlparse.parse_qs(urlparse.urlparse(post).query)["part_id"][0] post = self.player_post_3 % (post_id, post) url = cloudflare.source(player, post=post, headers=self.headers) url = re.compile('<source\s+src="([^"]+)').findall(url)[0] url = client.replaceHTMLCodes(url) if "google" in url: quality = googleplus.tag(url)[0]["quality"] else: quality = "HD" sources.append({"source": "GVideo", "quality": quality, "provider": "Xmovies", "url": url}) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources content = re.compile("(.+?)\?S\d*E\d*$").findall(url) try: url, season, episode = re.compile("(.+?)\?S(\d*)E(\d*)$").findall(url)[0] except: pass url = urlparse.urljoin(self.base_link, url) url = urlparse.urljoin(url, "watching.html") referer = url result = cloudflare.source(url) try: quality = client.parseDOM(result, "span", attrs={"class": "quality"})[0] except: quality = "HD" if "1080p" in quality: quality = "1080p" else: quality = "HD" url = re.compile('var\s+url_playlist *= *"(.+?)"').findall(result)[0] result = client.parseDOM(result, "div", attrs={"class": "les-content"}) result = zip(client.parseDOM(result, "a", ret="onclick"), client.parseDOM(result, "a")) result = [(i[0], re.compile("(\d+)").findall(i[1])) for i in result] result = [(i[0], "%01d" % int(i[1][0])) for i in result if len(i[1]) > 0] result = [(i[0], i[1]) for i in result] result = [(re.compile("(\d+)").findall(i[0]), i[1]) for i in result] result = [("%s/%s/%s" % (url, i[0][0], i[0][1]), i[1]) for i in result] if len(content) == 0: url = [i[0] for i in result] else: episode = "%01d" % int(episode) url = [i[0] for i in result if episode == i[1]] url = [ "%s|User-Agent=%s&Referer=%s" % (i, urllib.quote_plus(client.agent()), urllib.quote_plus(referer)) for i in url ] for u in url: sources.append({"source": "Muchmovies", "quality": quality, "provider": "Muchmoviesv2", "url": u}) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources url = self.base_link + url result = cloudflare.source(url) result = re.compile('src="/player_data(.+?)"></script>').findall( result)[0] url = self.base_link + '/player_data' + result result = cloudflare.source(url) result = re.compile('[[]"(.+?)"[]]').findall(result)[0] url = self.Hexadecoder(str(result)).replace( 'download', 'xmas-stream') audio_filme = '' try: quality = url.strip().upper() if '1080P' in quality: quality = '1080p' elif 'BRRIP' in quality or 'BDRIP' in quality or 'HDRIP' in quality or '720P' in quality: quality = 'HD' elif 'SCREENER' in quality: quality = 'SCR' elif 'CAM' in quality or 'TS' in quality: quality = 'CAM' else: quality = 'SD' if 'PT-PT' in quality or 'PORTUGU' in quality: audio_filme = ' | PT-PT' else: audio_filme = '' except: quality = 'SD' sources.append({ 'source': 'TugaIO' + audio_filme, 'quality': quality, 'provider': 'TugaIO', 'url': url }) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources query = url.replace('\'', '') query = query.replace('Marvels ', '').replace('E.L.D.', 'E.L.D') query = re.sub('\s+',' ',query) query = self.base_link + self.search_link % urllib.quote_plus('"'+query+'"') result = cloudflare.source(query) amount = client.parseDOM(result, 'h1', attrs = {'class': 'border-radius-5'}) if '1 video' not in amount[0]: query = query.replace('Watch+Online', 'Full') result = cloudflare.source(query) amount = client.parseDOM(result, 'h1', attrs = {'class': 'border-radius-5'}) if '1 video' in amount[0]: item = client.parseDOM(result, 'li', attrs = {'class': 'border-radius-5 box-shadow'}) url = client.parseDOM(item, 'a', ret='href')[0] try: result = cloudflare.source(url) iframeUrl = client.parseDOM(result, 'iframe', ret='src')[0] headers = {'Referer': url} result = client.source(iframeUrl, headers=headers) for match in re.compile('"file"\s*:\s*"([^"]+)"\s*,\s*"label"\s*:\s*"([^"]+)').findall(result): if match[1] == '720p': quality = 'HD' else: quality = 'SD' sources.append({'source': 'gvideo', 'quality': quality, 'provider': 'SeriesTV', 'url': match[0].replace(' ','')}) except: pass return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources content = re.compile('(.+?)\?S\d*E\d*$').findall(url) try: url, season, episode = re.compile('(.+?)\?S(\d*)E(\d*)$').findall(url)[0] except: pass self.base_link = random.choice([self.base_link_1, self.base_link_2]) post_id = re.compile('/.+?/(.+)').findall(url)[0].rsplit('/')[0] player = urlparse.urljoin(self.base_link, self.player_link) if len(content) == 0: post = self.player_post_1 % post_id else: post = cloudflare.source(player, post=self.player_post_2 % post_id, headers=self.headers) post = client.parseDOM(post, 'ul', attrs = {'class': 'movie-parts'})[0] post = client.parseDOM(post, 'li') post = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in post] post = [(i[0][0], i[1][0]) for i in post if len(i[0]) > 0 and len(i[1]) > 0] post = [i[0] for i in post if '%01d' % int(episode) == i[1]][0] post = urlparse.parse_qs(urlparse.urlparse(post).query)['part_id'][0] post = self.player_post_3 % (post_id, post) url = cloudflare.source(player, post=post, headers=self.headers) url = re.compile('<source\s+src="([^"]+)').findall(url)[0] url = client.replaceHTMLCodes(url) if 'google' in url: quality = googleplus.tag(url)[0]['quality'] else: quality = 'HD' sources.append({'source': 'GVideo', 'quality': quality, 'provider': 'Xmovies', 'url': url}) return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): sources = [] if url == None: return sources orgUrl = url url = urlparse.urljoin(self.base_link, url) url = url.replace('·', '\xb7') result = cloudflare.source(url) if '?' not in url: url = client.parseDOM(result, 'a', attrs={'href': orgUrl + '/Movie.+?'}, ret='href')[0] url = urlparse.urljoin(self.base_link, url) result = cloudflare.source(url) items = client.parseDOM(result, 'select', attrs={'id': 'selectQuality'}) items = re.compile('"(.+?)".+?(\d+?)p').findall(items[0]) for item in items: try: u = base64.b64decode(item[0]) u = u.encode('utf-8') if item[1] not in ['720', '1080']: quality = 'SD' else: quality = 'HD' sources.append({ 'source': 'GVideo', 'quality': quality, 'provider': 'KissCartoon', 'url': u }) except: pass return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): ## sources = [] ## sources.append({'source': 'Redcouch', 'quality': 'HD', 'provider': 'Redcouch'+url, 'url': url}) try: sources = [] if url == None: return sources result = cloudflare.source(url) audio_filme = '' try: titulo = client.parseDOM(result, 'h1', attrs = {'class': 'title'})[0] if 'PT-PT' in titulo or 'PORTUGU' in titulo: audio_filme = ' | PT-PT' else: audio_filme = '' except: audio_filme = '' try: quality = url.strip().upper() if '1080P' in quality: quality = '1080p' elif 'BRRIP' in quality or 'BDRIP' in quality or 'HDRIP' in quality or '720P' in quality: quality = 'HD' elif 'SCREENER' in quality: quality = 'SCR' elif 'CAM' in quality or 'TS' in quality: quality = 'CAM' else: quality = 'SD' except: quality = 'SD' try: url = re.compile('hashkey=([\w]+)').findall(result) url += re.compile('ref=[\'|\"](.+?)[\'|\"]').findall(result) url = 'http://videomega.tv/cdn.php?ref=%s' % url[0] url = resolvers.request(url) if url == None: raise Exception() sources.append({'source': 'Videomega'+audio_filme, 'quality': quality, 'provider': 'Redcouch', 'url': url}) except: pass url = client.parseDOM(result, 'iframe', ret='src') for urls in url: if 'openload' in urls: try: try: ul = re.compile('(.+?)/embed/(.+?)/').findall(urls) urlO = ul[0][0]+'/embed/'+ul[0][1] except: urlO = urls if openload.check(urlO) == False: raise Exception() sources.append({'source': 'Openload'+audio_filme, 'quality': quality, 'provider': 'Redcouch', 'url': urlO}) except: pass elif 'videomega' in urls: try: sources.append({'source': 'Videomega'+audio_filme, 'quality': quality, 'provider': 'Redcouch', 'url': url}) except: pass #sources.append({'source': 'Openload'+audio_filme, 'quality': quality, 'provider': 'Redcouch'+urls, 'url': urls}) return sources except: return sources
def dizimag_shows(self): try: result = cloudflare.source(self.base_link) result = client.parseDOM(result, 'div', attrs = {'id': 'fil'})[0] result = zip(client.parseDOM(result, 'a', ret='href'), client.parseDOM(result, 'a')) result = [(re.sub('http.+?//.+?/','/', i[0]), cleantitle.tv(i[1])) for i in result] return result except: return
def dizigold_shows(self): try: result = cloudflare.source(self.base_link) result = client.parseDOM(result, 'div', attrs = {'class': 'dizis'})[0] result = re.compile('href="(.+?)">(.+?)<').findall(result) result = [(re.sub('http.+?//.+?/','/', i[0]), cleantitle.tv(i[1])) for i in result] return result except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: if url == None: return season = "%01d" % int(season) episode = "%01d" % int(episode) query = '%s "Season %s" "Episode %s"' % (url, season, episode) query = urlparse.urljoin(self.base_link, self.tvsearch_link + urllib.quote_plus(query)) result = cloudflare.source(query) if result == None: result = cloudflare.source(self.proxy_link + urllib.quote_plus(query)) r = client.parseDOM(result, "li", attrs={"class": "first element.+?"}) r += client.parseDOM(result, "li", attrs={"class": "element.+?"}) r += client.parseDOM(result, "header", attrs={"class": "entry-header"}) tvshowtitle = cleantitle.tv(url) result = [ (client.parseDOM(i, "a", ret="href"), re.compile("(.+?): Season (\d*).+?Episode (\d*)").findall(i)) for i in r ] result = [(i[0][0], i[1][-1]) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], i[1][0].split(">")[-1], i[1][1], i[1][2]) for i in result] result = [i for i in result if season == "%01d" % int(i[2]) and episode == "%01d" % int(i[3])] result = [i[0] for i in result if tvshowtitle == cleantitle.tv(i[1])][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)["u"][0] except: pass url = urlparse.urlparse(url).path url = url.encode("utf-8") return url except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: tvshowtitle, year = re.compile('(.+?) [(](\d{4})[)]$').findall(url)[0] query = self.search_link % (urllib.quote_plus(tvshowtitle)) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) result = client.parseDOM(result, 'div', attrs = {'id': 'post-.+?'}) tvshowtitle = cleantitle.tv(tvshowtitle) season = '%01d' % int(season) episode = '%01d' % int(episode) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a', ret='title')[0], client.parseDOM(i, 'div', attrs = {'class': 'status status-year'})) for i in result] result = [x for y,x in enumerate(result) if x not in result[:y]] result = [(i[0], i[1], i[2][0]) for i in result if len(i[2]) > 0] result = [(i[0], re.compile('(.+?) Season (\d*)$').findall(i[1]), i[2]) for i in result] result = [(i[0], i[1][0][0], i[1][0][1], i[2]) for i in result if len(i[1]) > 0] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i for i in result if season == i[2]] result = [(i[0], i[1], str(int(i[3]) - int(i[2]) + 1)) for i in result] result = [i[0] for i in result if any(x in i[2] for x in years)][0] url = urlparse.urljoin(self.base_link, result) result = cloudflare.source(url) result = client.parseDOM(result, 'div', attrs = {'id': 'episode_show'})[0] result = re.compile('(<a.+?</a>)').findall(result) result = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a')[0]) for i in result] result = [i[0] for i in result if episode == i[1]][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources url = urlparse.urljoin(self.base_link, url) result = cloudflare.source(url) result = client.parseDOM(result, 'a', ret='href') result = [i for i in result if '.php' in i and 'i=' in i] result = [client.replaceHTMLCodes(i) for i in result] try: url = [] for i in result: try: url.append(base64.decodestring(urlparse.parse_qs(urlparse.urlparse(i).query)['i'][0])) except: pass url = [i for i in url if i.startswith('http')][0] if not 'google' in url: raise Exception() url = resolvers.request(url) for i in url: sources.append({'source': 'GVideo', 'quality': i['quality'], 'provider': 'YIFYstream', 'url': i['url']}) except: pass try: url = [i for i in result if 'p=shtml' in i][0] url = client.source(url) try: sources.append({'source': 'GVideo', 'quality': '1080p', 'provider': 'YIFYstream', 'url': [i for i in client.parseDOM(url, 'source', ret='src', attrs = {'data-res': '1080'}) if 'google' in i][0]}) except: pass try: sources.append({'source': 'GVideo', 'quality': 'HD', 'provider': 'YIFYstream', 'url': [i for i in client.parseDOM(url, 'source', ret='src', attrs = {'data-res': '720'}) if 'google' in i][0]}) except: pass try: sources.append({'source': 'GVideo', 'quality': 'SD', 'provider': 'YIFYstream', 'url': [i for i in client.parseDOM(url, 'source', ret='src', attrs = {'data-res': '480'}) if 'google' in i][0]}) except: sources.append({'source': 'GVideo', 'quality': 'SD', 'provider': 'YIFYstream', 'url': [i for i in client.parseDOM(url, 'source', ret='src', attrs = {'data-res': '360'}) if 'google' in i][0]}) except: pass try: url = [i for i in result if 'p=open' in i][0] url = urlparse.parse_qs(urlparse.urlparse(i).query)['i'][0] url = 'https://openload.io/f/%s' % url url = resolvers.request(url) if url == None: raise Exception() sources.append({'source': 'Openload', 'quality': 'HD', 'provider': 'YIFYstream', 'url': url}) except: pass return sources except: return sources
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources url = urlparse.urljoin(self.base_link, url) result = cloudflare.source(url) links = client.parseDOM(result, 'div', attrs={'class': 'server_line.+?'}) for i in links: try: host = client.parseDOM( i, 'p', attrs={'class': 'server_servername'})[0] host = re.compile('Server (.+?)$').findall(host)[0] host = host.strip().lower() host = client.replaceHTMLCodes(host) host = host.encode('utf-8') url = client.parseDOM(i, 'a', ret='href')[0] url = client.replaceHTMLCodes(url) url = urlparse.urljoin(self.base_link, url) url = url.encode('utf-8') if 'google' in host: url = self.__resolve(client.source(url)) for u in url: sources.append({ 'source': 'GVideo', 'quality': u['quality'], 'provider': 'Tunemovie', 'url': u['url'] }) elif host in hostDict: raise Exception() sources.append({ 'source': host, 'quality': 'SD', 'provider': 'Tunemovie', 'url': url }) except: pass return sources except: return sources
def dizigold_shows(self): try: result = cloudflare.source(self.base_link) result = client.parseDOM(result, 'div', attrs={'class': 'dizis'})[0] result = re.compile('href="(.+?)">(.+?)<').findall(result) result = [(re.sub('http.+?//.+?/', '/', i[0]), cleantitle.tv(i[1])) for i in result] return result except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): ## sources = [] ## sources.append({'source': 'Videomega', 'quality': 'HD', 'provider': 'TopPt'+url, 'url': url}) try: sources = [] if url == None: return sources url = url.replace(self.base_link,'') result = cloudflare.source(urlparse.urljoin(self.base_link, url)) try:audiopt = re.compile('<b>AUDIO:</b>(.+?)<br/>').findall(result.replace(" ",''))[0] except:audiopt = 'audio' if 'PT' in audiopt.upper(): audio_filme = ' | PT-PT' else: audio_filme = '' try: try:quality = re.compile('<b>VERS.+?:</b>(.+?)<br/>').findall(result.replace(' ',''))[0] except:quality = re.compile('<b>RELEASE:</b>(.+?)<br/>').findall(result.replace(' ',''))[0] quality = quality.strip().upper() if 'CAM' in quality or 'TS' in quality: quality = 'CAM' elif 'SCREENER' in quality: quality = 'SCR' elif 'BRRIP' in quality or 'BDRIP' in quality or 'HDRIP' in quality or '720P' in quality: quality = 'HD' elif '1080P' in quality: quality = '1080p' else: quality = 'SD' except: quality = 'SD' host_url = re.compile('<spanclass="su-lightbox"data-mfp-src="(.+?)".+?;-webkit-text-shadow:none">(.+?)</span></a></span>').findall(result.replace(' ','')) for url,host in host_url: host = host.strip().lower() if 'openload' in host: try: if openload.check(url) == False: raise Exception() sources.append({'source': 'Openload'+audio_filme, 'quality': quality, 'provider': 'TopPt', 'url': url}) except: pass elif 'videomega' in host: try: url = re.compile('hashkey=([\w]+)').findall(result) url += re.compile('ref=[\'|\"](.+?)[\'|\"]').findall(result) url = 'http://videomega.tv/cdn.php?ref=%s' % url[0] url = resolvers.request(url) if url == None: raise Exception() sources.append({'source': 'Videomega'+audio_filme, 'quality': quality, 'provider': 'TopPt', 'url': url}) except: pass if 'openload' not in host and 'trailer' not in host: sources.append({'source': host+audio_filme, 'quality': quality, 'provider': 'TopPt', 'url': url}) return sources except: return sources
def moviefarsi_shows(self): try: query = urlparse.urljoin(self.base_link, self.tvsearch_link) result = client.source(query, cookie=self.cookie_link) if result == None: result = cloudflare.source(query) result = client.parseDOM(result, 'li', attrs = {'class': 'categories'})[0] result = re.compile('href="(.+?)" *>(.+?)<').findall(result) return result except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: tvshowtitle, year = re.compile('(.+?) [(](\d{4})[)]$').findall( url)[0] query = self.search_link % urllib.quote(tvshowtitle) query = urlparse.urljoin(self.base_link, query) result = cloudflare.source(query) tvshowtitle = cleantitle.tv(tvshowtitle) season = '%01d' % int(season) episode = '%01d' % int(episode) years = [ '%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1) ] result = client.parseDOM(result, 'div', attrs={'class': 'ml-item'}) result = [ (client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'h2'), re.compile( 'class *= *[\'|\"]jt-info[\'|\"]>(\d{4})<').findall(i)) for i in result ] result = [(i[0][0], i[1][0], i[2][0]) for i in result if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] result = [(i[0], re.compile('(.+?) - Season (\d*)$').findall(i[1]), i[2]) for i in result] result = [(i[0], i[1][0][0], i[1][0][1], i[2]) for i in result if len(i[1]) > 0] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i for i in result if season == i[2]] result = [(i[0], i[1], str(int(i[3]) - int(i[2]) + 1)) for i in result] result = [i[0] for i in result if any(x in i[2] for x in years)][0] result += '?S%02dE%02d' % (int(season), int(episode)) try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources result = cloudflare.source(urlparse.urljoin(self.base_link, url)) quality = client.parseDOM(result, 'title')[0] if '[CAM]' in quality or '[TS]' in quality: quality = 'CAM' elif '[SCREENER]' in quality: quality = 'SCR' else: quality = 'HD' result = client.parseDOM(result, 'div', attrs={'class': 'video-embed'})[0] try: url = client.parseDOM(result, 'iframe', ret='src') url = [i for i in url if 'openload' in i.lower()][0] url = resolvers.request(url) if url == None: raise Exception() sources.append({ 'source': 'Openload', 'quality': quality, 'provider': 'MoviesHD', 'url': url }) except: pass try: url = re.compile('hashkey=([\w]+)').findall(result) url += re.compile('ref=[\'|\"](.+?)[\'|\"]').findall(result) url = 'http://videomega.tv/cdn.php?ref=%s' % url[0] url = resolvers.request(url) if url == None: raise Exception() sources.append({ 'source': 'Videomega', 'quality': quality, 'provider': 'MoviesHD', 'url': url }) except: pass return sources except: return sources
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: if url == None: return query = '%s S%02dE%02d' % (url, int(season), int(episode)) query = urlparse.urljoin( self.tvbase_link, self.search_link + urllib.quote_plus(query)) result = cloudflare.source(query) #if result == None: result = client.source(self.__proxy() + urllib.quote_plus(query)) r = client.parseDOM(result, 'li', attrs={'class': 'first element.+?'}) r += client.parseDOM(result, 'li', attrs={'class': 'element.+?'}) r += client.parseDOM(result, 'header', attrs={'class': 'entry-heade.+?'}) tvshowtitle = cleantitle.tv(url) hdlr = 'S%02dE%02d' % (int(season), int(episode)) result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in r] result = [(i[0][0], i[1][0].upper()) for i in result if len(i[0]) > 0 and len(i[1]) > 0] result = [(i[0], re.compile('(.+?) (S\d+E\d+)').findall(i[1])) for i in result] result = [(i[0], i[1][0][0], i[1][0][-1]) for i in result if len(i[1]) > 0] result = [i for i in result if tvshowtitle == cleantitle.tv(i[1])] result = [i[0] for i in result if hdlr == i[2]][0] url = client.replaceHTMLCodes(result) try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['u'][0] except: pass try: url = urlparse.parse_qs(urlparse.urlparse(url).query)['q'][0] except: pass url = urlparse.urlparse(url).path url = url.encode('utf-8') return url except: return