def 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: return
def __search(self, title, year, season='0', episode=False): try: query = self.search_link % (urllib.quote_plus(cleantitle.query(title))) query = urlparse.urljoin(self.base_link, query) t = cleantitle.get(title) y = ['%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1), '0'] r = client.request(query) r = client.parseDOM(r, 'ul', attrs={'class': 'products row'}) r = client.parseDOM(r, 'div', attrs={'class': 'box-product clearfix'}) r = client.parseDOM(r, 'h3', attrs={'class': 'title-product'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a')) for i in r] r = [(i[0][0], i[1][0].lower()) 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[2][0][0] if len(i[2]) > 0 else i[1], i[2][0][1] if len(i[2]) > 0 else '0') for i in r] r = [(i[0], i[1], i[2], re.findall('(.+?)\s+(?:staf+el|s)\s+(\d+)', i[1])) for i in r] r = [(i[0], i[3][0][0] if len(i[3]) > 0 else i[1], i[2], i[3][0][1] if len(i[3]) > 0 else '0') for i in r] r = [(i[0], i[1].replace(' hd', ''), i[2], i[3]) for i in r] r = [i[0] for i in r if t == cleantitle.get(i[1]) and i[2] in y and int(i[3]) == int(season)][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') url = url.replace('-info', '-stream') if episode: url = urlparse.urlparse(url).path + '?episode=%s' % int(episode) return url except: return
def __search(self, search_link, imdb, title): try: query = search_link % (urllib.quote_plus(cleantitle.query(title))) query = urlparse.urljoin(self.base_link, query) t = cleantitle.get(title) r = client.request(query) r = client.parseDOM(r, 'div', attrs={'class': 'big-list'}) r = client.parseDOM(r, 'table', attrs={'class': 'row'}) r = client.parseDOM(r, 'td', attrs={'class': 'list-name'}) 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] for i in r if t == cleantitle.get(i[1])][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') r = client.request(urlparse.urljoin(self.base_link, url)) r = client.parseDOM(r, 'a', attrs={'href': '[^\'"]+/tt\d+[^\'"]+'}, ret='href') r = [re.findall('.+?(tt\d+).*?', i) for i in r] r = [i[0] for i in r if len(i) > 0] return url if imdb in r else None except: return
def __search(self, title, year): try: r = client.request(self.base_link) r = re.findall('sL10n\s*=\s*({.*?});', r)[0] r = json.loads(r)['nonce'] query = self.search_link % (urllib.quote_plus(cleantitle.query(title)), r) query = urlparse.urljoin(self.base_link, query) t = cleantitle.get(title) y = ['%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1), '0'] r = client.request(query) r = json.loads(r) r = [(i, r[i].get('url', ''), r[i].get('title', ''), r[i].get('extra', {}).get('names', ''), r[i].get('extra', {}).get('date', '0')) for i in r] r = [(i[0], i[1], client.replaceHTMLCodes(i[2]), client.replaceHTMLCodes(i[3]), i[4]) for i in r] r = [i[1] for i in r if t == cleantitle.get(i[2]) or t == cleantitle.get(i[3]) and i[4] in y][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def movie(self, imdb, title, year): try: t = cleantitle.get(title) y = [ '(%s)' % str(year), '(%s)' % str(int(year) + 1), '(%s)' % str(int(year) - 1) ] q = self.search_link % (urllib.quote_plus(cleantitle.query(title)), str(int(year) - 1), str(int(year) + 1)) q = urlparse.urljoin(self.base_link, q) r = proxy.request(q, 'movie_table') r = client.parseDOM(r, 'div', attrs={'class': 'movie_table'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'h1')) for i in r] r = [(i[0][0], i[1][0]) for i in r if i[0] and i[1]] r = [(i[0], client.parseDOM(i[1], 'a')) for i in r] r = [(i[0], i[1][0]) for i in r if i[1]] r = [i for i in r if any(x in i[1] for x in y)] r = [(proxy.parse(i[0]), i[1]) for i in r] match = [ i[0] for i in r if t == 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 match: url = match[0] break r = proxy.request(urlparse.urljoin(self.base_link, i), 'movie25') r = re.findall('(tt\d+)', r) if imdb in r: url = i break except: pass url = urlparse.urljoin(self.base_link, url) url = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: pass
def tvshow(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(proxy.request(query, 'item')) if 'page=2' in result or 'page%3D2' in result: result += str(proxy.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)] r = [(proxy.parse(i[0]), i[1]) for i in result] 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 r = proxy.request(urlparse.urljoin(self.base_link, i), 'tv_episode_item') r = re.findall('(tt\d+)', r) if imdb in r: url = i break except: pass url = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def __search(self, title, type, year, season=0, episode=False): try: query = self.search_link % ( type, year, urllib.quote_plus(cleantitle.query(title))) query = urlparse.urljoin(self.base_link, query) t = cleantitle.get(title) r = client.request(query) r = client.parseDOM(r, 'div', attrs={'class': 'ml-items'}) r = client.parseDOM(r, 'div', attrs={'class': 'ml-item'}) r = [(client.parseDOM(i, 'a', attrs={'class': 'ml-name'}, ret='href'), client.parseDOM(i, 'a', attrs={'class': 'ml-name'})) for i in r] r = [(i[0][0], re.sub('<.+?>|</.+?>', '', i[1][0]).strip()) for i in r if len(i[0]) > 0 and len(i[1]) > 0] r = [(i[0], i[1], re.findall('(.+?)\s+(?:staf+el|s)\s+(\d+)', i[1].lower())) for i in r] r = [(i[0], i[2][0][0] if len(i[2]) > 0 else i[1], i[2][0][1] if len(i[2]) > 0 else '0') for i in r] r = [ i[0] for i in r if t == cleantitle.get(i[1]) and int(i[2]) == int(season) ][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') if episode: query = urlparse.urljoin(self.base_link, url) r = client.request(query) r = client.parseDOM(r, 'div', attrs={'class': 'season-list'}) r = client.parseDOM(r, 'li') 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[1]) > 0 and int(i[1][0]) == int(episode)] url = re.findall('(?://.+?|)(/.+)', r[0][0])[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def movie(self, imdb, title, year): try: t = cleantitle.get(title) y = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1), '0'] q = self.search_link % urllib.quote_plus(cleantitle.query(title)) q = urlparse.urljoin(self.base_link, q) r = proxy.request(q, 'flag') r = client.parseDOM(r, 'TR', attrs = {'id': 'coverPreview.+?'}) r = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'a'), client.parseDOM(i, 'div', attrs = {'style': '.+?'}), client.parseDOM(i, 'img', ret='src')) for i in r] r = [(i[0][0].strip(), i[1][0].strip(), i[2], i[3]) for i in r if i[0] and i[1] and i[3]] r = [(i[0], i[1], [x for x in i[2] if x.isdigit() and len(x) == 4], i[3]) for i in r] r = [(i[0], i[1], i[2][0] if i[2] else '0', i[3]) for i in r] r = [i for i in r if any('us_flag_' in x for x in i[3])] r = [(i[0], i[1], i[2], [re.findall('(\d+)', x) for x in i[3] if 'smileys' in x]) for i in r] r = [(i[0], i[1], i[2], [x[0] for x in i[3] if x]) for i in r] r = [(i[0], i[1], i[2], int(i[3][0]) if i[3] else 0) for i in r] r = sorted(r, key=lambda x: x[3])[::-1] r = [(i[0], i[1], i[2], re.findall('\((.+?)\)$', i[1])) for i in r] r = [(i[0], i[1], i[2]) for i in r if not i[3]] r = [i for i in r if i[2] in y] r = [(proxy.parse(i[0]), i[1], i[2]) for i in r] match = [i[0] for i in r if t == cleantitle.get(i[1]) and year == i[2]] 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 match: url = match[0] ; break r = proxy.request(urlparse.urljoin(self.base_link, i), 'tablemoviesindex2') r = re.findall('(tt\d+)', r) if imdb in r: url = i ; break except: pass url = urlparse.urljoin(self.base_link, url) url = re.findall('(?://.+?|)(/.+)', url)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def tvshow(self, imdb, tvdb, tvshowtitle, year): try: query = base64.b64decode(self.search_link) % urllib.quote_plus( cleantitle.query(tvshowtitle)) result = self.request(query) tvshowtitle = cleantitle.get(tvshowtitle) years = [ '%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1) ] result = [ i for i in result if any(x in str(i['year']) for x in years) ] match = [ i['href'] for i in result if tvshowtitle == cleantitle.get(i['name']) ] match = [ i['href'] for i in result if tvshowtitle == cleantitle.get(i['name']) and str(year) == str(i['year']) ] match2 = [i['href'] 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 if imdb in str(self.request(i)[0]['imdb']): url = i break except: pass url = '/' + url.split('/json/')[-1] url = url.encode('utf-8') return url except: return
def movie(self, imdb, title, year): try: t = cleantitle.get(title) q = self.search_link_2 % (urllib.quote_plus( cleantitle.query(title))) q = urlparse.urljoin(self.base_link, q) h = {'X-Requested-With': 'XMLHttpRequest'} u = urlparse.urljoin(self.base_link, self.search_link) p = urllib.urlencode({'keyword': title}) r = self.request(u, headers=h, post=p)[0] try: r = json.loads(r) except: r = None if r == None: r = self.request(q, headers=None, post=None)[0] 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]] else: r = 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] for i in r: try: y, q = cache.get(self.onemovies_info, 9000, i[1]) if not y == year: raise Exception() return urlparse.urlparse(i[0]).path except: pass except: return
def ymovies_info_season(self, title, season): try: q = '%s Season %s' % (cleantitle.query(title), season) q = '/search/%s.html' % (urllib.quote_plus(q)) 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]] return r except: return
def __search(self, imdb, title, year): try: query = self.search_link % (urllib.quote_plus( cleantitle.query(title))) query = urlparse.urljoin(self.base_link, query) t = cleantitle.get(title) y = [ '%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1), '0' ] r = client.request(query) r = client.parseDOM(r, 'div', attrs={'class': 'main-area'}) r = client.parseDOM(r, 'li') r = client.parseDOM(r, 'div', attrs={'class': 'table-ui1'}) r = [(client.parseDOM(i, 'a', attrs={'title': ''}, ret='href'), client.parseDOM(i, 'a', attrs={'title': ''}), client.parseDOM(i, 'a', attrs={'href': '[^\'"]+/tt\d+[^\'"]+'}, ret='href')) for i in r] r = [(i[0][0], i[1][0].lower(), re.findall('.+?(tt\d+).*?', 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], i[1], i[2][0]) for i in r if len(i[2]) > 0] r = [(i[0], i[1], re.findall('(.+?) \((\d{4})\)?', i[1]), i[2]) for i in r] r = [(i[0], i[2][0][0] if len(i[2]) > 0 else i[1], i[2][0][1] if len(i[2]) > 0 else '0', i[3]) for i in r] r = [ i[0] for i in r if t == cleantitle.get(i[1]) and i[2] in y and i[3] == imdb ][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, 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 = proxy.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 = proxy.parse(url) url = url.strip('/').split('/')[-1] url = url.encode('utf-8') return url except: return
def __search(self, title): try: query = self.search_link % (urllib.quote_plus( cleantitle.query(title))) query = urlparse.urljoin(self.base_link, query) t = cleantitle.get(title) r = client.request(query) r = client.parseDOM(r, 'article') r = [(client.parseDOM(i, 'a', attrs={'class': 'rb'}, ret='href'), client.parseDOM(i, 'a', attrs={'class': 'rb'})) 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] for i in r if t == cleantitle.get(i[1])][0] url = re.findall('(?://.+?|)(/.+)', r)[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def __search(self, title, year, season=0, episode=False): try: query = self.search_link % (urllib.quote_plus( cleantitle.query(title))) query = urlparse.urljoin(self.base_link, query) t = cleantitle.get(title) y = [ '%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1), '0' ] r = client.request(query) r = client.parseDOM(r, 'div', attrs={'class': 'container'}) r = client.parseDOM(r, 'div', attrs={'class': 'ml-item-content'}) f = [] for i in r: _url = client.parseDOM(i, 'a', attrs={'class': 'ml-image'}, ret='href')[0] _title = re.sub('<.+?>|</.+?>', '', client.parseDOM(i, 'h6')[0]).strip() try: _title = re.search('(.*?)\s(?:staf+el|s)\s*(\d+)', _title, re.I).group(1) except: pass _season = '0' _year = re.findall( 'calendar.+?>.+?(\d{4})', str( client.parseDOM(i, 'ul', attrs={'class': 'item-params'}))) _year = _year[0] if len(_year) > 0 else '0' if season > 0: s = client.parseDOM(i, 'span', attrs={'class': 'season-label'}) s = client.parseDOM(s, 'span', attrs={'class': 'el-num'}) if s: _season = s[0].strip() if t == cleantitle.get(_title) and _year in y and int( _season) == int(season): f.append(_url) r = f url = re.findall('(?://.+?|)(/.+)', r[0])[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') if episode: r = client.request(urlparse.urljoin(self.base_link, url)) r = client.parseDOM(r, 'div', attrs={'class': 'season-list'}) r = client.parseDOM(r, 'li') 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[1]) > 0 and int(i[1][0]) == int(episode)] url = re.findall('(?://.+?|)(/.+)', r[0][0])[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return