def tvshow(self, imdb, tvdb, tvshowtitle, year): try: url = self.tvsearch_link % cleantitle.geturl(tvshowtitle) r = urlparse.urljoin(self.base_link, url) r = client.request(r, limit='1') r = client.parseDOM(r, 'title') if not r: url = 'http://www.imdb.com/title/%s' % imdb url = client.request(url, headers={'Accept-Language': 'es-ES'}) url = client.parseDOM(url, 'title')[0] url = re.sub('\((?:.+?|)\d{4}.+', '', url).strip() url = cleantitle.normalize(url.encode("utf-8")) url = self.tvsearch_link % cleantitle.geturl(url) r = urlparse.urljoin(self.base_link, url) r = client.request(r, limit='1') r = client.parseDOM(r, 'title') if not year in r[0]: raise Exception() return url except: return
def sources(self, url, hostDict, hostprDict): try: sources = [] if url == None: return sources if not str(url).startswith('http'): data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) if 'tvshowtitle' in data: url = '%s/episodes/%s-%01dx%01d/' % (self.base_link, cleantitle.geturl(data['tvshowtitle']), int(data['season']), int(data['episode'])) year = re.findall('(\d{4})', data['premiered'])[0] else: url = '%s/movies/%s/' % (self.base_link, cleantitle.geturl(data['title'])) year = data['year'] url = client.request(url, output='geturl') if url == None: raise Exception() r = client.request(url) y = client.parseDOM(r, 'span', attrs = {'class': 'date'})[0] y = re.findall('(\d{4})', y)[0] if not y == year: raise Exception() else: url = urlparse.urljoin(self.base_link, url) r = client.request(url) links = client.parseDOM(r, 'iframe', ret='src') for link in links: try: url = link.replace('\/', '/') url = client.replaceHTMLCodes(url) url = 'http:' + url if url.startswith('//') else url url = url.encode('utf-8') if not '.php' in url: raise Exception() r = client.request(url, timeout='10') r = re.findall('file\s*:\s*(?:\"|\')(.+?)(?:\"|\')', r) for i in r: try: sources.append({'source': 'gvideo', 'quality': directstream.googletag(i)[0]['quality'], 'language': 'en', 'url': i, 'direct': True, 'debridonly': False}) except: pass except: pass return sources except: return sources
def movie(self, imdb, title, year): try: url = self.moviesearch_link % (cleantitle.geturl(title.replace('\'', '-')), year) r = urlparse.urljoin(self.base_link, url) r = client.request(r, limit='1') r = client.parseDOM(r, 'title')[0] if not '(%s)' % year in r: raise Exception() return url except: return
def movie(self, imdb, title, year): try: url = self.search_link % (cleantitle.geturl(title), year) url = urlparse.urljoin(self.base_link, url) url = client.request(url, output='geturl') url = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def movie(self, imdb, title, year): try: url = self.search_link % (cleantitle.geturl(title).replace('-', '_'), year) url = urlparse.urljoin(self.base_link, url) r = client.request(url, limit='2') r = client.parseDOM(r, 'meta', ret='content', attrs = {'property': 'og:title'})[0] if not year in r: raise Exception() url = re.findall('(?://.+?|)(/.+)', url)[0] url = url.encode('utf-8') return url except: return
def movie(self, imdb, title, year): try: url = self.search_link % (cleantitle.geturl(title), year) url = urlparse.urljoin(self.base_link, url) r = client.request(url, limit='1') r = client.parseDOM(r, 'title')[0] if r == '': raise Exception() url = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def episode(self, url, imdb, tvdb, title, premiered, season, episode): try: data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) url = '%s/watch/%s-season-%01d-%s.html' % ( self.base_link, cleantitle.geturl(data['tvshowtitle']), int(season), str((int(data['year']) + int(season)) - 1)) url = client.request(url, output='geturl') if url == None: raise Exception() url = re.findall('(?://.+?|)(/.+)', url)[0] url += '?episode=%01d' % int(episode) url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def movie(self, imdb, title, year): try: url = '%s/%s-%s/' % (self.base_link, cleantitle.geturl(title), year) url = client.request(url, output='geturl') if url == None: raise Exception() url = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: pass try: t = cleantitle.get(title) q = '%s %s' % (title, year) q = self.search_link.decode('base64') % urllib.quote_plus(q) r = client.request(q, error=True) r = json.loads(r)['results'] r = [(i['url'], i['titleNoFormatting']) for i in r] r = [(i[0], re.findall('(?:^Watch Movie |^Watch |)(.+?)\((\d{4})', i[1])) for i in r] r = [(i[0], i[1][0][0], i[1][0][1]) for i in r if i[1]] r = [(urllib.unquote_plus(i[0]), i[1], i[2]) for i in r] r = [(urlparse.urlparse(i[0]).path, i[1], i[2]) for i in r] r = [i for i in r if t == cleantitle.get(i[1]) and year == i[2]] r = re.sub('/watch-movie-|-\d+$', '/', r[0][0].strip()) url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: pass
def sources(self, url, hostDict, hostprDict): try: sources = [] if url == None: return sources if not str(url).startswith('http'): data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) title = data['tvshowtitle'] if 'tvshowtitle' in data else data[ 'title'] if 'tvshowtitle' in data: episode = '%01d' % int(data['episode']) u1 = '%s/watch-%s-s%02d-%s-online-free-putlocker.html' % ( self.base_link, cleantitle.geturl(title), int(data['season']), str((int(data['year']) + int(data['season'])) - 1)) u2 = '%s/watch-%s-s%02d-%s-online-free-putlocker.html' % ( self.base_link, cleantitle.geturl(title), int(data['season']), data['year']) u3 = '%s/watch-%s-s%02d-%s-online-free-putlocker.html' % ( self.base_link, cleantitle.geturl(title), int(data['season']), str(int(data['year']) + 1)) r = client.request(u1, output='geturl') if 'error.html' in r: r = client.request(u2, output='geturl') if 'error.html' in r: r = client.request(u3, output='geturl') if 'error.html' in r: raise Exception() url = r else: episode = None u1 = '%s/watch-%s-%s-online-free-putlocker.html' % ( self.base_link, cleantitle.geturl(title), data['year']) r = client.request(u1, output='geturl') if 'error.html' in r: raise Exception() url = r else: try: url, episode = re.findall('(.+?)\?episode=(\d*)$', url)[0] except: episode = None try: episode = '%01d' % int(data['episode']) except: pass r = client.request(url) h = { 'User-Agent': client.agent(), 'X-Requested-With': 'XMLHttpRequest' } ip = client.parseDOM(r, 'input', ret='value', attrs={'name': 'phimid'})[0] ep = episode if not episode == None else '1' p = { 'ip_film': ip, 'ip_name': ep, 'ipplugins': '1', 'ip_server': '11' } p = urllib.urlencode(p) u = '/ip.file/swf/plugins/ipplugins.php' u = urlparse.urljoin(self.base_link, u) r = client.request(u, post=p, headers=h, referer=url) r = json.loads(r) u = '/ip.file/swf/ipplayer/ipplayer.php' u = urlparse.urljoin(self.base_link, u) p = {'u': r['s'], 's': r['v'], 'w': '100%', 'h': '360', 'n': '0'} p = urllib.urlencode(p) r = client.request(u, post=p, headers=h, referer=url) r = json.loads(r)['data'] u = [i['files'] for i in r if 'files' in i] for i in u: try: sources.append({ 'source': 'gvideo', 'quality': directstream.googletag(i)[0]['quality'], 'language': 'en', 'url': i, 'direct': True, 'debridonly': False }) except: pass return sources except: return sources
def sources(self, url, hostDict, hostprDict): try: sources = [] if url == None: return sources if not str(url).startswith('http'): data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) if 'tvshowtitle' in data: url = '%s/episodes/%s-%01dx%01d/' % ( self.base_link, cleantitle.geturl(data['tvshowtitle']), int(data['season']), int(data['episode'])) year = re.findall('(\d{4})', data['premiered'])[0] url = client.request(url, output='geturl') if url == None: raise Exception() r = client.request(url) y = client.parseDOM(r, 'span', attrs={'class': 'date'})[0] y = re.findall('(\d{4})', y)[0] if not y == year: raise Exception() else: url = '%s/movies/%s-%s/' % ( self.base_link, cleantitle.geturl( data['title']), data['year']) url = client.request(url, output='geturl') if url == None: raise Exception() r = client.request(url) else: url = urlparse.urljoin(self.base_link, url) r = client.request(url) r = re.findall( 'file\s*:\s*(?:\"|\')(.+?)(?:\"|\')\s*,.+?label\s*:\s*(?:\"|\')(.+?)(?:\"|\')', r) for i in r: try: if '1080' in i[1]: quality = '1080p' elif '720' in i[1]: quality = 'HD' else: raise Exception() url = i[0].replace('\/', '/') url = client.replaceHTMLCodes(url) if not '.php' in i[0]: raise Exception() url = url.encode('utf-8') sources.append({ 'source': 'gvideo', 'quality': quality, 'language': 'en', 'url': url, 'direct': True, 'debridonly': False }) except: pass return sources except: return sources
def sources(self, url, hostDict, hostprDict): try: sources = [] if url == None: return sources choice = random.choice(self.random_link) base_link = 'http://%s' % choice strm_link = 'http://play.%s' % choice + '/grabber-api/episode/%s?token=%s' if not str(url).startswith('http'): data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) title = data['tvshowtitle'] if 'tvshowtitle' in data else data[ 'title'] if 'tvshowtitle' in data: url = '/tv-series/%s-season-%01d/watch/' % ( cleantitle.geturl(title), int(data['season'])) year = str((int(data['year']) + int(data['season'])) - 1) episode = '%01d' % int(data['episode']) else: url = '/movie/%s/watch/' % cleantitle.geturl(title) year = data['year'] episode = None url = urlparse.urljoin(base_link, url) referer = url r = client.request(url) y = re.findall('Release\s*:\s*.+?\s*(\d{4})', r)[0] if not year == y: raise Exception() else: try: url, episode = re.findall('(.+?)\?episode=(\d*)$', url)[0] except: episode = None url = urlparse.urljoin(base_link, url) url = re.sub('/watch$', '', url.strip('/')) + '/watch/' referer = url r = client.request(url) r = client.parseDOM(r, 'div', attrs={'class': 'les-content'}) r = zip(client.parseDOM(r, 'a', ret='href'), client.parseDOM(r, 'a')) r = [(i[0], ''.join(re.findall('(\d+)', i[1])[:1])) for i in r] if not episode == None: r = [i[0] for i in r if '%01d' % int(i[1]) == episode] else: r = [i[0] for i in r] r = [i for i in r if '/server-' in i] for u in r: try: p = client.request(u, referer=referer, timeout='10') t = re.findall('player_type\s*:\s*"(.+?)"', p)[0] if t == 'embed': raise Exception() s = client.parseDOM(p, 'input', ret='value', attrs={'name': 'episodeID'})[0] t = ''.join( random.sample( string.digits + string.ascii_uppercase + string.ascii_lowercase, 8)) k = hashlib.md5('!@#$%^&*(' + s + t).hexdigest() v = hashlib.md5(t + referer + s).hexdigest() stream = strm_link % (s, t) cookie = '%s=%s' % (k, v) u = client.request(stream, referer=referer, cookie=cookie, timeout='10') u = json.loads(u)['playlist'][0]['sources'] u = [i['file'] for i in u if 'file' in i] for i in u: try: sources.append({ 'source': 'gvideo', 'quality': directstream.googletag(i)[0]['quality'], 'language': 'en', 'url': i, 'direct': True, 'debridonly': False }) except: pass except: pass return sources except: return sources