def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: if url == None: return url = '%s/serie/%s' % (self.base_link, url) myses = 's%s_e%s' %(season, episode) r = client.request(url) r = client.parseDOM(r, 'li', attrs = {'itemprop': 'episode'}) t = cleantitle.get(title) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'span', attrs = {'itemprop': 'name'}), re.compile('(\d{4}-\d{2}-\d{2})').findall(i)) for i in r] r = [(i[0], i[1][0].split(' ')[-1], i[2]) for i in r if i[1]] + [(i[0], None, i[2]) for i in r if not i[1]] r = [(i[0], i[1], i[2][0]) for i in r if i[2]] + [(i[0], i[1], None) for i in r if not i[2]] r = [(i[0][0], i[1], i[2]) for i in r if i[0]] url = [i for i in r if t == cleantitle.get(i[1]) and myses in i[0]][:1] if not url: url = [i for i in r if t == cleantitle.get(i[1])] if len(url) > 1 or not url: url = [i for i in r if date == i[2]] if len(url) > 1 or not url: raise Exception() url = url[0][0] 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: if url == None: return url = urlparse.parse_qs(url) url = dict([(i, url[i][0]) if url[i] else (i, '') for i in url]) url['premiered'], url['season'], url[ 'episode'] = premiered, season, episode try: clean_title = cleantitle.geturl( url['tvshowtitle']) + '-season-%d' % int(season) search_url = urlparse.urljoin( self.base_link, self.search_link % clean_title.replace('-', '+')) r = cache.get(client.request, 1, search_url) r = client.parseDOM(r, 'div', {'id': 'movie-featured'}) r = [(client.parseDOM(i, 'a', ret='href'), re.findall('<b><i>(.+?)</i>', i)) for i in r] r = [(i[0][0], i[1][0]) for i in r if cleantitle.get(i[1][0]) == cleantitle.get(clean_title)] url = r[0][0] except: pass data = client.request(url) data = client.parseDOM(data, 'div', attrs={'id': 'details'}) data = zip(client.parseDOM(data, 'a'), client.parseDOM(data, 'a', ret='href')) url = [(i[0], i[1]) for i in data if i[0] == str(int(episode))] return url[0][1] except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: if url == None: return url = urlparse.urljoin(self.base_link, url) result = proxy.request(url, 'main_body') result = client.parseDOM(result, 'div', attrs = {'class': 'tv_episode_item'}) title = cleantitle.get(title) result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'span', attrs = {'class': 'tv_episode_name'}), re.compile('(\d{4}-\d{2}-\d{2})').findall(i)) for i in result] result = [(i[0], i[1][0], i[2]) for i in result if len(i[1]) > 0] + [(i[0], None, i[2]) for i in result if len(i[1]) == 0] result = [(i[0], i[1], i[2][0]) for i in result if len(i[2]) > 0] + [(i[0], i[1], None) for i in result if len(i[2]) == 0] result = [(i[0][0], i[1], i[2]) for i in result if len(i[0]) > 0] url = [i for i in result if title == cleantitle.get(i[1]) and premiered == i[2]][:1] if len(url) == 0: url = [i for i in result if premiered == i[2]] if len(url) == 0 or len(url) > 1: url = [i for i in result if 'season-%01d-episode-%01d' % (int(season), int(episode)) in i[0]] url = client.replaceHTMLCodes(url[0][0]) url = proxy.parse(url) url = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def tvrageEpisode(self, tvrage, title, date, season, episode): monthMap = {'01':'Jan', '02':'Feb', '03':'Mar', '04':'Apr', '05':'May', '06':'Jun', '07':'Jul', '08':'Aug', '09':'Sep', '10':'Oct', '11':'Nov', '12':'Dec'} title = cleantitle.get(title) try: url = self.tvrage_link % tvrage result = client.request(url, timeout='5') search = re.compile('<td.+?><a.+?title=.+?season.+?episode.+?>(\d+?)x(\d+?)<.+?<td.+?>(\d+?/.+?/\d+?)<.+?<td.+?>.+?href=.+?>(.+?)<').findall(result.replace('\n','')) d = '%02d/%s/%s' % (int(date.split('-')[2]), monthMap[date.split('-')[1]], date.split('-')[0]) match = [i for i in search if d == i[2]] if len(match) == 1: return (str('%01d' % int(match[0][0])), str('%01d' % int(match[0][1]))) match = [i for i in search if title == cleantitle.get(i[3])] if len(match) == 1: return (str('%01d' % int(match[0][0])), str('%01d' % int(match[0][1]))) except: pass try: url = self.epguides_link % tvrage result = client.request(url, timeout='5') search = re.compile('\d+?,(\d+?),(\d+?),.+?,(\d+?/.+?/\d+?),"(.+?)",.+?,".+?"').findall(result) d = '%02d/%s/%s' % (int(date.split('-')[2]), monthMap[date.split('-')[1]], date.split('-')[0][-2:]) match = [i for i in search if d == i[2]] if len(match) == 1: return (str('%01d' % int(match[0][0])), str('%01d' % int(match[0][1]))) match = [i for i in search if title == cleantitle.get(i[3])] if len(match) == 1: return (str('%01d' % int(match[0][0])), str('%01d' % int(match[0][1]))) except: pass
def get_movie(self, imdb, title, year): try: query = self.moviesearch_link % (urllib.quote_plus(title)) query = urlparse.urljoin(self.base_link, query) result = client.source(query) result = re.compile('showResult\((.*)\)').findall(result)[0] result = json.loads(result) result = result['feed']['entry'] title = cleantitle.get(title) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = [i for i in result if 'movies' in [x['term'].lower() for x in i['category']]] result = [[x for x in i['link'] if x['rel'] == 'alternate' and x['type'] == 'text/html'][0] for i in result] result = [(i['href'], i['title']) for i in result] result = [(i[0], re.compile('(.+?) (\d{4})(.+)').findall(i[1])) for i in result] result = [(i[0], i[1][0][0], i[1][0][1], i[1][0][2]) for i in result if len(i[1]) > 0] result = [(i[0], i[1], i[2]) for i in result if not 'TS' in i[3] and not 'CAM' in i[3]] result = [i for i in result if title == cleantitle.get(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) url = urlparse.urlparse(url).path 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_2, self.search_link) query = query % urllib.quote_plus(title) r = client.request(query) t = cleantitle.get(title) r = zip( client.parseDOM(r, 'a', ret='href', attrs={'class': 'movie-item-link'}), client.parseDOM(r, 'a', ret='title', attrs={'class': 'movie-item-link'})) r = [(i[0], i[1], re.findall('(\d{4})', i[1])) for i in r] #control.log('R %s' % r) r = [(i[0], i[1], i[2][-1]) for i in r if len(i[2]) > 0] #control.log('R %s' % r) r = [ i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2] ][0] control.log('R %s' % r) url = urlparse.urljoin(self.base_link, r) url = urlparse.urlparse(url).path url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: pass
def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year): try: tvshowtitle = cleantitle.getsearch(tvshowtitle) p = urllib.urlencode({ 'action': 'ajaxy_sf', 'sf_value': tvshowtitle, 'search': 'false' }) r = urlparse.urljoin(self.base_link, self.search_link) result = client.request(r, post=p, XHR=True) if len(json.loads(result)) == 0: p = urllib.urlencode({ 'action': 'ajaxy_sf', 'sf_value': localtvshowtitle, 'search': 'false' }) result = client.request(r, post=p, XHR=True) diziler = json.loads(result)['diziler'][0]['all'] for i in diziler: if cleantitle.get(tvshowtitle) == cleantitle.get( i['post_title']): url = i['post_link'] url = url.split('/')[4] 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 url = urlparse.urljoin(self.base_link, url) result = client.request(url, 'tv_episode_item') result = client.parseDOM(result, 'div', attrs = {'class': 'tv_episode_item'}) title = cleantitle.get(title) premiered = re.compile('(\d{4})-(\d{2})-(\d{2})').findall(premiered)[0] premiered = '%s %01d %s' % (premiered[1].replace('01','January').replace('02','February').replace('03','March').replace('04','April').replace('05','May').replace('06','June').replace('07','July').replace('08','August').replace('09','September').replace('10','October').replace('11','November').replace('12','December'), int(premiered[2]), premiered[0]) result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'span', attrs = {'class': 'tv_episode_name'}), client.parseDOM(i, 'span', attrs = {'class': 'tv_num_versions'})) for i in result] result = [(i[0], i[1][0], i[2]) for i in result if len(i[1]) > 0] + [(i[0], None, i[2]) for i in result if len(i[1]) == 0] result = [(i[0], i[1], i[2][0]) for i in result if len(i[2]) > 0] + [(i[0], i[1], None) for i in result if len(i[2]) == 0] result = [(i[0][0], i[1], i[2]) for i in result if len(i[0]) > 0] url = [i for i in result if title == cleantitle.get(i[1]) and premiered == i[2]][:1] if len(url) == 0: url = [i for i in result if premiered == i[2]] if len(url) == 0 or len(url) > 1: url = [i for i in result if 'season-%01d-episode-%01d' % (int(season), int(episode)) in i[0]] url = client.replaceHTMLCodes(url[0][0]) 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 = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: t = cleantitle.get(title) headers = {'X-Requested-With': 'XMLHttpRequest'} query = urllib.urlencode({'keyword': title}) url = urlparse.urljoin(self.base_link, self.search_link) r = client.request(url, post=query, headers=headers) #print("1",r) r = json.loads(r)['content'] #print ("2",r) r = zip(client.parseDOM(r, 'a', ret='href', attrs = {'class': 'ss-title'}), client.parseDOM(r, 'a', attrs = {'class': 'ss-title'})) r = [i[0] for i in r if cleantitle.get(t) == cleantitle.get(i[1])][:2] r = [(i, re.findall('(\d+)', i)[-1]) for i in r] #print ("3",r) for i in r: try: y, q = cache.get(self.muchmovies_info, 9000, i[1]) #print("4",y,q) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path except: pass except: return
def get_movie(self, imdb, title, year): return None try: query = self.moviesearch_link % (urllib.quote_plus(title)) query = urlparse.urljoin(self.base_link, query) result = client.request(query) result = re.compile('showResult\((.*)\)').findall(result)[0] result = json.loads(result) result = result['feed']['entry'] title = cleantitle.get(title) years = ['%s' % str(year)] result = [i for i in result if 'movies' in [x['term'].lower() for x in i['category']]] result = [[x for x in i['link'] if x['rel'] == 'alternate' and x['type'] == 'text/html'][0] for i in result] result = [(i['href'], i['title']) for i in result] result = [(i[0], re.compile('(.+?) (\d{4})(.+)').findall(i[1])) for i in result] result = [(i[0], i[1][0][0], i[1][0][1], i[1][0][2]) for i in result if len(i[1]) > 0] result = [(i[0], i[1], i[2]) for i in result if not 'TS' in i[3] and not 'CAM' in i[3]] result = [i for i in result if title == cleantitle.get(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) url = urlparse.urlparse(url).path url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: t = cleantitle.query2(title) hash = hashlib.md5(title).hexdigest() query = urllib.urlencode({'keyword': title, 'hash':hash}) url = urlparse.urljoin(self.base_link, self.search_link) r = client.request(url, post=query, headers=self.headers) r = json.loads(r)['content'] r = zip(client.parseDOM(r, 'a', ret='href', attrs = {'class': 'ss-title'}), client.parseDOM(r, 'a', attrs = {'class': 'ss-title'})) r = [i[0] for i in r if cleantitle.get(t) == cleantitle.get(i[1])][:2] r = [(i, re.findall('(\d+)', i)[-1]) for i in r] url = None print r for i in r: try: print i[1] #y, q = cache.get(self.myesmovies_info(), 9000, i[1]) y, q = self.myesmovies_info(i[0]) print("yQ",y,q,year) if not y == year: print "NOT",type(y),type(year) raise Exception() return urlparse.urlparse(i[0]).path except: pass print(url) return url except Exception as e: control.log('Error %s' % e) return
def get_movie(self, imdb, title, year): try: tk = cache.get(self.putlocker_token, 8) set = self.putlocker_set() rt = self.putlocker_rt(tk + set) sl = self.putlocker_sl() tm = int(time.time() * 1000) headers = {'X-Requested-With': 'XMLHttpRequest'} url = urlparse.urljoin(self.base_link, self.search_link) post = {'q': title.lower(), 'limit': '20', 'timestamp': tm, 'verifiedCheck': tk, 'set': set, 'rt': rt, 'sl': sl} print("POST",post) post = urllib.urlencode(post) r = client.request(url, post=post, headers=headers, output='cookie2') print("R",r) r = json.loads(r) t = cleantitle.get(title) r = [i for i in r if 'year' in i and 'meta' in i] r = [(i['permalink'], i['title'], str(i['year']), i['meta'].lower()) for i in r] r = [i for i in r if 'movie' in i[3]] r = [i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2]][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') print("U",url) return url except: return
def searchShow(self, title, season, year): try: title = cleantitle.normalize(title) t = cleantitle.get(title) url = urlparse.urljoin(self.base_link, self.search_link % urllib.quote_plus(cleantitle.query('%s Season %01d' % (title.replace('\'', '-'), int(season))))) r = client.request(url, timeout='10') r = client.parseDOM(r, 'h2', attrs={'class': 'tit'}) if r: r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title')) for i in r] r = [(i[0][0], i[1][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0] r = [(i[0], re.findall('(.+?)\s+-\s+Season\s+(\d+)', i[1])) for i in r] r = [(i[0], i[1][0][0], i[1][0][1]) for i in r if len(i[1]) > 0] r = [i[0] for i in r if t == cleantitle.get(i[1]) and int(season) == int(i[2])][0] else: url = urlparse.urljoin(self.base_link, self.search_link % urllib.quote_plus(cleantitle.query('%s %01d' % (title.replace('\'', '-'), int(year))))) r = client.request(url, timeout='10') r = client.parseDOM(r, 'h2', attrs={'class': 'tit'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title')) for i in r] r = [(i[0][0], i[1][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0] r = [(i[0], re.findall('(.+?) \((\d{4})', i[1])) for i in r] r = [(i[0], i[1][0][0], i[1][0][1]) for i in r if len(i[1]) > 0] r = [i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2]][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) return url.encode('utf-8') except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) t = cleantitle.get(data['tvshowtitle']) year = re.findall('(\d{4})', date)[0] years = [str(year), str(int(year)+1), str(int(year)-1)] season = '%01d' % int(season) episode = '%01d' % int(episode) headers = {'X-Requested-With': 'XMLHttpRequest'} query = urllib.urlencode({'keyword': '%s - Season %s' % (data['tvshowtitle'], season)}) url = urlparse.urljoin(self.base_link, self.search_link) r = client.request(url, post=query, headers=headers) r = json.loads(r)['content'] r = zip(client.parseDOM(r, 'a', ret='href', attrs = {'class': 'ss-title'}), client.parseDOM(r, 'a', attrs = {'class': 'ss-title'})) r = [(i[0], re.findall('(.+?) - season (\d+)$', i[1].lower())) for i in r] r = [(i[0], i[1][0][0], i[1][0][1]) for i in r if len(i[1]) > 0] r = [i for i in r if t == cleantitle.get(i[1])] r = [i[0] for i in r if season == '%01d' % int(i[2])][:2] r = [(i, re.findall('(\d+)', i)[-1]) for i in r] for i in r: try: y, q = cache.get(self.muchmovies_info, 9000, i[1]) if not y in years: raise Exception() return urlparse.urlparse(i[0]).path + '?episode=%01d' % int(episode) except: pass except: return
def matchAlias(self, title, aliases): try: for alias in aliases: if cleantitle.get(title) == cleantitle.get(alias['title']): return True except: return False
def get_episode(self, url, imdb, tvdb, title, date, season, episode): return try: if url == None: return url = urlparse.parse_qs(url) print url url = dict([(i, url[i][0]) if url[i] else (i, '') for i in url]) print url result = cache.get(self.tvshow_cache, 120) tvshowtitle = cleantitle.get(url['tvshowtitle']) for i in result: if cleantitle.get(tvshowtitle) in cleantitle.get(i[1]): print("MAM", i) result = [i[0] for i in result if cleantitle.get(tvshowtitle) in cleantitle.get(i[1])] url = [i for i in url.split('/') if not i == ''] url['title'], url['season'], url['episode'] = title, season, episode url = urllib.urlencode(url) print("URL",url) #view-source:http://alltube.tv/marco-polo/odcinek-4/odcinek-4-sezon-2/62284 url = '/%s/odcinek-%s/odcinek-%s-sezon-%s/%s' % (url[1],int(episode),int(episode),int(season), url[2]) print("URL", url) 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 url = urlparse.parse_qs(url) print url url = dict([(i, url[i][0]) if url[i] else (i, '') for i in url]) print url result = cache.get(self.tvshow_cache, 120) tvshowtitle = cleantitle.get(url['tvshowtitle']) for i in result: if cleantitle.get(tvshowtitle) in cleantitle.get(i[1]): print("MAM", i) result = [i[0] for i in result if cleantitle.get(tvshowtitle) in cleantitle.get(i[1])][0] txts = 's%02de%02d' % (int(season),int(episode)) print result,title,txts result = client.source(result) result = client.parseDOM(result, 'li', attrs = {'class': 'episode'}) result = [i for i in result if txts in i][0] url = client.parseDOM(result, 'a', ret='href')[0] url = url.encode('utf-8') return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: tk = cache.get(self.putlocker_token, 8) st = self.putlocker_set() ; rt = self.putlocker_rt(tk + st) tm = int(time.time() * 1000) headers = {'X-Requested-With': 'XMLHttpRequest'} url = urlparse.urljoin(self.base_link, self.search_link) post = {'q': tvshowtitle.lower(), 'limit': '100', 'timestamp': tm, 'verifiedCheck': tk, 'sl': st, 'rt': rt} post = urllib.urlencode(post) r = client.request(url, post=post, headers=headers) print(">>>",r) r = json.loads(r) t = cleantitle.get(tvshowtitle) r = [i for i in r if 'year' in i and 'meta' in i] r = [(i['permalink'], i['title'], str(i['year']), i['meta'].lower()) for i in r] r = [i for i in r if 'tv' in i[3]] r = [i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2]][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year): try: tv_maze = tvmaze.tvMaze() tvshowtitle = tv_maze.showLookup('thetvdb', tvdb) tvshowtitle = tvshowtitle['name'] t = cleantitle.get(tvshowtitle) q = urlparse.urljoin(self.base_link, self.search_link) q = q % urllib.quote_plus(tvshowtitle) r = client.request(q) r = client.parseDOM(r, 'ul', attrs={'class': 'items'}) r = client.parseDOM(r, 'li') r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title'), re.findall('\d{4}', i)) for i in r] r = [(i[0][0], i[1][0], i[2][-1]) for i in r if i[0] and i[1] and i[2]] r = [i for i in r if t == cleantitle.get(i[1]) and year == i[2]] r = r[0][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: failure = traceback.format_exc() print('GoGoAnime - Exception: \n' + str(failure)) return
def movie(self, imdb, title, localtitle, aliases, year): try: url = self.search_link % (cleantitle.geturl(title), year) q = urlparse.urljoin(self.base_link, url) r = proxy.geturl(q) if not r == None: return url t = cleantitle.get(title) q = self.search_link_2 % urllib.quote_plus(cleantitle.query(title)) q = urlparse.urljoin(self.base_link, q) r = client.request(q) r = zip(client.parseDOM(r, 'a', ret='href'), client.parseDOM(r, 'a')) r = [(i[0], re.findall('(?:\'|\")(.+?)(?:\'|\")', i[1])) for i in r] r = [(i[0], [re.findall('(.+?)\((\d{4})', x) for x in i[1]]) for i in r] r = [(i[0], [x[0] for x in i[1] if x]) for i in r] r = [(i[0], i[1][0][0], i[1][0][1]) for i in r if i[1]] r = [i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2]] url = re.findall('(?://.+?|)(/.+)', r[0])[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def movie(self, imdb, title, localtitle, aliases, year): try: t = 'http://www.imdb.com/title/%s' % imdb t = client.request(t, headers={'Accept-Language': 'es-AR'}) t = client.parseDOM(t, 'title')[0] t = re.sub('(?:\(|\s)\d{4}.+', '', t).strip().encode('utf-8') q = self.search_link % urllib.quote_plus(t) q = urlparse.urljoin(self.base_link, q) r = client.request(q) r = client.parseDOM(r, 'div', attrs={'class': 'item'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'span', attrs={'class': 'tt'}), client.parseDOM(i, 'span', attrs={'class': 'year'})) for i in r] r = [(i[0][0], i[1][0], i[2][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] r = [ i[0] for i in r if cleantitle.get(t) == cleantitle.get(i[1]) and year == i[2] ][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: pass
def get_movie(self, imdb, title, year): try: t = cleantitle.get(title) headers = {'X-Requested-With': 'XMLHttpRequest', "Accept":"application/json, text/javascript, */*; q=0.01"} hash = hashlib.md5(title+self.key4).hexdigest() query = urllib.urlencode({'keyword': title, 'token':hash}) print "0", hash, query, title url = urlparse.urljoin(self.base_link, self.search_link) r = client.request(url, post=query, headers=headers) print("1",r) #token:"bc0cb3a63946c2762ae7a8501b9c7747" r = json.loads(r)['content'] #print ("2",r) r = zip(client.parseDOM(r, 'a', ret='href', attrs = {'class': 'ss-title'}), client.parseDOM(r, 'a', attrs = {'class': 'ss-title'})) r = [i[0] for i in r if cleantitle.get(t) == cleantitle.get(i[1])][:2] r = [(i, re.findall('(\d+)', i)[-1]) for i in r] #print ("3",r) for i in r: try: y, q = cache.get(self.muchmovies_info, 9000, i[1]) #print("4",y,q) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path except: pass except: return
def search(self, localtitle, year, search_type): try: simply_name = cleantitle.get(localtitle) query = self.search_link % urllib.quote_plus( cleantitle.query(localtitle)) query = urlparse.urljoin(self.base_link, query) result = client.request(query) result = client.parseDOM(result, 'div', attrs={'class': 'result-item'}) for x in result: correct_type = client.parseDOM(x, 'span', attrs={'class': search_type}) correct_year = client.parseDOM(x, 'span', attrs={'class': 'year'})[0] == year name = client.parseDOM(x, 'div', attrs={'class': 'title'})[0] url = client.parseDOM(name, 'a', ret='href')[0] name = cleantitle.get(client.parseDOM(name, 'a')[0]) if (correct_type and correct_year and name == simply_name): return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: r = 'search/tvdb/%s?type=show&extended=full' % tvdb r = json.loads(trakt.getTrakt(r)) if not r: return '0' d = r[0]['show']['genres'] if not ('anime' in d or 'animation' in d): return '0' tv_maze = tvmaze.tvMaze() tvshowtitle = tv_maze.showLookup('thetvdb', tvdb) tvshowtitle = tvshowtitle['name'] t = cleantitle.get(tvshowtitle) q = self.search_link % (urllib.quote_plus(tvshowtitle)) q = urlparse.urljoin(self.base_link, q) r = client.request(q) r = client.parseDOM(r, 'ol', attrs={'id': 'searchresult'})[0] r = client.parseDOM(r, 'h2') r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in r] r = [(i[0][0], i[1][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0] r = [(i[0], re.sub('<.+?>|</.+?>', '', i[1])) for i in r] r = [i for i in r if t == cleantitle.get(i[1])] r = r[-1][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: t = cleantitle.get(title) q = self.search_link % (urllib.quote_plus(cleantitle.query(title))) q = q.replace('+', '-') q = urlparse.urljoin(self.base_link, q) r = self.request(q)[0] r = client.parseDOM(r, 'div', attrs={'class': 'ml-item'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title'), client.parseDOM(i, 'a', ret='data-url')) for i in r] r = [(i[0][0], i[1][0], i[2][0]) for i in r if i[0] and i[1]] #else: # r = zip(client.parseDOM(r, 'a', ret='href', attrs = {'class': 'ss-title'}), client.parseDOM(r, 'a', attrs = {'class': 'ss-title'})) r = [(i[0], i[2]) for i in r if cleantitle.get(t) == cleantitle.get(i[1])][:2] r = [(i[0], re.findall('(\d+)', i[1])[-1]) for i in r] for i in r: try: y, q = cache.get(self.solar_info, 9000, i[1]) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path except: pass except Exception as e: control.log('ERROR Solar %s' % e) return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: genre = 'http://www.imdb.com/title/%s/' % imdb genre = client.request(genre) genre = re.findall('href\s*=\s*[\'|\"](.+?)[\'|\"]', genre) genre = [i for i in genre if '/genre/' in i] genre = [i.split('/genre/')[-1].split('?')[0].lower() for i in genre] if not 'animation' in genre: raise Exception() query = self.search_link % (urllib.quote_plus(tvshowtitle)) query = urlparse.urljoin(self.base_link, query) result = client.request(query) result = result.decode('iso-8859-1').encode('utf-8') tvshowtitle = cleantitle.get(tvshowtitle) result = client.parseDOM(result, 'ol', attrs = {'id': 'searchresult'})[0] result = client.parseDOM(result, 'h2') 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], re.sub('<.+?>|</.+?>','', i[1])) for i in result] result = [i for i in result if tvshowtitle == cleantitle.get(i[1])] result = result[-1][0] url = urlparse.urljoin(self.base_link, result) url = urlparse.urlparse(url).path url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: t = cleantitle.get(tvshowtitle) q = urllib.quote_plus(cleantitle.query(tvshowtitle)) p = urllib.urlencode({'term': q}) h = {'X-Requested-With': 'XMLHttpRequest'} r = client.request(self.search_link, post=p, headers=h) try: r = json.loads(r) except: r = None if r: r = [(i['seo_url'], i['value'], i['label']) for i in r if 'value' in i and 'label' in i and 'seo_url' in i] else: r = client.request(self.search_link_2 % q, '/search/') r = client.parseDOM(r, 'div', attrs = {'valign': '.+?'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title'), client.parseDOM(i, 'a')) for i in r] r = [(i[0][0], i[1][0], i[2][0]) for i in r if i[0] and i[1] and i[2]] r = [(i[0], i[1], re.findall('(\d{4})', i[2])) for i in r] r = [(i[0], i[1], i[2][-1]) for i in r if i[2]] r = [i for i in r if t == cleantitle.get(i[1]) and year == i[2]] url = r[0][0] url = url.strip('/').split('/')[-1] url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): mytab = [] try: title = cleantitle.getsearch(title) query = self.search_link % (urllib.quote_plus(title), year) query = urlparse.urljoin(self.base_link, query) r = client.request(query, headers=self.headers) r = client.parseDOM(r, 'div', attrs={'class': 'title'}) r = [(client.parseDOM(i, 'a'), client.parseDOM(i, 'a', ret='onclick')) for i in r] r = [ i[1][0] for i in r if cleantitle.get(title) == cleantitle.get(i[0][0]) ] murl = re.findall('alias=(.*?)\'', r[0])[0] murl = client.replaceHTMLCodes(murl) murl = murl.encode('utf-8') url = {'imdb': imdb, 'title': title, 'year': year, 'url': murl} url = urllib.urlencode(url) return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: if (self.user == '' or self.password == ''): raise Exception() cookie = client.source(self.sign, post=self.post, headers=self.headers, cookie=self.lang, output='cookie') cookie = '%s; %s' % (cookie, self.lang) url = urlparse.urljoin(self.base_link, self.tvsearch_link) result = client.source(url, cookie=cookie) tvshowtitle = cleantitle.get(tvshowtitle) years = ['%s' % str(year)] result = client.parseDOM(result, 'div', attrs={'class': 'index show'}) result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', attrs={'class': 'name'}), client.parseDOM(i, 'span', attrs={'class': 'value'})) 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.get(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) url = urlparse.urlparse(url).path url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: genre = "http://www.imdb.com/title/%s/" % imdb genre = client.request(genre) genre = re.findall("href\s*=\s*['|\"](.+?)['|\"]", genre) genre = [i for i in genre if "/genre/" in i] genre = [i.split("/genre/")[-1].split("?")[0].lower() for i in genre] if not "animation" in genre: raise Exception() query = self.search_link % (urllib.quote_plus(tvshowtitle)) query = urlparse.urljoin(self.base_link, query) result = client.request(query) result = result.decode("iso-8859-1").encode("utf-8") tvshowtitle = cleantitle.get(tvshowtitle) result = client.parseDOM(result, "ol", attrs={"id": "searchresult"})[0] result = client.parseDOM(result, "h2") 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], re.sub("<.+?>|</.+?>", "", i[1])) for i in result] result = [i for i in result if tvshowtitle == cleantitle.get(i[1])] result = result[-1][0] url = urlparse.urljoin(self.base_link, result) url = urlparse.urlparse(url).path 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 url = urlparse.parse_qs(url) url = dict([(i, url[i][0]) if url[i] else (i, '') for i in url]) result = cache.get(self.tvshow_cache, 120) tvshowtitle = cleantitle.get(url['tvshowtitle']) for i in result: if cleantitle.get(tvshowtitle) in cleantitle.get(i[1]): #print("MAM", i) a = 1 result = [ i[0] for i in result if cleantitle.get(tvshowtitle) in cleantitle.get(i[1]) ][0] txts = 's%02de%02d' % (int(season), int(episode)) result = client.source(result) result = client.parseDOM(result, 'li', attrs={'class': 'episode'}) result = [i for i in result if txts in i][0] url = client.parseDOM(result, 'a', ret='href')[0] url = url.encode('utf-8') return url except: return
def check_titles(self, cleaned_titles, found_titles): test = cleaned_titles[0] == cleantitle.get( found_titles[0]) or cleaned_titles[1] == cleantitle.get( found_titles[1]) or cleaned_titles[0] == cleantitle.get( found_titles[1]) or cleaned_titles[1] == cleantitle.get( found_titles[0]) return test
def get_movie(self, imdb, title, year, proxy_options=None, key=None, testing=False): try: variations = [title, title.replace('&','and')] for title in variations: try: t = cleantitle.get(title) q = '/search/%s.html' % (urllib.quote_plus(cleantitle.query(title))) print q q = urlparse.urljoin(self.base_link, q) print q for i in range(3): r = client.request(q, IPv4=True) if not r == None: break r = client.parseDOM(r, '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][0]) for i in r if i[0] and i[1]] r = [i[0] for i in r if t == cleantitle.get(i[1])][:2] r = [(i, re.findall('(\d+)', i)[-1]) for i in r] for i in r: try: y, q = cache.get(self.ymovies_info, 9000, i[1]) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path, '' except: pass except: pass except Exception as e: control.log('Error %s > get_movie %s' % (self.name, e)) return
def episode(self, url, imdb, tvdb, title, premiered, season, episode): try: pages = [] data = urlparse.parse_qs(url) data = dict((i, data[i][0]) for i in data) data.update({'season': season, 'episode': episode, 'title': title, 'premiered': premiered}) season_base = 'S%02dE%02d' % (int(data['season']), int(data['episode'])) query = re.sub('(\\\|/| -|:|;|\*|\?|"|\'|<|>|\|)', '', season_base) tvshowtitle = data['tvshowtitle'] tvshowtitle = re.sub('(\\\|/| -|:|;|\*|\?|"|\'|<|>|\|)', '', tvshowtitle) query = query.replace("&", "and") query = query.replace(" ", " ") query = query.replace(" ", "+") tvshowtitle = tvshowtitle.replace("&", "and") tvshowtitle = tvshowtitle.replace(" ", " ") tvshowtitle = tvshowtitle.replace(" ", "+") start_url = urlparse.urljoin(self.base_link, self.search_link % (tvshowtitle, query)) html = client.request(start_url) results = client.parseDOM(html, 'h2', attrs={'class': 'entry-title'}) for content in results: found_link = client.parseDOM(content, 'a', ret='href')[0] if self.base_link in found_link: if cleantitle.get(data['tvshowtitle']) in cleantitle.get(found_link): if cleantitle.get(season_base) in cleantitle.get(found_link): pages.append(found_link) return pages except: failure = traceback.format_exc() print('ALLRLS - Exception: \n' + str(failure)) return pages
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) query = urlparse.urljoin(self.base_link, self.search_link) query = query % urllib.quote_plus(data['tvshowtitle']) t = cleantitle.get(data['tvshowtitle']) r = client.request(query) r = client.parseDOM(r, 'div', attrs={'class': 'thumb'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title'), re.findall('(\d{4})', i)) for i in r] r = [(i[0][0], i[1][0], i[2][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] url = [ i[0] for i in r if t in cleantitle.get(i[1]) and ('Season %s' % season) in i[1] ][0] url += '?episode=%01d' % int(episode) return url except: return
def get_movie(self, imdb, title, year): try: tk = cache.get(self.putlocker_token, 8) set = self.putlocker_set() rt = self.putlocker_rt(tk + set) sl = self.putlocker_sl() tm = int(time.time() * 1000) headers = {'X-Requested-With': 'XMLHttpRequest'} url = self.search_link post = {'q': title.lower(), 'limit': '20', 'timestamp': tm, 'verifiedCheck': tk, 'set': set, 'rt': rt, 'sl': sl} print("POST",post) post = urllib.urlencode(post) r = client.request(url, post=post, headers=headers, output='') print("R",r) r = json.loads(r) t = cleantitle.get(title) r = [i for i in r if 'year' in i and 'meta' in i] r = [(i['permalink'], i['title'], str(i['year']), i['meta'].lower()) for i in r] r = [i for i in r if 'movie' in i[3]] r = [i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2]][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') print("U",url) return url except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): if url == None: return query = urlparse.urljoin(self.base_link, url) result = client.source(query) result = client.parseDOM(result, 'div', attrs={'class': 'episodes-list'})[0] result = client.parseDOM(result, 'li') r1 = [] for i in result: try: r1.append( (client.parseDOM(i, 'span', attrs={'class': 'column episode-code'})[0], client.parseDOM(i, 'a', ret='href')[0])) except: pass result = [ i for i in r1 if cleantitle.get(i[0]) == cleantitle.get('S%02dE%02d' % (int(season), int(episode))) ] try: url = re.compile('//.+?(/.+)').findall(result[0][1])[0] print("U", url[0]) except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url
def get_movie(self, imdb, title, year): try: query = urlparse.urljoin(self.base_link, self.search_link) query = query % urllib.quote_plus(title) for i in range(5): r = client.request(query) if not r == None: break t = cleantitle.get(title) r = client.parseDOM(r, 'div', attrs={'class': 'col-lg.+?'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'p', attrs={'class': 'c-title.+?'})) for i in r] r = [(i[0][0], i[1][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0] r = [(i[0], i[1], re.findall('(\d{4})', i[1])) for i in r] r = [(i[0], i[1], i[2][-1]) for i in r if len(i[2]) > 0] r = [ i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2] ][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: pass
def get_movie(self, imdb, title, year): try: q = self.search_link % (urllib.quote_plus(title)) r = urlparse.urljoin(self.base_link, q) headers = {'User-Agent': client.agent()} r = client.request(r, headers=headers) r = client.parseDOM(r, 'div', attrs={'class': 'ml-item'}) print("1", r) r = [(client.parseDOM(i, 'a', ret='href')[0], client.parseDOM(i, 'a')[0]) for i in r] r = [(i[0], re.findall('-(\d+)/', i[0])[0], client.parseDOM(i[1], 'h2')[0]) for i in r] r = [i for i in r if cleantitle.get(title) == cleantitle.get(i[2])] for i in r: try: y, q = cache.get(self.muchmovies_info, 9000, i[1]) #print("4",y,q) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path except: pass except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: tk = cache.get(self.movieshd_token, 8) set = self.movieshd_set() rt = self.movieshd_rt(tk + set) sl = self.movieshd_sl() tm = int(time.time() * 1000) headers = {'X-Requested-With': 'XMLHttpRequest'} url = self.search_link post = {'q': tvshowtitle.lower(), 'limit': '20', 'timestamp': tm, 'verifiedCheck': tk, 'set': set, 'rt': rt, 'sl': sl} post = urllib.urlencode(post) r = client.request(url, post=post, headers=headers) r = json.loads(r) t = cleantitle.get(tvshowtitle) r = [i for i in r if 'year' in i and 'meta' in i] r = [(i['permalink'], i['title'], str(i['year']), i['meta'].lower()) for i in r] r = [i for i in r if 'tv' in i[3]] r = [i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2]][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: query = self.tvsearch_link % urllib.quote_plus( cleantitle.query(tvshowtitle)) query = urlparse.urljoin(self.base_link, query) result = str( client.request(query)).decode('iso-8859-1').encode('utf-8') if 'page=2' in result: result += str(client.request(query + '&page=2')).decode( 'iso-8859-1').encode('utf-8') result = client.parseDOM(result, 'div', attrs={'class': 'item'}) tvshowtitle = 'watch' + cleantitle.get(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', ret='title')) 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 for i in result if any(x in i[1] for x in years)] try: result = [(urlparse.urlparse(i[0]).path, i[1]) for i in result] except: pass match = [ i[0] for i in result if tvshowtitle == cleantitle.get(i[1]) and '(%s)' % str(year) in i[1] ] match2 = [i[0] for i in result] match2 = [x for y, x in enumerate(match2) if x not in match2[:y]] if match2 == []: return for i in match2[:5]: try: if len(match) > 0: url = match[0] break result = client.request(urlparse.urljoin( self.base_link, i)) if imdb in str(result): url = i break except: pass 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.search_link) query = query % urllib.quote_plus(title) #for i in range(5): r = client.request(query) # if not r == None: break t = cleantitle.get(title) r = client.parseDOM(r, 'div', attrs = {'class': 'col-lg.+?'}) print("R1",r) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title')) for i in r] r = [(i[0][0], i[1][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0] r = [(i[0], i[1], re.findall('(\d{4})', i[1])) for i in r] r = [(i[0], i[1], i[2][-1]) for i in r if len(i[2]) > 0] r = [i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2]][0] print("R6", r) url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except Exception as e: control.log('ERROR XMOVIES GET %s' % e) return
def get_movie(self, imdb, title, year): try: t = cleantitle.get(title) q = self.search_link_2 % (urllib.quote_plus(cleantitle.query(title))) q = q.replace('+','-') q = urlparse.urljoin(self.base_link, q) r = self.request(q)[0] r = client.parseDOM(r, 'div', attrs = {'class': 'ml-item'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title'), client.parseDOM(i, 'a', ret='data-url')) for i in r] r = [(i[0][0], i[1][0], i[2][0]) for i in r if i[0] and i[1]] #else: # r = zip(client.parseDOM(r, 'a', ret='href', attrs = {'class': 'ss-title'}), client.parseDOM(r, 'a', attrs = {'class': 'ss-title'})) r = [(i[0],i[2]) for i in r if cleantitle.get(t) == cleantitle.get(i[1])][:2] r = [(i[0], re.findall('(\d+)', i[1])[-1]) for i in r] for i in r: try: y, q = cache.get(self.muchmovies_info, 9000, i[1]) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path except: pass except: return
def get_episode(self, url, imdb, tvdb, title, date, season, episode): try: data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) t = cleantitle.get(data['tvshowtitle']) title = data['tvshowtitle'] season = '%01d' % int(season) ; episode = '%01d' % int(episode) year = re.findall('(\d{4})', date)[0] years = [str(year), str(int(year)+1), str(int(year)-1)] r = cache.get(self.ymovies_info_season, 720, title, season) r = [(i[0], re.findall('(.+?)\s+(?:-|)\s+season\s+(\d+)$', i[1].lower())) for i in r] r = [(i[0], i[1][0][0], i[1][0][1]) for i in r if i[1]] r = [i[0] for i in r if t == cleantitle.get(i[1]) and season == '%01d' % int(i[2])][:2] r = [(i, re.findall('(\d+)', i)[-1]) for i in r] for i in r: try: y, q = cache.get(self.ymovies_info, 9000, i[1]) mychk = False years = [str(year),str(int(year) + 1),str(int(year) - 1)] for x in years: if str(y) == x: mychk = True if mychk == False: raise Exception() return urlparse.urlparse(i[0]).path, (episode) except: pass except Exception as e: control.log('Error yesmovies %s' % e) return
def get_movie(self, imdb, title, year): try: query = urlparse.urljoin(self.base_link, self.search_link) query = query % urllib.quote_plus(title) t = cleantitle.get(title) r = client.request(query) r = client.parseDOM(r, 'div', attrs={'id': 'post-\d+'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a', ret='title'), re.findall('(\d{4})', i)) for i in r] r = [(i[0][0], i[1][0], i[2][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] r = [ i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2] ][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def get_movie(self, imdb, title, year): try: t = cleantitle.get(title) q = '/search/%s.html' % (urllib.quote_plus(cleantitle.query(title))) q = urlparse.urljoin(self.base_link, q) for i in range(3): r = client.request(q) if not r == None: break r = client.parseDOM(r, '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][0]) for i in r if i[0] and i[1]] r = [i[0] for i in r if t == cleantitle.get(i[1])][:2] r = [(i, re.findall('(\d+)', i)[-1]) for i in r] for i in r: try: y, q = cache.get(self.ymovies_info, 9000, i[1]) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path except: pass except Exception as e: control.log('Error yesmovies %s' % e) return
def episode(self, url, imdb, tvdb, title, premiered, season, episode): try: if url == None: return url = urlparse.parse_qs(url) url = dict([(i, url[i][0]) if url[i] else (i, '') for i in url]) url['premiered'], url['season'], url['episode'] = premiered, season, episode try: clean_title = cleantitle.geturl(url['tvshowtitle']) + '-season-%d' % int(season) search_url = urlparse.urljoin(self.base_link, self.search_link % clean_title.replace('-', '+')) r = cache.get(client.request, 1, search_url) r = dom_parser2.parse_dom(r, 'li', {'class': 'item'}) r = [(dom_parser2.parse_dom(i, 'a', attrs={'class': 'title'}), dom_parser2.parse_dom(i, 'div', attrs={'class': 'status'})[0]) for i in r if i] r = [(i[0][0].attrs['href'], re.findall('(.+?)</b><br', i[0][0].content, re.DOTALL)[0], re.findall('(\d+)', i[1].content)[0]) for i in r if i] r = [(i[0], i[1].split(':')[0], i[2]) for i in r if (cleantitle.get(i[1].split(':')[0]) == cleantitle.get(url['tvshowtitle']) and i[2] == str( int(season)))] url = r[0][0] except: pass data = client.request(url) data = client.parseDOM(data, 'div', attrs={'id': 'details'}) data = zip(client.parseDOM(data, 'a'), client.parseDOM(data, 'a', ret='href')) url = [(i[0], i[1]) for i in data if i[0] == str(int(episode))] return url[0][1] except: return
def get_movie(self, imdb, title, year): try: t = cleantitle.get(title) headers = {'X-Requested-With': 'XMLHttpRequest'} query = urllib.urlencode({'keyword': title}) url = urlparse.urljoin(self.base_link, self.search_link) r = client.request(url, post=query, headers=headers) #print("1",r) r = json.loads(r)['content'] #print ("2",r) r = zip( client.parseDOM(r, 'a', ret='href', attrs={'class': 'ss-title'}), client.parseDOM(r, 'a', attrs={'class': 'ss-title'})) r = [i[0] for i in r if cleantitle.get(t) == cleantitle.get(i[1])][:2] r = [(i, re.findall('(\d+)', i)[-1]) for i in r] #print ("3",r) for i in r: try: y, q = cache.get(self.muchmovies_info, 9000, i[1]) #print("4",y,q) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path except: pass except: return
def get_movie(self, imdb, title, year): try: # query = self.search_link % (urllib.quote_plus(cleantitle.query(title)), str(int(year)-1), str(int(year)+1)) # query = urlparse.urljoin(self.base_link, query) query = self.search_link % urllib.quote_plus(cleantitle.query(title)) query = urlparse.urljoin(self.base_link, query) result = str(self.request(query, "movie_table")) if "page=2" in result or "page%3D2" in result: result += str(self.request(query + "&page=2", "movie_table")) result = client.parseDOM(result, "div", attrs={"class": "movie_table"}) title = cleantitle.get(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, "img", ret="alt")) 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 for i in result if any(x in i[1] for x in years)] try: result = [(urlparse.parse_qs(urlparse.urlparse(i[0]).query)["q"][0], i[1]) for i in result] except: pass try: result = [(urlparse.parse_qs(urlparse.urlparse(i[0]).query)["u"][0], i[1]) for i in result] except: pass try: result = [(urlparse.urlparse(i[0]).path, i[1]) for i in result] except: pass match = [i[0] for i in result if title == cleantitle.get(i[1]) and "(%s)" % str(year) in i[1]] match2 = [i[0] for i in result] match2 = [x for y, x in enumerate(match2) if x not in match2[:y]] if match2 == []: return for i in match2[:5]: try: if len(match) > 0: url = match[0] break result = self.request(urlparse.urljoin(self.base_link, i), "link_name") if imdb in str(result): url = i break except: pass url = client.replaceHTMLCodes(url) url = url.encode("utf-8") return url except: return
def name_matches(self, names_found, title, year): for name in names_found: name = name.strip().encode('utf-8') name = name.replace('’','') # if ends with year clean_found_title = cleantitle.get(name) clean_title = cleantitle.get(title) # sometimes they add year to title so we need to check thet if clean_found_title == clean_title or clean_found_title == (clean_title + year): return True return False
def get_show(self, imdb, tvdb, tvshowtitle, year): try: query = self.tvsearch_link % urllib.quote_plus(cleantitle.query(tvshowtitle)) query = urlparse.urljoin(self.base_link, query) result = str(client.request(query, 'item')) if 'page=2' in result or 'page%3D2' in result: result += str(client.request(query + '&page=2', 'item')) result = client.parseDOM(result, 'div', attrs = {'class': 'item'}) tvshowtitle = 'watch' + cleantitle.get(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', ret='title')) 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 for i in result if any(x in i[1] for x in years)] print "Resu", result r = [] for i in result: u = i[0] try: u = urlparse.parse_qs(urlparse.urlparse(u).query)['u'][0] except: pass try: u = urlparse.parse_qs(urlparse.urlparse(u).query)['q'][0] except: pass r += [(u, i[1])] match = [i[0] for i in r if tvshowtitle == cleantitle.get(i[1]) and '(%s)' % str(year) in i[1]] match2 = [i[0] for i in r] match2 = [x for y,x in enumerate(match2) if x not in match2[:y]] if match2 == []: return for i in match2[:5]: try: if len(match) > 0: url = match[0] ; break print "i",i r = client.request(urlparse.urljoin(self.base_link, i), 'tv_episode_item') print "r",imdb print "r",r if imdb in str(r): url = i break except: pass url = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') print "URL",url return url except: return
def get_movie(self, imdb, title, year): try: t = cleantitle.get(title) query = self.movie_link % cleantitle.query10(title) query = urlparse.urljoin(self.base_link, query) control.log('PELISPEDIA URL %s' % query) result = client.request(query).decode('gb18030').encode('utf-8') result = client.parseDOM(result, 'div', attrs={'id': 'player'})[0] r = [(re.findall('(.*?)<a', client.parseDOM(result, 'center')[0])[0].strip(), re.findall('>\((.*?)\)</a>', client.parseDOM(result, 'center')[0])[0])] r = [i for i in r if t == cleantitle.get(i[0]) and year == (i[1])][0] return query except: return
def pelispedia_tvcache(self): result = [] for i in range(0, 15): try: u = self.search2_link % str(i * 48) u = urlparse.urljoin(self.base_link, u) r = str(client.request(u)) r = re.sub(r"[^\x00-\x7F]+", "", r) r = r.split("<li class=") r = [ (client.parseDOM(i, "a", ret="href"), client.parseDOM(i, "i"), re.findall("\((\d{4})\)", i)) for i in r ] r = [ (i[0][0], re.sub("\(|\)", "", i[1][0]), i[2][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0 ] if len(r) == 0: break result += r except: pass if len(result) == 0: return result = [(re.sub("http.+?//.+?/", "/", i[0]), cleantitle.get(i[1]), i[2]) for i in result] return result
def get_movie(self, imdb, title, year): mytitle = title try: t = 'http://www.imdb.com/title/%s' % imdb t = client.source(t, headers={'Accept-Language': 'es-ES'}) t = client.parseDOM(t, 'title')[0] t = re.sub('(?:\(|\s)\d{4}.+', '', t).strip() mytitle = t except: pass try: t = cleantitle.get(mytitle) query = self.search3_link % urllib.quote_plus(cleantitle.query2(mytitle)) query = urlparse.urljoin(self.base_link, query) result = client2.http_get(query) result = re.sub(r'[^\x00-\x7F]+','', result) r = result.split('<li class=') r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'i'), re.findall('\((\d{4})\)', i)) for i in r] r = [(i[0][0], re.sub('\(|\)','', i[1][0]), i[2][0]) for i in r if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2]) > 0] r = [i[0] for i in r if year == i[2]][0] try: url = re.findall('//.+?(/.+)', r)[0] except: url = r url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: pass
def get_episode(self, url, imdb, tvdb, title, premiered, season, episode): return None try: data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) tvshowtitle = cleantitle.get(data['tvshowtitle']) year = re.findall('(\d{4})', premiered)[0] season = '%01d' % int(season) episode = '%01d' % int(episode) result = cache.get(self.pubfilm_tvcache, 120) result = [i for i in result if tvshowtitle == i[1]] result = [i[0] for i in result if season == '%01d' % int(i[2])] result = [(i, re.findall('(\d{4})', [x for x in i.split('/') if not x == ''][-1])[0]) for i in result] result = [i[0] for i in result if i[1] == year][0] url = urlparse.urljoin(self.base_link, result) url = urlparse.urlparse(url).path url += '?episode=%01d' % int(episode) url = url.encode('utf-8') return url except: return