def get(self, response, referrer_url, skipEps=False): req = Request() movie = { 'group': {}, 'episode': [], 'links': [], } # soup = BeautifulSoup(response, "html.parser") # get captcha key captcha_key = re.search(r"var recaptcha_key='(.*?)';", response).group(1) respon = req.get( 'https://www.google.com/recaptcha/api2/anchor', params={ "ar": 1, "k": captcha_key, "co": "aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbTo0NDM.", # "hl": "en", "v": "eWmgPeIYKJsH2R2FrgakEIkq", "size": "invisible", # "cb": "fo0mghgojurx", }) token = re.search('id="recaptcha-token" value="(.*?)"', respon).group(1) m_id = re.search(r'id="watch" data-id="(.*?)"', response).group(1) ep_id = re.search(r'data-epid="(.*?)"', response).group(1) respon = req.get('https://fmovies.to/ajax/film/servers', params={ 'id': m_id, 'episode': ep_id, 'token': token }) helper.log(respon) return movie
def get(self, response, page): channel = {'page': page, 'page_patten': None, 'movies': []} soup = BeautifulSoup(response, "html.parser") # get total page last_page = soup.select_one( 'div.ah-pagenavi > ul.pagination > li.last') helper.log("*********************** Get pages ") if last_page is not None: page = last_page.text.strip() channel['page'] = int(page) for movie in soup.select( 'div.ah-row-film > div.ah-col-film > div.ah-pad-film > a'): title = movie.select_one('span.name-film').find( text=True, recursive=False).strip() type = movie.select_one('span.number-ep-film').text.strip() label = "[%s] %s" % (type, title) thumb = movie.select_one('img').get('src') channel['movies'].append({ 'id': movie.get('href'), 'label': py2_encode(label), 'title': py2_encode(title), 'realtitle': py2_encode(title), 'thumb': thumb, 'type': py2_encode(type) }) return channel
def get_search(self, response, page=1): channel = { 'page': page, 'page_patten': None, 'movies': [] } soup = BeautifulSoup(response, "html.parser") # get total page last_page = soup.select_one('div.PageNav') helper.log("*********************** Get pages ") if last_page is not None: channel['page'] = int(last_page.get('data-last')) for movie in soup.select('li.searchResult'): tag = movie.select_one('div.listBlock.main div.titleText > h3.title > a') title = py2_encode(tag.text).strip() thumb = None channel['movies'].append({ 'id': tag.get('href'), 'label': title, 'title': title, 'realtitle': title, 'thumb': thumb, 'type': None }) return channel
def get_link(self, response, domain, originURL, request): helper.log( "***********************Get Movie Link*****************************" ) movie = { 'group': {}, 'episode': [], 'links': [], } # get server list soup = BeautifulSoup(response, "html.parser") servers = soup.select('div#clicksv > span.btn') m_id = re.search(r'var id_ep = (.*)', response).group(1) jobs = [{ 'url': '%s/player/player.php' % domain, 'parser': Parser.extract_link, 'params': { 'ID': m_id, 'SV': i.get('id').replace('sv', '') } } for i in servers] group_links = AsyncRequest(request=request).post(jobs) for link in group_links: if link: movie['links'].append({ 'link': link, 'title': 'Link %s' % 'HD', 'type': 'Unknown', 'originUrl': originURL, 'resolve': False }) return movie
def get_link(self, response, domain, referrer_url, request): helper.log( "***********************Get Movie Link*****************************" ) movie = { 'group': {}, 'episode': [], 'links': [], } # get server list soup = BeautifulSoup(response, "html.parser") return movie
def get_link(self, response, domain, referrer_url, request): helper.log( "***********************Get Movie Link*****************************" ) movie = { 'group': {}, 'episode': [], 'links': [], } # filmInfo.episodeID = parseInt('201326'); # filmInfo.filmID = parseInt('15586'); # filmInfo.playTech = 'auto'; ep_id = re.search(r'''filmInfo.episodeID = parseInt\('(.*?)'\);''', response).group(1) film_id = re.search(r'''filmInfo.filmID = parseInt\('(.*?)'\);''', response).group(1) play_tech = re.search(r'''filmInfo.playTech = '(.*?)';''', response).group(1) response = Request().post('{}/ajax'.format(domain), params={ 'NextEpisode': 1, 'EpisodeID': ep_id, 'filmID': film_id, 'playTech': play_tech }, headers={'referer': referrer_url}) link = LinkExtractor.iframe(response) if link: movie['links'].append({ 'link': link, 'title': 'Link HD', 'type': 'stream', 'resolve': False, 'originUrl': referrer_url }) # if links: # for link in links: # movie['links'].append({ # 'link': link.get('file'), # 'title': 'Link %s' % link.get('label'), # 'type': link.get('label'), # 'resolve': False, # 'originUrl': referrer_url # }) return movie
def getChannel(self, channel, page=1): channel = channel.replace(self.domain, "") helper.log(channel) if page > 1: if channel.endswith(".html"): url = re.sub(r'\d+.html', '{}.html'.format(page), ('%s%s' % (self.domain, channel))) else: url = '%s/%s&page=%d' % (self.domain, channel, page) helper.log(url) else: url = '%s/%s' % (self.domain, channel) response = self.request.get(url, headers=h) return Channel().get(response, page)
def get(self, response, page): channel = {'page': page, 'page_patten': None, 'movies': []} soup = BeautifulSoup(response, "html.parser") # get total page last_page = soup.select_one('ul.ipsPagination') helper.log("*********************** Get pages ") if last_page is not None: page = last_page.get('data-pages') channel['page'] = int(page) for movie in soup.select('div.esnList_item > div.esnList_item_border'): thumb = movie.select_one('div.esnList_item_img > a > img').get( 'src') title = movie.select_one( 'ul.ipsDataList > li.ipsDataItem > span > a').get( 'title').strip() type = "" realtitle = "" if movie.select_one('div.cfTop') is not None: type = movie.select_one('div.cfTop > img').get('src').strip() type = re.search('ChatLuong/(.*).png', type).group(1) if movie.select_one('div.ipsType_light') is not None: realtitle = movie.select_one('div.ipsType_light').text.strip() if realtitle is not None: label = "[%s] %s - %s" % (type, title, realtitle) else: label = "[%s] %s" % (type, title) channel['movies'].append({ 'id': movie.select_one('div.esnList_item_img > a').get('href'), 'label': py2_encode(label), 'title': py2_encode(title), 'realtitle': py2_encode(realtitle), 'thumb': thumb, 'type': py2_encode(type) }) return channel
def get(self, response, page=1, domain=''): channel = { 'page': page, 'page_patten': None, 'movies': [] } soup = BeautifulSoup(response, "html.parser") # get total page last_page = soup.select_one('div.PageNav') helper.log("*********************** Get pages ") if last_page is not None: channel['page'] = int(last_page.get('data-last')) jobs = [] for movie in soup.select('li.discussionListItem'): # if 'sticky' in movie.get('class'): continue tag = movie.select_one('div.listBlock.main a.PreviewTooltip') try: title = py2_encode(tag.text.strip()) thumb = None movie = { 'id': tag.get('href'), 'label': title, 'title': title, 'intro': title, 'realtitle': title, 'thumb': thumb, 'type': None } if 'true' in helper.getSetting('hdvietnam.extra'): jobs.append({ 'url': '%s/%s' % (domain, movie['id']), 'parser': Parser.parse_post, 'args': movie }) else: channel['movies'].append(movie) except: helper.log(tag) if 'true' in helper.getSetting('hdvietnam.extra'): channel['movies'] = AsyncRequest(thread=10).get(jobs) return channel
def get(self, response, url, skipEps=False): movie = { 'group': {}, 'episode': [], 'links': [], } soup = BeautifulSoup(response, "html.parser") self.originURL = url try: error = py2_encode( soup.select_one( 'div.error-not-available div.alert-subheading').find( text=True, recursive=False)) if error: helper.message(error, 'Not Found') return movie except: pass # get episode if possible servers = soup.select('div.list-server > div.server.clearfix') if skipEps is False and len(servers) > 0: helper.log( "***********************Get Movie Episode*****************************" ) found = False items = self.get_server_list(servers) if items is not None and len(items) > 0: movie['group'] = items found = True else: found = False if found is False: servers = soup.select('ul.server-list > li.backup-server') movie['group'] = self.get_server_list(servers) else: movie['group']['phimmoi'] = [{ 'link': self.originURL, 'title': 'Unknown link' }] return movie
def get(self, response, page): channel = {'page': page, 'page_patten': None, 'movies': []} soup = BeautifulSoup(response, "html.parser") # get total page pages = soup.select_one('ul.pagination') helper.log("*********************** Get pages ") m = re.findall(r'(page)?[/|=](\d+)(.html)?', str(pages)) if m: m = [int(x[1]) for x in m] channel['page'] = max(m) for movie in soup.select('ul#movie-last-movie > li a'): realtitle = "" title = movie.select_one('div.movie-title-1').text.strip() type = "" if movie.select_one('span.ribbon') is not None: type = movie.select_one('span.ribbon').text.strip() if movie.select_one('span.movie-title-2') is not None: realtitle = movie.select_one('span.movie-title-2').text.strip() if realtitle: label = "[%s] %s - %s" % (type, title, realtitle) else: realtitle = title label = "[%s] %s" % (type, title) thumb = re.search( r"background-image:url\('(.*)'\)", movie.select_one('div.public-film-item-thumb').get( 'style')).group(1) channel['movies'].append({ 'id': text(movie.get('href')), 'label': text(label), 'title': text(title), 'realtitle': text(realtitle), 'thumb': thumb, 'type': text(type) }) return channel
def get(self, response, page): channel = { 'page': page, 'page_patten': None, 'movies': [] } soup = BeautifulSoup(response, "html.parser") # get total page pages = soup.select('ul.pagination > li > a') helper.log("*********************** Get pages ") for item in pages: if item.text.strip() == py2_encode("Trang kế →"): channel['page'] = int(page)+1 for movie in soup.select('ul.list-movie > li > a'): title = movie.select_one('span.movie-title-1').text.strip() type = "" if movie.select_one('span.ribbon') is not None: type = movie.select_one('span.ribbon').text.strip() if movie.select_one('span.movie-title-2') is not None: realtitle = movie.select_one('span.movie-title-2').text.strip() if realtitle is not None: label = "[%s] %s - %s" % (type, title, realtitle) else: label = "[%s] %s" % (type, title) thumb = re.search('url\((.*)\);', movie.select_one('div.movie-thumbnail').get('style')).group(1) channel['movies'].append({ 'id': py2_encode(movie.get('href')), 'label': py2_encode(label), 'title': py2_encode(title), 'realtitle': py2_encode(realtitle), 'thumb': thumb, 'type': py2_encode(type), }) return channel
def decode(self, link): r = base64.b64decode(link).decode('utf8') helper.log(r) r = r.replace("https://bit.ly/2zE7Kmg?test=", "") r = r.replace("https://bit.ly/2zE7Kmg?temp=", "") r = r.replace("ms.com?test=", "") rep_text = re.findall(r'(.*?)(\d)(\d.mp4/)+', r) if len(rep_text) > 0: rep_text = rep_text[0][0] + rep_text[0][1] r = r.replace('%s1.mp4/' % rep_text, 'https://3.bp.blogspot.com/') r = r.replace('%s2.mp4/' % rep_text, 'https://video.xx.fbcdn.net/') r = r.replace('%s3.mp4/' % rep_text, 'v/t42.9040-2/') r = r.replace('%s4.mp4/' % rep_text, 'https://lh3.googleusercontent.com/') r = r.replace('%s5.mp4/' % rep_text, '=m37') r = r.replace('%s6.mp4/' % rep_text, '=m22') r = r.replace('%s7.mp4/' % rep_text, '=m18') return r
def get(self, response, page): channel = {'page': page, 'page_patten': None, 'movies': []} soup = BeautifulSoup(response, "html.parser") # get total page next_page = soup.select_one('a.more-btn.yellow-btn.btn-nav') helper.log("*********************** Get pages ") if next_page is not None: channel['page'] = int(page) + 1 for movie in soup.select('div.flex-wrap-movielist > a.movie-item'): title = movie.select_one('div.pl-carousel-content h6').text.strip() realtitle = movie.select_one( 'div.pl-carousel-content p').text.strip() type = movie.select_one('div.badget-eps') if type: type = type.text.strip() elif movie.select_one('div.pl-carousel-badget'): type = movie.select_one('div.pl-carousel-badget').text.strip() else: type = "HD" label = "[%s] %s - %s" % (type, title, realtitle) thumb = movie.select_one('div.img').get('data-original') channel['movies'].append({ 'id': movie.get('href'), 'label': py2_encode(label), 'title': py2_encode(title), 'realtitle': py2_encode(realtitle), 'thumb': thumb, 'type': py2_encode(type), # 'intro': movie.select_one('div.des > small').text.strip().encode("utf-8"), }) return channel
def extract_link(response, args=None): url = LinkExtractor.iframe(response) if url and 'short.icu' not in url: return url elif re.search(r'atob\(', response): cipher_text = re.search(r'atob\("(.*?)"\)', response).group(1) enc_data = json.loads(base64.b64decode(cipher_text)) # cipher_text = 'Salted__{}{}'.format( # codecs.decode(enc_data['s'], 'hex'), # base64.b64decode(enc_data['ct']) # ) cipher_text = b'Salted__' + bytearray.fromhex( enc_data['s']) + base64.b64decode(enc_data['ct']) cipher_text = base64.b64encode(cipher_text) url = CryptoAES().decrypt(cipher_text, 'caphedaklak').replace( '\\', '').replace('"', '') if url: return url else: helper.log(text(response)) return None
def get(self, response, page): channel = { 'page': page, 'page_patten': None, 'movies': [] } soup = BeautifulSoup(response, "html.parser") # get total page last_page = soup.select('p.pages > a.pagelink') helper.log("*********************** Get pages ") if len(last_page) > 1: channel['page'] = int(last_page[-1].text.strip()) for movie in soup.select('ul.list-movie > li.movie-item > a.block-wrapper'): tag = movie.select_one('div.movie-meta') title = tag.select_one('span.movie-title-1').text.strip() realtitle = tag.select_one('span.movie-title-2').text.strip() thumb = re.search(r':url\((.*?)\);', movie.select_one('div.movie-thumbnail').get('style')).group(1) type = tag.select_one('span.movie-title-chap').text.strip() label = "[%s] %s" % (type, title) intro = "" channel['movies'].append({ 'id': movie.get('href'), 'label': py2_encode(label), 'title': py2_encode(title), 'realtitle': py2_encode(realtitle), 'thumb': thumb, 'type': py2_encode(type), 'intro': py2_encode(intro), }) return channel
def get_link(self, response, url, request, domain): helper.log( "***********************Get Movie Link*****************************" ) movie = { 'group': {}, 'episode': [], 'links': [], } filmid = re.search(r'filmID\s?=\s?parseInt\((\d+)\);', response).group(1) epid = re.search(r'episodeID\s?=\s?parseInt\((\d+)\);', response).group(1) svid = re.search(r'svID\s?=\s?parseInt\((\d+)\);', response).group(1) ajax_url = '{}/ajax/player'.format(domain) resp = request.post(ajax_url, params={ 'id': filmid, 'ep': epid, 'sv': svid, }) frame_url = urlparse(LinkExtractor.iframe(resp)) movie_url = parse_qs(frame_url.query).get('url')[0] movie['links'].append({ 'link': movie_url, 'title': 'Link {}'.format('HD'), 'type': 'hls', 'resolve': False, 'originUrl': url }) return movie
def get_link(self, response, url, request): helper.log( "***********************Get Movie Link*****************************" ) movie = { 'group': {}, 'episode': [], 'links': [], } self.originURL = url url = self.get_token_url(response) response = Request().get(url) self.key = self.get_decrypt_key(response) self.key if not self.key: return movie jsonresponse = re.search("_responseJson='(.*)';", response).group(1) jsonresponse = json.loads(py2_decode(jsonresponse)) # if jsonresponse['medias']: # media = sorted(jsonresponse['medias'], key=lambda elem: elem['resolution'], reverse=True) # for item in media: # url = CryptoAES().decrypt(item['url'], bytes(self.key.encode('utf-8'))) # if not re.search('hls.phimmoi.net', url): # movie['links'].append({ # 'link': url, # 'title': 'Link %s' % item['resolution'], # 'type': item['resolution'], # 'resolve': False, # 'originUrl': self.originURL # }) # else: # # hls.phimmoi.net # movie['links'].append({ # 'link': url, # 'title': 'Link hls', # 'type': 'hls', # 'resolve': False, # 'originUrl': self.originURL # }) # if jsonresponse.get('embedUrls'): # for item in jsonresponse.get('embedUrls'): # url = self.get_url(CryptoAES().decrypt(item, bytes(self.key.encode('utf-8')))) # if not re.search('hydrax', url): # movie['links'].append({ # 'link': url, # 'title': 'Link Unknow', # 'type': 'mp4', # 'resolve': False, # 'originUrl': self.originURL # }) # else: # movie['links'].append({ # 'link': url, # 'title': 'Link hydrax', # 'type': 'hls', # 'resolve': False, # 'originUrl': self.originURL # }) if jsonresponse['thirdParty']: jobs = [] self.key = "@@@3rd" for item in jsonresponse['thirdParty']: movie_url = self.get_url(CryptoAES().decrypt( item.get('embed'), self.key)) if 'hydrax.html' not in movie_url: movie['links'].append({ 'link': movie_url, 'title': 'Link {}'.format(item.get('label', 'HD')), 'type': item.get('type'), 'resolve': False, 'originUrl': self.originURL }) return movie
def get_link(self, response, originUrl): movie = {'group': {}, 'episode': [], 'links': []} helper.log( "***********************Get phimmedia Link*****************************" ) sources = re.findall(r"file:\s?(.*?),\s?label: \"(\d+)\"", response, re.MULTILINE) if sources and len(sources) > 0: helper.log( "***********************Get Movie Link 1*****************************" ) sources = sorted(sources, key=lambda elem: elem[1], reverse=True) for source in sources: match = re.search(source[0] + "=.*\(\"(.*)\"\);", response) if match is not None: link = self.decode(match.group(1)) movie['links'].append({ 'link': link, 'title': 'Link %sp' % source[1], 'type': source[1], 'resolve': False, 'originUrl': originUrl }) return movie sources = re.findall(r'file:\s?[\'|"](.*?)[\'|"],\s?label: "(\d+)"', response, re.MULTILINE) if sources and len(sources) > 0: helper.log( "***********************Get Movie Link 2*****************************" ) for source in sources: url = self.decode(source[0]) movie['links'].append({ 'link': url, 'title': 'Link %sp' % source[1], 'type': source[1], 'resolve': False, 'originUrl': originUrl }) sources = re.findall(r'.*\d=define\d+\("(.*)"\);', response) if sources and len(sources) > 0: helper.log( "***********************Get Movie Link 3*****************************" ) for source in sources: url = self.decode(source) if len(url) > 0: movie['links'].append({ 'link': url, 'title': 'Link %sp' % source[1], 'type': source[1], 'resolve': False, 'originUrl': originUrl }) movie['links'].reverse() return movie
def get_link(self, response, domain, movieurl): movie = { 'group': {}, 'episode': [], 'links': [], } videos = json.loads(response) subtitle = None if 'subtitle' in videos and len( videos['subtitle']) > 0 and 'vi' in videos['subtitle']: subtitle = '{}/subtitle/{}.vtt'.format(domain, videos['subtitle']['vi']) videos = videos['sources'] for videotype in videos: if 'm3u8' in videotype: continue if videos[videotype] and ('hls' in videotype or 'htt' in videotype or 'hff' in videotype): url = self.encodeString(videos[videotype], 69) url = url.replace('vdicdn', '8giaitri') movie['links'].append({ 'link': url, 'title': 'Link {}'.format(videotype), 'type': '1080p', 'resolve': False, 'subtitle': subtitle, 'originUrl': movieurl }) if videos[videotype] and not isinstance(videos[videotype], string_types): for key in videos[videotype]: try: link = videos[videotype][key] except: link = key print(link) match = re.search(r'(&title=.*)&?', link['src']) if match: link['src'] = link['src'].replace(match.group(1), '') movie['links'].append({ 'link': link['src'], 'title': 'Link %s' % py2_encode(link['quality']), 'type': py2_encode(link['type']), 'resolve': False, 'subtitle': subtitle, 'originUrl': movieurl }) helper.log(movie) return movie
def get(self, response, page): channel = {'page': page, 'page_patten': None, 'movies': []} soup = BeautifulSoup(response, "html.parser") # get total page last_page = soup.select_one('div.wp-pagenavi > a.last') helper.log("*********************** Get pages ") if last_page is not None: page = re.search('/(\d+)/$', last_page.get('href')).group(1) channel['page'] = int(page) movies = soup.select('ul.list-film > li > div.inner') if len(movies) > 0: for movie in movies: title = movie.select_one('div.name > a').find( text=True, recursive=False).strip() type = "" realtitle = "" if movie.select_one('div.status') is not None: type = movie.select_one('div.status').text.strip() if movie.select_one('div.name2') is not None: realtitle = movie.select_one('div.name2').text.strip() if realtitle is not None: label = "[%s] %s - %s" % (type, title, realtitle) else: label = "[%s] %s" % (type, title) thumb = movie.select_one('a img.lazy').get('data-original') channel['movies'].append({ 'id': movie.select_one('div.name > a').get('href'), 'label': py2_encode(label), 'title': py2_encode(title), 'realtitle': py2_encode(realtitle), 'thumb': thumb, 'type': py2_encode(type), }) movies = soup.select('div.totalService > article.post') if len(movies) > 0: for movie in movies: title = movie.select_one('div.descService > h2 > a').find( text=True, recursive=False).strip() type = "" realtitle = "" label = title intro = movie.select_one('div.descService > p').find( text=True, recursive=False).strip() thumb = movie.select_one('div.img-item > a > img').get('src') channel['movies'].append({ 'intro': py2_encode(intro), 'id': movie.select_one('div.img-item > a').get('href'), 'label': py2_encode(label), 'title': py2_encode(title), 'realtitle': py2_encode(realtitle), 'thumb': thumb, 'type': py2_encode(type) }) return channel