def GetFileHosts(self, id, other_names, region, language, list, lock, message_queue): search_term = id from entertainment.net import Net net = Net(cached=False) user = self.Settings().get_setting('user') pwd = self.Settings().get_setting('pwd') if user and pwd: content = net.http_POST('http://www.filmon.com/user/login', {'login':user, 'password':pwd, 'remember':'1'}, headers={'Referer':self.base_url}).content net.save_cookies(self.cookie_file) content = net.http_GET(self.base_url).content.encode("utf-8") link = content.split('{"id":') import re for p in link: if '"filmon_' in p: title=p.split('"title":"')[1] ITEM_TITLE=title.split('"')[0] p_id = common.CreateIdFromString( common.CleanTextForSearch(ITEM_TITLE, strip=True) ) if id == p_id or p_id in other_names : channel_id=p.split(',')[0] res=['SD','HD'] for quality in res: channel_id_with_quality=channel_id + '__' + quality self.AddLiveLink( list, ITEM_TITLE, channel_id_with_quality, language = language.title(),host='FILMON',quality=quality) break
def GetPlayableUrl(amf_constant, url, experience_id, player_key, content_id=None, content_ref_id=None): from pyamf import remoting from entertainment.net import Net net = Net() amf_request_data = BuildAmfRequest(amf_constant, url, experience_id, player_key, content_id=content_id, content_ref_id=content_ref_id) amf_encoded_request_data = remoting.encode(amf_request_data).read() amf_encoded_response_data = net.http_POST_BINARY( 'http://c.brightcove.com', "/services/messagebroker/amf?playerKey=" + player_key.encode('ascii'), amf_encoded_request_data, headers = {'content-type': 'application/x-amf'} ).content amf_response_data = remoting.decode(amf_encoded_response_data).bodies[0][1].body playable_url = amf_response_data['programmedContent']['videoPlayer']['mediaDTO']['FLVFullLengthURL'] # do something with renditions ... to get best quality # renditions = amf_response_data['programmedContent']['videoPlayer']['mediaDTO']['renditions'] # sample renditions below ''' 'renditions': [{'videoCodec': u'ON2', 'defaultURL': u'http://brightcove03-f.akamaihd.net/3abnEnglishF_3ABN_250@100395', 'encodingRate': 250000, 'audioOnly': False, 'videoContainer': 1, 'mediaDeliveryType': 0, 'frameWidth': 384, 'size': 0.0, 'frameHeight': 512}, {'videoCodec': u'ON2', 'defaultURL': u'http://brightcove03-f.akamaihd.net/3abnEnglishF_3ABN_600@100395', 'encodingRate': 600000, 'audioOnly': False, 'videoContainer': 1, 'mediaDeliveryType': 0, 'frameWidth': 480, 'size': 0.0, 'frameHeight': 640}, {'videoCodec': u'ON2', 'defaultURL': u'http://brightcove03-f.akamaihd.net/3abnEnglishF_3ABN_64@100395', 'encodingRate': 64000, 'audioOnly': False, 'videoContainer': 1, 'mediaDeliveryType': 0, 'frameWidth': 240, 'size': 0.0, 'frameHeight': 320}, {'videoCodec': u'ON2', 'defaultURL': u'http://brightcove03-f.akamaihd.net/3abnEnglishF_3ABN_1200@100395', 'encodingRate': 1200000, 'audioOnly': False, 'videoContainer': 1, 'mediaDeliveryType': 0, 'frameWidth': 480, 'size': 0.0, 'frameHeight': 720}] ''' return playable_url
def ResolveLive(self, content, url): import re script_page = re.search('<script type=[\'"]text/javascript.+?id=[\'"](.+?)[\'"].+?ew=[\'"](.+?)[\'"].+?eh=[\'"](.+?)[\'"].+?src=[\'"]http://www\.castalba\.tv/js/embed\.js[\'"]', content) if script_page: channel_id = script_page.group(1) ew = script_page.group(2) eh = script_page.group(3) channel_url = self.base_url + 'embed.php?cid=' + channel_id + '&wh=' + ew + '&ht=' + eh streamer = re.search('[\'"]streamer[\'"]: [\'"](.+?)[\'"]', content) if not streamer and 'castalba.tv' not in url: from entertainment.net import Net net = Net(cached=False) content = net.http_GET(channel_url).content streamer = re.search('[\'"]streamer[\'"]: [\'"](.+?)[\'"]', content) if streamer: streamer = streamer.group(1) playpath = re.search('[\'"]file[\'"]: [\'"](.+?)[\'"]', content).group(1) if playpath.endswith('.flv'): playpath = playpath[:-4] elif playpath.endswith('.mp4'): playpath = 'mp4:' + playpath player = re.search('[\'"]flashplayer[\'"]: [\'"](.+?)[\'"]', content).group(1) pageurl = channel_url resolved_media_url = streamer + ' playpath=' + playpath + ' swfUrl=' + player + ' pageUrl=' + pageurl + ' swfVfy=true live=true timeout=20' return (True, True, resolved_media_url, url) return (False, False, content, url)
def ExtractContentAndAddtoList(self, indexer, section, url, type, list, page='', total_pages='', sort_by='', sort_order=''): import urllib if section != 'search': url = urllib.unquote_plus(url) new_url = url if not new_url.startswith(self.base_url): new_url = re.sub("http\://.*?/", self.base_url, url) if page == '': page = '1' from entertainment.net import Net cached = False if section == 'watchlist' else True net = Net(cached=cached) content = net.http_GET(new_url + '/page/' + page).content if total_pages == '' : re_page = '<span class=[\'"]{1}pages[\'"]{1}>Page 1 of ([0-9]+)</span>' #'<a class=[\'"]{1}last[\'"]{1}.+?([0-9]+)[\'"]{1}' total_pages = re.search(re_page, content) if total_pages: total_pages = total_pages.group(1) else: if re.search('0 items found', content): page = '0' total_pages = '0' else: page = '1' total_pages = '1' self.AddInfo(list, indexer, section, url, type, page, total_pages, sort_by, sort_order) item_re = r'(?s)<div class=[\'"]{1}inner[\'"]{1}>.+?<a href=[\'"]{1}(.+?)[\'"]{1}.+?<img src=[\'"]{1}(.+?)[\'"]{1} alt=[\'"]{1}(.+?)[\'"]{1}.+?<p>(.+?)<' for item in re.finditer(item_re, content): item_url = item.group(1) item_img = item.group(2) item_alt = item.group(3) item_name = re.sub('\([0-9]+\).*', '', item_alt) item_year = re.search("\(([0-9]+)", item_alt) if item_year: item_year = item_year.group(1) item_title = item_name + ' (' + item_year + ')' else: item_year = '' item_title = item_name if total_pages == '': total_pages = '1' item_plot = re.sub('^\s', '', common.CleanText(item.group(4), True, True) ) self.AddContent(list, indexer, common.mode_File_Hosts, item_title, '', type, url=item_url, name=item_name, year=item_year, img=item_img, plot=item_plot)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): from entertainment.net import Net net = Net(user_agent=self.UA) title = self.CleanTextForSearch(title) name = self.CleanTextForSearch(name) search_term = name.replace(' ','-')+'-'+year import re url='http://umovies.me/search/'+search_term try: net.set_cookies(self.cookie_file) link = net.http_GET(url).content print '##########################' print 'NET' except: from entertainment import cloudflare link = cloudflare.solve(url,self.cookie_file,self.UA) match = re.compile('lass="movies list inset">.+?href="(.+?)">.+?class="label">(.+?)<',re.DOTALL).findall(link) for movie_url, TITLE in match: if year in TITLE: self.GetFileHosts('http://umovies.me'+movie_url, list, lock, message_queue)
def GetFileHosts(self, url, list, lock, message_queue): import re,urllib from entertainment.net import Net net = Net(user_agent='Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5') loginurl = 'https://m.genvideos.org/video_info/html5' v=url.split('v=')[1] data={'v': v} headers = {'host': 'm.genvideos.org','origin':'https://m.genvideos.org', 'referer': url, 'user-agent':'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5','x-requested-with':'XMLHttpRequest'} first= net.http_POST(loginurl,data,headers).content import json link= json.loads(first) for j in link: quality = j.upper() if '360P' in quality: quality='SD' THEURL = urllib.unquote(link[j][3])+'**'+url self.AddFileHost(list, quality, THEURL,host='GOOGLEVIDEO.COM')
def GetFileHosts(self, url, list, lock, message_queue): import re from entertainment.net import Net net = Net(cached=False) print url content = net.http_GET(url).content #print content match=re.compile('movie-player/(.+?)"').findall(content) for URL in match: getcontent = net.http_GET('https://beinmovie.com/movie-player.php?'+URL).content #print getcontent try: FINAL_URL=re.compile('src="(.+?)"').findall(getcontent)[0] except: FINAL_URL=re.compile("src='(.+?)'").findall(getcontent)[0] if len(FINAL_URL)< 8: grabsecond = re.compile('movie-player/(.+?)"').findall(getcontent)[1] getcontent = net.http_GET('https://beinmovie.com/movie-player.php?'+grabsecond).content try: FINAL_URL=re.compile(' src="(.+?)"').findall(getcontent)[0] except: FINAL_URL=re.compile(" src='(.+?)'").findall(getcontent)[0] if 'movie_lang=fr' in URL: language= 'French' elif 'movie_lang=en' in URL: language= 'English' else:language='' self.AddFileHost(list, '1080P', FINAL_URL,host='GOOGLEVIDEO - '+language)
def ResolveLive(self, content, url): import re new_content = re.search("<script.+?id=[\"'](.+?)[\"'].+?src=[\"']http://embeds\.coolsport\.tv/(.+?)\.js[\"']", content) if new_content: headers = {'Referer':url} page_url = 'http://embeds.coolsport.tv/' + new_content.group(2) + '.php?id=' + new_content.group(1) from entertainment.net import Net net = Net() content = net.http_GET( page_url, headers=headers ).content return (False, True, content, page_url) new_content = re.search("<iframe.+?src=[\"'](http://www.coolsport.tv/.+?)[\"']", content) if new_content: page_url = new_content.group(1) from entertainment.net import Net net = Net() content = net.http_GET( page_url, headers={'Referer':url} ).content new_content = re.search("<script.+?id=[\"'](.+?)[\"'].+?src=[\"']http://embeds\.coolsport\.tv/(.+?)\.js[\"']", content) headers = {'Referer':page_url} page_url = 'http://embeds.coolsport.tv/' + new_content.group(2) + '.php?id=' + new_content.group(1) content = net.http_GET( page_url, headers=headers ).content return (False, True, content, page_url) return (False, False, content, url)
def ExtractContentAndAddtoList(self, indexer, section, url, type, list, page='', total_pages='', sort_by='', sort_order=''): new_url = url.replace('.so/','.la/') if page == '': page = '1' else: page = str( int(page) ) new_url = new_url + page from entertainment.net import Net net = Net() import urllib url = urllib.unquote_plus(url) new_url = self.base_url+section+'/' html = net.http_GET(new_url+str(page)).content if total_pages == '': lastlist = '/'+section+'/' r= ">Next</a> <a href='%s(.+?)'>Last</a>" % lastlist total_pages = re.compile(r).findall(html)[0] self.AddInfo(list, indexer, section, '', type, str(page), total_pages) if section == 'featured-movies' or 'new-releases' or 'latest-added' or 'latest-hd-movies' or 'most-viewed' or 'most-voted' or 'az' or 'genres': match=re.compile('<h1><a href="(.+?)" target="_self" title="(.+?) \((.+?)\)">',re.DOTALL).findall(html) for url,name,year in match: name = self.CleanTextForSearch(name) self.AddContent(list,indexer,common.mode_File_Hosts,name + ' (' + year +')' ,'',type, url='http://www.movie25.ag'+url, name=name, year=year)
def GrabMailRu(self,url,list): print 'RESOLVING VIDEO.MAIL.RU VIDEO API LINK' from entertainment.net import Net net = Net(cached=False) import json,re items = [] data = net.http_GET(url).content cookie = net.get_cookies() for x in cookie: for y in cookie[x]: for z in cookie[x][y]: l= (cookie[x][y][z]) r = '"key":"(.+?)","url":"(.+?)"' match = re.compile(r,re.DOTALL).findall(data) for quality,stream in match: test = str(l) test = test.replace('<Cookie ','') test = test.replace(' for .my.mail.ru/>','') url=stream +'|Cookie='+test QUALITY=quality.upper() if '480' in QUALITY: QUALITY = '720P' self.AddFileHost(list, QUALITY, url,host='WATCH-TVSERIES.NET')
def GetContent(self, indexer, url, title, name, year, season, episode, type, list): import urllib url = urllib.unquote_plus(url) title = urllib.unquote_plus(title) name = urllib.unquote_plus(name) name = (name).lower() import re from entertainment.net import Net net = Net(cached=False) net.set_cookies(self.cookie_file) content = net.http_GET(url).content if type == 'tv_seasons': match=re.compile('<br><br><b>(.+?)x').findall(content) for seasonnumber in match: item_title = 'Season ' + seasonnumber item_id = common.CreateIdFromString(title + ' ' + item_title) self.AddContent(list, indexer, common.mode_Content, item_title, item_id, 'tv_episodes', url=url, name=name, season=seasonnumber) elif type == 'tv_episodes': match=re.compile("<br><b>"+season+"x(.+?)\s-\s<a style=.+?color.+?\shref='/(.+?)'>(.+?)</a>").findall(content) for item_v_id_2,url,item_title in match: season = "0%s"%season if len(season)<2 else season item_v_id_2 = "0%s"%item_v_id_2 if len(item_v_id_2)<2 else item_v_id_2 item_url = self.base_url + url item_v_id_2 = str(int(item_v_id_2)) self.AddContent(list, indexer, common.mode_File_Hosts, item_title, item_id, type, url=item_url, name=name, season=season, episode=item_v_id_2)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): from entertainment.net import Net import re #net = Net(cached=False) name = self.CleanTextForSearch(name) import urllib name = name.lower() net = Net() if type == 'movies': title = self.CleanTextForSearch(title) name = self.CleanTextForSearch(name) URL= self.base_url+'?type=movie&keywords=%s' %name.replace(' ','+') content = net.http_GET(URL).content match =re.compile('href="(.+?)" target="_blank"><img class="image" src=".+?" alt="(.+?)"').findall(content) for item_url , name in match: if year in name: print item_url self.GetFileHosts(item_url, list, lock, message_queue) '''elif type == 'tv_episodes':
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): from entertainment.net import Net import re,urllib,json net = Net(user_agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3') name = self.CleanTextForSearch(name) search_term = name.lower() linkme='http://my.mail.ru/cgi-bin/my/ajax?user=&ajax_call=1&func_name=video.get_list&mna=&mnb=&arg_tag=%s&arg_duration=long&arg_sort=&arg_sort_order=desc&arg_hd_exists=&arg_unsafe=0&arg_type=search&arg_offset=0&arg_limit=300' new_url=linkme % (name.replace(' ','+').lower()+'+'+year) response= net.http_GET(new_url).content link=json.loads(response)[-1] data=link['items'] for i in data: _url_=i['ExternalID'] title=i['Title'] time=i['DurationFormat'] if len(time)>5: if name.lower() in title.lower(): if year in title: movie_url='http://videoapi.my.mail.ru/videos/'+_url_+'.json' print movie_url self.GetFileHosts(movie_url, list, lock, message_queue,title)
def Resolve(self, url): import re from entertainment.net import Net net = Net(user_agent=self.UA) url=url.replace('muchmovies.org','umovies.me') try: net.set_cookies(self.cookie_file) content = net.http_GET(url).content print '##########################' print 'NET' except: from entertainment import cloudflare content=cloudflare.solve(url,self.cookie_file,self.UA) content = content.replace('\n','') link=content.split('href=') for p in link: if '.mp4' in p: resolved_media_url = re.compile('"(.+?)"').findall(p)[0] host =resolved_media_url.split('//')[1] host = host.split('/')[0] cookie =open(self.cookie_file).read() __cfduid =re.compile('__cfduid=(.+?);').findall(cookie)[0] cf_clearance =re.compile('cf_clearance="(.+?)"').findall(cookie)[0] COOKIE = '__cfduid=%s; cf_clearance=%s' % (__cfduid,cf_clearance) resolved_media_url = resolved_media_url+'|User-Agent='+self.UA+'&Referrer='+url+'&host='+host+'&Cookie='+COOKIE print resolved_media_url return resolved_media_url
def Resolve(self, url): from entertainment.net import Net net = Net() if 'playsominaltv.com' in url: net._cached = False premium_url = 'http://www.playsominaltv.com/login/?redirect_to=' + url content = net.http_GET(premium_url, headers={'Referer':url}).content params={'log':self.Settings().get_setting('user'), 'pwd':self.Settings().get_setting('pass'), 'wp-submit':'1'} for hidden_param in re.finditer('(<input.+?type=[\'"]{1}hidden[\'"]{1}.+?/>)', content): hidden_param_input = hidden_param.group(1) param_name = re.search('name=[\'"]{1}(.+?)[\'"]{1}', hidden_param_input).group(1) param_value = re.search('value=[\'"]{1}(.+?)[\'"]{1}', hidden_param_input).group(1) params.update( { param_name : param_value } ) content = net.http_POST('http://www.playsominaltv.com/login/',params,headers={'Referer':premium_url}).content if 'playsominaltv.com' in url or 'sominaltvfilms.com' in url or 'desionlinetheater.com' in url: content = net.http_GET(url).content content=dekode(content) if content: source_url=re.search('<iframe.+?src.+?(http.+?)[\'"\\\\]{1}', content) if source_url: return MovieSource.Resolve(self, source_url.group(1)) else: return MovieSource.Resolve(self, url) return url
def Search(self, indexer, keywords, type, list, lock, message_queue, page='', total_pages=''): if page and len(page) > 0 and total_pages and len(total_pages) > 0 and int(page) > int(total_pages): return if page=='': page='1' from entertainment.net import Net net = Net() search_url ='%spage/%s/?s=%s' %(self.base_url, page, keywords.replace(' ','+')) print search_url import re html = net.http_GET(search_url).content if total_pages == '': r= '<a class="last" href="http://filmstream.me/page/(.+?)/' try: total_pages = re.compile(r).findall(html)[0] except: total_pages = '1' self.AddInfo(list, indexer, 'search', self.base_url, type, str(page), total_pages) for item in re.finditer(r'<h2> <a href="(.+?)">(.+?)</a> </h2>\s*<div class=".+?">.+?</div>\s*</div>\s*<a href=".+?" title="">\s*<img src="(.+?)" alt="(.+?)"',html,re.I): url=item.group(1) name=item.group(4) name=name.split('Stream')[0] image=item.group(3) name = self.CleanTextForSearch(name) self.AddContent(list,indexer,common.mode_File_Hosts,name,'',type, url=url, name=name, img=image, plot='')
def GetFileHosts(self, url, list, lock, message_queue): from entertainment.net import Net net = Net(do_not_cache_if_any=do_no_cache_keywords_list) custom_url = self.get_url() if self.Settings().get_setting("proxy") == "true": import socks (proxy, port) = self.get_proxy() socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxy, port) net.set_socket_class(socks.socksocket) content = common.unescape(common.str_conv(net.http_GET(url).content)) import re for sq in re.finditer(r"<span class=quality_(.+?)>.+?<a href=\".+?external.+?url=(.+?)&", content): quality = sq.group(1).upper() if quality == "UNKNOWN": continue import base64 host_url = base64.b64decode(sq.group(2)) if not "affbuzz" in host_url.lower(): self.AddFileHost(list, quality, host_url)
def Resolve(self, url): from entertainment.net import Net import re import time net = Net() try: common.addon.show_small_popup('[B][COLOR blue]I[/B][/COLOR]stream: [B][COLOR white]' + self.name.upper() + '[/B][/COLOR]', 'Resolving', 700, self.icon) content = net.http_GET(url).content new_url = re.search('streamContinueButton.+?href="(.+?)"', content,re.I) from entertainment import istream html = net.http_GET(new_url.group(1)).content r = re.search(r'<iframe\s*src="(.+?)"\s*allowfullscreen',html,re.I|re.DOTALL) if r: play_url = istream.ResolveUrl(r.group(1)) return play_url except Exception, e: common.addon.log(self.name.upper() + ' - Exception occured: %s' % e) common.addon.show_small_popup('[B][COLOR blue]I[/B][/COLOR]stream: [B][COLOR white]' + self.name.upper() + '[/B][/COLOR]', '[COLOR red]'+str(e)+'[/COLOR]', 700, self.icon) return None
def Handle(self, url, html, params=None): import re recaptcha = re.search('<script type=[\'"]{1}text/javascript[\'"]{1} src=[\'"]{1}(http://www.google.com/recaptcha/api/.+?)[\'"]{1}', html) if recaptcha: recaptcha = recaptcha.group(1) from entertainment.net import Net net = Net(cached=False) if 'recaptcha_ajax' in recaptcha: import random recaptcha = 'http://www.google.com/recaptcha/api/challenge?k=%s&ajax=1&cachestop=%s' % ( params['site'], str(random.random()) ) html = net.http_GET( recaptcha ).content import re hugekey=re.search('challenge \: [\'"]{1}(.+?)[\'"]{1}', html).group(1) solution = self.Solve(net.http_GET("http://www.google.com/recaptcha/api/image?c=%s" % hugekey ).content) if solution: return {'status':'ok', 'captcha_type':self.name, 'challenge':hugekey, 'captcha':solution, 'recaptcha_challenge_field': hugekey,'recaptcha_response_field': solution} else: return {'status':'error', 'message':'Image-Text not entered', 'captcha_type':self.name} return None
def GetFileHosts(self, id, other_names, region, language, list, lock, message_queue): from entertainment.net import Net net = Net() clean_id= id.replace('_',' ').lower() for blogs in self.BLOG: import re r = self.base_url % blogs content = net.http_GET(r).content POSTER=re.compile('<poster>(.+?)</poster>').findall(content)[0] match=re.compile('<title>(.+?)</title>.+?link>(.+?)</',re.DOTALL).findall(content) for name, RTMP in match: if clean_id.replace(' ','') in name.replace(' ','').lower(): self.AddLiveLink( list, name, RTMP, host=POSTER)
def ResolveLive(self, content, url): import re new_content = re.search('src=[\'"]{1}http://liveall\.tv/player\.php\?streampage=(.+?)[&\'"]{1}', content) if new_content: page_url = 'http://liveall.tv/player.php?streampage=%s' % new_content.group(1) from entertainment.net import Net net = Net() content = net.http_GET( page_url, headers={'Referer':url} ).content var_a = int(re.search('var a = ([0-9]*);', content).group(1)) var_b = int(re.search('var b = ([0-9]*);', content).group(1)) var_c = int(re.search('var c = ([0-9]*);', content).group(1)) var_d = int(re.search('var d = ([0-9]*);', content).group(1)) var_f = int(re.search('var f = ([0-9]*);', content).group(1)) var_v_part = re.search('var v_part = [\'"]{1}(.+?)[\'"]{1};', content).group(1) swf_url = 'http://wds.liveall.tv/jwplayer.flash.swf' #playpath = play_media.group(2) streamer = 'rtmp://%s.%s.%s.%s%s' % ( str(var_a/var_f), str(var_b/var_f), str(var_c/var_f), str(var_d/var_f), var_v_part ) ''' playpath=' + playpath + ''' content = streamer + ' swfUrl=' + swf_url + ' pageUrl=' + page_url + ' timeout=15 live=1' return (True, True, content, url) return (False, False, content, url)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): from entertainment.net import Net import re,json net = Net(cached=False,user_agent='Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5') name = self.CleanTextForSearch(name) main_url= self.API+'type=search&os=Android&v=2.0.1&k=0&keyword=%s' %(name.replace(' ','+')) content=net.http_GET(main_url).content import json link=json.loads(content) data=link['data'] for field in data['films']: NAME=field['title'].encode('utf8') item_url=str(field['id']) if NAME==name: self.GetFileHosts(item_url, list, lock, message_queue,season,episode)
def ResolveLive(self, content, url): import re from entertainment.net import Net net = Net() new_content = re.search("<script.+?fid=[\"'](.+?)[\"'].+?src=[\"']http://www\.castup\.me/js/embed\.js[\"']", content) if not new_content: new_content = re.search('src=[\'"]{1}(http://www\.castup\.me/channel\.php\?id=.+?)[\'"]{1}', content) if new_content: new_url = new_content.group(1) new_content = net.http_GET( new_content.group(1), headers={'Referer':url} ).content url = new_url new_content = re.search("<script.+?fid=[\"'](.+?)[\"'].+?src=[\"']http://www\.castup\.me/js/embed\.js[\"']", new_content) if new_content: page_url = 'http://www.castup.me/embed.php?channel=' + new_content.group(1) content = net.http_GET( page_url, headers={'Referer':url} ).content swf_url = re.search( "SWFObject\([\"'](.+?)[\"']" ,content).group(1) if 'castup.me' not in swf_url: swf_url = 'http://www.castup.me%s' % swf_url playpath = re.search( "so.addVariable\([\"']file[\"'].+?[\"'](.+?)[\"']" ,content).group(1) streamer = re.search( "so.addVariable\([\"']streamer[\"'].+?[\"'](.+?)[\"']" ,content).group(1) token = re.search( "so.addVariable\([\"']token[\"'].+?[\"'](.+?)[\"']" ,content).group(1) content = streamer + ' playpath=' + playpath + ' swfUrl=' + swf_url + ' pageUrl=' + page_url + ' token=' + token + ' swfVfy=1 timeout=15 live=1' return (True, True, content, url) return (False, False, content, url)
def GetFileHosts(self, id, other_names, region, language, list, lock, message_queue): from entertainment.net import Net import re net = Net(cached=False) stream_id = id.replace('_','').lower() NEW_URL= "http://d3gbuig838qdtm.cloudfront.net/json/tvp/channels.json" html = net.http_GET(NEW_URL).content import json link=json.loads(html) data=link['data'] for field in data: name= field['channel']['name'].encode("utf-8") url=field['channel']['id'] if stream_id in name.replace(' ','').lower(): self.AddLiveLink( list, id.replace('_',' ').upper(), url, language = language.title(),host= 'TVPLAYER',quality='HD')
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): import urllib2 import re from entertainment.net import Net net = Net() title = self.CleanTextForSearch(title) name = self.CleanTextForSearch(name) season_pull = "0%s"%season if len(season)<2 else season episode_pull = "0%s"%episode if len(episode)<2 else episode tv_url='http://www.myvideolinks.eu/index.php?s=%s+S%sE%s' %(name.replace(' ','+'),season_pull,episode_pull) movie_url='http://www.myvideolinks.eu/index.php?s=%s+%s' %(name.replace(' ','+'),year) if type == 'movies': html = net.http_GET(movie_url).content for item in re.finditer(r'<h4><a href="(.+?)" rel="bookmark"',html,re.I): url = item.group(1) self.GetFileHosts(url, list, lock, message_queue) elif type == 'tv_episodes': html = net.http_GET(tv_url).content for item in re.finditer(r'<h4><a href="(.+?)" rel="bookmark"',html,re.I): url = item.group(1) self.GetFileHosts(url, list, lock, message_queue)
def GetFileHosts(self, url, list, lock, message_queue,name): import re,json from entertainment.net import Net net = Net(cached=False) content = net.http_GET(url).content links=re.compile('pic=([^&]+)').findall (content) links = [x for y,x in enumerate(links) if x not in links[:y]] for i in links: data = {'url': i, 'fv': '16'} headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'} html= net.http_POST('http://yify.tv/player/pk/pk/plugins/player_p2.php',data,headers=headers).content result = json.loads(html) for field in result: if field['width']== 1920: url = field['url'] res= '1080P' host=url.split('://')[1] host=host.split('/')[0].replace('www','') self.AddFileHost(list, res, url,host=host.upper()) if field['width']== 1280: url = field['url'] res= '720P' host=url.split('://')[1] host=host.split('/')[0].replace('www','') self.AddFileHost(list, res, url,host=host.upper())
def GetFileHosts(self, url, list, lock, message_queue): import re from entertainment.net import Net net = Net() content = net.http_GET(url).content r = '<li><a href="(http://.+?)">(.+?)</a></li>' match = re.compile(r).findall(content) match1 = re.compile('rel="bookmark" title=".+?">(.+?)</a></h1>').findall(content) urlselect = [] for url, host in match: for res in match1: if url not in urlselect: urlselect.append(url) quality = 'SD' res_lower = '.' + res.lower() + '.' for quality_key, quality_value in common.quality_dict.items(): if re.search('[^a-zA-Z0-0]' + quality_key + '[^a-zA-Z0-0]', res_lower): quality = quality_value break if 'myvideolinks' in url: url= False continue if 'http://i.imgur.com/' in url: url=False continue self.AddFileHost(list, quality, url, host=host.upper())
def Resolve(self, url): import re from entertainment.net import Net episode=url.split('|')[1] url=url.split('|')[0] net = Net(do_not_cache_if_any=do_no_cache_keywords_list) headers={'Referer':'http://www.kissdrama.net/results.php', 'X-Requested-With':'XMLHttpRequest','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} key = url.split('=')[1] form_data={ 'c':'result', 'a':'getplayerinfo', 'p':'{"KeyWord":"%s","Episode":%s,"Part":"01"}' % (key,episode) } content = net.http_POST('http://www.kissdrama.net/index.php', form_data, headers).content match=re.compile('src="http(.+?)"').findall(content)[0] if 'docs.google.com' in match: match='http'+match headers={'Referer':str(match), 'Host':'docs.google.com','User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0','Connection':'keep-alive','Accept-Encoding':'gzip, deflate','Accept-Language':'en-US,en;q=0.5','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'} html = net.http_GET(match, headers=headers).content.encode("utf-8").rstrip() video_url=re.search('fmt_stream_map".+?(http.+?),', html).group(1) video_url=video_url.replace('|', '').replace('\u003d','=').replace('\u0026','&') return video_url else: match='http'+match return match
def Resolve(self, url): try: from entertainment.net import Net net = Net(cached=False) import os cookie_file = os.path.join(common.cookies_path, 'realdebrid.lwp') if net.set_cookies(cookie_file) == False: import urllib credentials = urllib.urlencode({'user' : self.Settings().get_setting('realdebrid-username'), 'pass' : self.Settings().get_setting('realdebrid-password')}) content = net.http_GET(self.base_url + 'ajax/login.php?' + credentials ).content net.save_cookies(cookie_file) elif 'My Account' not in net.http_GET(self.base_url).content: import urllib credentials = urllib.urlencode({'user' : self.Settings().get_setting('realdebrid-username'), 'pass' : self.Settings().get_setting('realdebrid-password')}) content = net.http_GET(self.base_url + 'ajax/login.php?' + credentials ).content net.save_cookies(cookie_file) content = net.http_GET(self.base_url + 'ajax/unrestrict.php?link=' + url).content import re r = re.search('[\'"]{1}main_link[\'"]{1}\:[\'"]{1}(.+?)[\'"]{1}', content) if r: stream_url = r.group(1) if stream_url: return stream_url.replace('\/', '/') except Exception, e: common.addon.log(self.name.upper() + ' - Exception occured: %s' % e) common.addon.show_small_popup('[B][COLOR white]' + self.name.upper() + '[/COLOR][/B]', '[COLOR red]Exception occured, check logs.[/COLOR]') return None
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): from entertainment.net import Net net = Net() title = self.CleanTextForSearch(title) name = self.CleanTextForSearch(name) search_term = name.replace(' ','%20') search_term = search_term.lower() search_term = search_term.replace('the','') import re url='http://clickplay.to/search/'+search_term+'?' link=net.http_GET(url).content if 'Unfortunately there are no results right now' in link: return None match = re.compile('<div id="video_list">\s*<a href="(.+?)" class="article" data="(.+?)">.+?<span class="article-title">(.+?) \((.+?)\)</span>',re.DOTALL).findall(link) for tv_url , data, tvshowname, tvshowyear in match: if year in tvshowyear: season_pull = "0%s"%season if len(season)<2 else season episode_pull = "0%s"%episode if len(episode)<2 else episode url=tv_url+'season-'+season+'/' html=net.http_GET(url).content link_url = re.compile('<a href="(.+?)" title=".+?Episode '+episode+' / .+?" class=".+?">').findall(html)[0] self.GetFileHosts(link_url, list, lock, message_queue)
def GetFileHosts(self, id, other_names, region, language, list, lock, message_queue): from entertainment.net import Net import re net = Net(cached=False) stream_id = None id = id.replace('bbc_one', 'bbc1').replace('bbc_two', 'bbc2').replace( 'bbc_three', 'bbc3').replace('bbc_four', 'bbc4').replace('news_ch', 'bbc_news24').replace( 'bbc_parliament', 'parliament').replace('bbc_alba', 'alba') stream_id = id if not stream_id: return NEW_URL = "http://a.files.bbci.co.uk/media/live/manifests/hds/pc/llnw/%s.f4m" % stream_id html = net.http_GET(NEW_URL).content match = re.compile('<media href="(.+?)" bitrate="(.+?)"/>').findall( html.replace('amp;', '')) for url, res in match: if int(res) > 800: res = 'HD' else: res = 'SD' self.AddLiveLink(list, id.replace('_', ' ').upper(), url, language=language.title(), host='BBC iPLAYER ', quality=res)
def GrabMailRu(self, url, list, title): from entertainment.net import Net net = Net(cached=False) import json, re items = [] data = net.http_GET(url).content cookie = net.get_cookies() for x in cookie: if '.my.mail.ru' in x: for y in cookie[x]: for z in cookie[x][y]: l = (cookie[x][y][z]) link = json.loads(data) data = link['videos'] for j in data: stream = j['url'] if not 'http:' in stream: stream = 'http:' + stream Q = j['key'].upper() test = str(l) test = test.replace('<Cookie ', '') test = test.replace(' for .my.mail.ru/>', '') url = stream + '|Cookie=' + test if Q == '1080P': Q = '1080P' elif Q == '720P': Q = '720P' elif Q == '480P': Q = 'HD' else: Q = 'SD' self.AddFileHost(list, Q, url, host=title.title())
def ResolveLive(self, content, url): import re new_content = re.search( "<script.+?src=[\"'](http://www\.serverhd\.eu/channel\.php.+?)[\"']", content) if new_content: page_url = new_content.group(1) from entertainment.net import Net net = Net() content = net.http_GET(page_url, headers={'Referer': url}).content new_content = re.search( "<iframe.+?src=[\"'](http://www\.serverhd\.eu/embed\.php.+?)[\"']", content) page_url = new_content.group(1) content = net.http_GET(page_url, headers={'Referer': url}).content import base64 swf_url = re.search("SWFObject\([\"'](.+?)[\"']", content).group(1) playpath = base64.b64decode( re.search( "<input type=[\"']hidden[\"'] id=[\"']ssx1[\"'] value=[\"'](.+?)[\"']", content).group(1)) streamer = base64.b64decode( re.search( "<input type=[\"']hidden[\"'] id=[\"']ssx4[\"'] value=[\"'](.+?)[\"']", content).group(1)) content = streamer + ' playpath=' + playpath + ' swfUrl=' + swf_url + ' pageUrl=' + page_url + ' timeout=20 live=true' return (True, True, content, url) return (False, False, content, url)
def GrabMailRu(self, url, list): print url from entertainment.net import Net net = Net(cached=False) import json, re items = [] data = net.http_GET(url).content cookie = net.get_cookies() for x in cookie: for y in cookie[x]: for z in cookie[x][y]: l = (cookie[x][y][z]) r = '"key":"(.+?)","url":"(.+?)"' match = re.compile(r, re.DOTALL).findall(data) for quality, stream in match: test = str(l) test = test.replace('<Cookie ', '') test = test.replace(' for .my.mail.ru/>', '') url = stream + '|Cookie=' + test Q = quality.upper() if Q == '1080P': Q = '1080P' elif Q == '720P': Q = '720P' elif Q == '480P': Q = 'HD' else: Q = 'SD' self.AddFileHost(list, Q, url, host='MAIL.RU')
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): import json from entertainment.net import Net net = Net(cached=False) name = self.CleanTextForSearch(name) data = { 'DeviceId': '6a48880da9855891b8baad7d7b34570d998b28c5', 'Hash': 'f93e3156637c9fce37154e2d091bca8a', 'Key': 'AA9FSK1323X3F', 'Pagesize': '-1', 'Keyword': name, 'StartIndex': '0', 'Version': '5' } link = json.loads( net.http_POST(self.SEARCHLINK, data, headers=self.HEADERS).content) data = link['Data'] for field in data: TITLE = field['Name'].encode('utf8') iconimage = field['ThumbnailUrl'].encode('utf8') id = field['Link'] if not id: id = field['Id'] if name.lower() in self.CleanTextForSearch(TITLE.lower()): self.GetFileHosts(id, list, lock, message_queue, type, season, episode) else: if name.lower() in self.CleanTextForSearch(TITLE.lower()): if year in TITLE: self.GetFileHosts(id, list, lock, message_queue, type, season, episode)
def Resolve(self, url): from entertainment.net import Net import re import time net = Net() try: common.addon.show_small_popup( '[B][COLOR blue]I[/B][/COLOR]stream: [B][COLOR white]' + self.name.upper() + '[/B][/COLOR]', 'Resolving', 700, self.icon) content = net.http_GET(url).content new_url = re.search('streamContinueButton.+?href="(.+?)"', content, re.I) from entertainment import istream html = net.http_GET(new_url.group(1)).content r = re.search(r'<iframe\s*src="(.+?)"\s*allowfullscreen', html, re.I | re.DOTALL) if r: play_url = istream.ResolveUrl(r.group(1)) return play_url except Exception, e: common.addon.log(self.name.upper() + ' - Exception occured: %s' % e) common.addon.show_small_popup( '[B][COLOR blue]I[/B][/COLOR]stream: [B][COLOR white]' + self.name.upper() + '[/B][/COLOR]', '[COLOR red]' + str(e) + '[/COLOR]', 700, self.icon) return None
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): import re from entertainment.net import Net net = Net(cached=False) name = self.CleanTextForSearch(name.lower()) THE_URL = 'http://moviehdmax.com/search/result?s=%s&selected=false' % name.replace( ' ', '+') headers = { 'Host': 'moviehdmax.com', 'Connection': 'keep-alive', 'Accept': 'text/plain, */*; q=0.01', 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, sdch', 'Accept-Language': 'en-US,en;q=0.8' } content = net.http_GET(THE_URL, headers=headers).content net.save_cookies(self.cookie_file) match = re.compile('<a href="\.\./(.+?)">(.+?)</a>').findall(content) for url, title in match: item_url = 'http://moviehdmax.com/' + url if name in self.CleanTextForSearch(title.lower()): if type == 'tv_episodes': if 'season-' + season in item_url: self.GetFileHosts(item_url, list, lock, message_queue, type, season, episode) else: if year in title: self.GetFileHosts(item_url, list, lock, message_queue, type, season, episode)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): from entertainment.net import Net import re, urllib, json net = Net( cached=False, user_agent= 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3' ) name = self.CleanTextForSearch(name) search_term = name.lower() linkme = 'http://my.mail.ru/cgi-bin/my/ajax?user=&ajax_call=1&func_name=video.get_list&mna=&mnb=&arg_tag=%s&arg_duration=long&arg_sort=&arg_sort_order=desc&arg_hd_exists=&arg_unsafe=0&arg_type=search&arg_offset=0&arg_limit=300' new_url = linkme % (name.replace(' ', '+').lower() + '+' + year) response = net.http_GET(new_url).content link = json.loads(response)[-1] data = link['items'] for i in data: _url_ = i['UrlHtml'].replace('video/', '').replace('.html', '.json') title = i['Title'] time = i['DurationFormat'] if len(time) > 5: if name.lower().replace( 'the ', '') in title.lower() or name.lower().replace( 'the ', '').replace( ' ', '.') in title.lower().replace(' ', '.'): if year in title: # /inbox/nichols91/video/_myvideo/21.html #http://videoapi.my.mail.ru/videos/inbox/nichols91/_myvideo/21.json movie_url = 'http://videoapi.my.mail.ru/videos/' + _url_ #print movie_url self.GetFileHosts(movie_url, list, lock, message_queue, title)
def GetFileHosts(self, url, list, lock, message_queue, REF): import re from entertainment.net import Net net = Net(cached=False) headers = { 'Host': '123movies4u.co', 'Origin': 'https://123movies4u.co', 'Referer': REF, 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36' } content = net.http_GET(url, headers=headers).content #onclick=\"window.open\('(.+?)', '_blank'\);\">(.+?) (.+?)</a> #r = 'SRC="(.+?)" target="_blank">Play Now<' link = content.split('embeds[') for p in link: try: URL = 'http' + re.compile('http(.+?)"').findall(p)[0] uniques = [] if not '123movies4u' in URL: if URL not in uniques: uniques.append(URL) self.AddFileHost(list, 'SD', URL) except: pass
def GetFileHosts(self, url, list, lock, message_queue,type,season,episode): import json from entertainment.net import Net net = Net(cached=False) CATID=url new_url = self.API+'option=content&id=%s' % url +self.extra() link = json.loads(net.http_GET(new_url,headers=self.HEADERS).content) if len(season)<2: season='0'+season if len(episode)<2: episode='0'+episode data=json.loads(self.GetStream(link['data'],self.DATAKEY)) data=data['listvideos'] if len(data)>1: for field in data: name=field['film_name'].encode('utf8').upper() if type == 'tv_episodes': if 'S%sE%s' % (season,episode) in name: ID=str(field['film_id']) self.TIDYME(list, CATID, ID) else: ID=str(field['film_id']) self.TIDYME(list, CATID, ID) else: for field in data: ID=str(field['film_id']) self.TIDYME(list, CATID, ID)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): import urllib2 import re from entertainment.net import Net net = Net( cached=False, user_agent= 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' ) title = self.CleanTextForSearch(title) name = self.CleanTextForSearch(name) season_pull = "0%s" % season if len(season) < 2 else season episode_pull = "0%s" % episode if len(episode) < 2 else episode tv_url = 'http://newmyvideolink.xyz/index2/?s=%s+S%sE%s' % ( name.replace(' ', '+'), season_pull, episode_pull) movie_url = 'http://newmyvideolink.xyz/index2/?s=%s+%s' % ( name.replace(' ', '+'), year) if type == 'movies': html = net.http_GET(movie_url).content for item in re.finditer(r'<a href="(.+?)" rel="bookmark"', html, re.I): url = item.group(1) self.GetFileHosts(url, list, lock, message_queue) elif type == 'tv_episodes': html = net.http_GET(tv_url).content for item in re.finditer(r'<a href="(.+?)" rel="bookmark"', html, re.I): url = item.group(1) self.GetFileHosts(url, list, lock, message_queue)
def GetFileHosts(self, url, list, lock, message_queue): import re from entertainment.net import Net net = Net() content = net.http_GET(url).content r = '<a href="(.+?)" rel="nofollow">.+?</a><br />' match = re.compile(r).findall(content) r2 = '<strong>Release Title</strong>\: (.+?)<br />' quality = re.compile(r2).findall(content) urlselect = [] for url in match: if url not in urlselect: urlselect.append(url) res = 'SD' if re.findall('720', str(quality), re.I): res = 'HD' elif re.findall('1080', str(quality), re.I): res = 'HD' elif re.findall('CAM', str(quality), re.I): res = 'CAM' elif re.findall('BRRIP', str(quality), re.I): res = 'DVD' #if '720p' in quality or '1080p' in quality or 'BRRip' in quality: #res = 'HD' #elif 'CAM' in quality: #res = 'CAM' #elif 'Cam' in quality: #res = 'CAM' self.AddFileHost(list, res, url)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): import json from entertainment.net import Net net = Net(cached=False) new_url = self.API+'option=search&page=1&total=0&block=0&q=%s' % name.replace(' ','+') +self.extra() link = json.loads(net.http_GET(new_url,headers=self.HEADERS).content) data=json.loads(self.GetStream(link['data'],self.DATAKEY)) for field in data['categories']: TITLE=field['catalog_name'].encode('utf8') action=str(field['catalog_id']) if name in TITLE: if not type == 'tv_episodes': self.GetFileHosts(action, list, lock, message_queue,type,season,episode) else: if year in TITLE: self.GetFileHosts(action, list, lock, message_queue,type,season,episode)
def GetFileHosts(self, url, list, lock, message_queue): import re, urllib from entertainment.net import Net net = Net( user_agent= 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5' ) loginurl = 'https://m.afdah.org/video_info/html5' v = url.split('v=')[1] data = {'v': v} headers = { 'host': 'm.afdah.org', 'origin': 'https://m.afdah.org', 'referer': url, 'user-agent': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5', 'x-requested-with': 'XMLHttpRequest' } first = net.http_POST(loginurl, data, headers).content import json link = json.loads(first) for j in link: quality = j.upper() if '360P' in quality: quality = 'SD' THEURL = urllib.unquote(link[j][3]) + '**' + url self.AddFileHost(list, quality, THEURL, host='GOOGLEVIDEO.COM')
def Resolve(self, url): from entertainment.net import Net import re net = Net(cached=False) url = 'http://d2sy1af2shs9ve.cloudfront.net/tvplayer/streams/playlist/%s' % url response = net.http_GET(url).content import json link = json.loads(response) stream = link['stream'] server = 'http://' + re.compile('http://(.+?)/').findall(stream)[0] m3u8 = net.http_GET(stream).content if not 'chunklist' in m3u8: if not 'http' in m3u8: match = re.compile('(.+?)\n').findall(m3u8) amount = len(match) - 1 g = server + match[amount] else: match = re.compile('http://(.+?)\n').findall(m3u8) amount = len(match) - 1 g = 'http://' + match[amount] M3U8_PATH = g else: M3U8_PATH = stream return M3U8_PATH
def GetFileHosts(self, url, list, lock, message_queue): import re from entertainment.net import Net net = Net( cached=False, user_agent= 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' ) content = net.http_GET(url).content RES = match = re.compile('<h1>(.+?)<').findall(content)[0] #r = '<li><a href="(http://.+?)">(.+?)</a></li>' match = re.compile('<li><a href="(.+?)">(.+?)</a></li>').findall( content) for url, host in match: if 'HDCAM' in RES.upper(): res = 'CAM' if 'CAM' in RES.upper(): res = 'CAM' elif 'DVD' in RES.upper(): res = 'DVD' elif '720' in RES: res = '720P' elif '1080' in RES: res = '1080P' elif 'HD' in RES.upper(): res = 'HD' else: res = '720P' self.AddFileHost(list, res, url)
def GetFileHosts(self, url, list, lock, message_queue): import re from entertainment.net import Net net = Net( cached=False, user_agent= 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5' ) first = net.http_GET(url).content new_url = 'http://www.izlemeyedeger.com/iframe/' + re.compile( '/iframe/(.+?)"').findall(first)[0] headers = {'referer': url} second = net.http_GET(new_url, headers=headers).content match = re.compile('file: "(.+?)".+?label: "(.+?)"', re.DOTALL).findall(second) #print match for THEURL, res in match: quality = res.upper() self.AddFileHost(list, quality, THEURL, host='GOOGLEVIDEO.COM')
def Resolve(self, url): url_splits = url.split('|||||') url = url_splits[0] refurl = url_splits[1] from entertainment.net import Net net = Net() if url.startswith('http://cineblog01'): html = net.http_GET(url, headers={'Referer': refurl}).content import re link = re.search( '<meta http\-equiv=[\'"]refresh[\'"].+?url=(.+?)[\'"] />', html) if link: url = link.group(1) else: link = re.search('window.location.href = [\'"](.+?)[\'"]', html) if link: url = link.group(1) from entertainment import istream play_url = istream.ResolveUrl(url) return play_url
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): from entertainment.net import Net net = Net() title = self.CleanTextForSearch(title) name = self.CleanTextForSearch(name) search_term = name.replace(' ', '%20') search_term = search_term.lower() search_term = search_term.replace('the', '') import re url = 'http://clickplay.to/search/' + search_term + '?' link = net.http_GET(url).content if 'Unfortunately there are no results right now' in link: return None match = re.compile( '<div id="video_list">\s*<a href="(.+?)" class="article" data="(.+?)">.+?<span class="article-title">(.+?) \((.+?)\)</span>', re.DOTALL).findall(link) for tv_url, data, tvshowname, tvshowyear in match: if year in tvshowyear: season_pull = "0%s" % season if len(season) < 2 else season episode_pull = "0%s" % episode if len(episode) < 2 else episode url = tv_url + 'season-' + season + '/' html = net.http_GET(url).content link_url = re.compile('<a href="(.+?)" title=".+?Episode ' + episode + ' / .+?" class=".+?">').findall(html)[0] self.GetFileHosts(link_url, list, lock, message_queue)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): import re from entertainment.net import Net net = Net(do_not_cache_if_any=do_no_cache_keywords_list) if os.path.exists(self.cookie_file): try: os.remove(self.cookie_file) except: pass headers = { 'Host': 'www.watchmoviesall.com', 'Origin': 'http://www.watchmoviesall.com', 'Referer': 'http://www.watchmoviesall.com/search_movies', 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded' } title = self.CleanTextForSearch(title) name = self.CleanTextForSearch(name) form_data = {"q": "%s" % (name)} content = net.http_GET( 'http://www.watchmoviesall.com/search_movies' + name.replace(' ', '%20'), headers).content match = re.compile('<a href="(.+?)">(.+?) \((.+?)\)</a>').findall( content) for url, _name, _year in match: url = 'http://www.watchmoviesall.com' + url if name in _name: if year in _year: self.GetFileHosts(url, list, lock, message_queue)
def GetSection(self, indexer, section, url, type, list, page='', total_pages='', sort_by='', sort_order=''): from entertainment.net import Net import re net = Net() url_type = '' content_type = '' if indexer == common.indxr_Movies:#'[COLOR orange]'+year+'[/COLOR]' if section == 'main': self.AddSection(list, indexer,'al-cinema','Al-Cinema',self.base_url +'al-cinema/',indexer) self.AddSection(list, indexer,'piu-visti','Piu-Visti',self.base_url +'piu-visti/',indexer) self.AddSection(list, indexer,'sub-ita','Sub-Ita',self.base_url +'film/sub-ita/',indexer) self.AddSection(list, indexer,'anno','Anno','http://filmstream.me/news/',indexer) self.AddSection(list, indexer,'genre','Genere','http://filmstream.me/news/',indexer) #self.AddSection(list, indexer,'popular','Popular',self.base_url +'movies/favorites/',indexer) elif section == 'genre': r = re.findall(r'<li><a href="(http://filmstream.me/film/.+?)">(.+?)</a></li>', net.http_GET(url).content, re.I) for genres_url,genres in r[0:]: genres_title = genres.upper() self.AddSection(list, indexer, 'genres_title', genres_title, genres_url, indexer) elif section == 'anno': r = re.findall(r'<li><a href="(http://filminstreaming.eu/anno/.+?)">(.+?)</a></li>', net.http_GET(url).content, re.I) for anno_url,anno in r[0:]: anno_title = anno.upper() self.AddSection(list, indexer, 'anno_title', anno_title, anno_url, indexer) else: self.ExtractContentAndAddtoList(indexer, section, url, type, list, page, total_pages, sort_by, sort_order)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): import re, urllib from entertainment.net import Net net = Net(cached=False) name = self.CleanTextForSearch(name) helper = '%s (%s)' % (name, year) name = urllib.quote(name) search_url = 'https://putlockers.ch/search/search.php?q=' + name #print search_url content = net.http_GET(search_url).content search_res = re.split('Search Results For: "<font color=red>', content)[1] match = re.compile('href="(.+?)" title="(.+?)"').findall(search_res) for url, title in match: if not 'https://' in url: url = url.replace('http://', 'https://') if type == 'tv_episodes': if name.lower() in self.CleanTextForSearch(title.lower()): self.GetFileHosts(url, list, lock, message_queue, season, episode, type) if title == helper or title == helper.replace(':', ' 2:'): self.GetFileHosts(url, list, lock, message_queue, season, episode, type)
def ResolveLive(self, content, url): import re new_content = re.search( 'src=[\'"](http://players.simplestream.com/.+?\.js)[\'"]', content) if new_content: page_url = new_content.group(1) from entertainment.net import Net net = Net() content = net.http_GET(page_url, headers={'Referer': url}).content play_media = re.search('(http.+?\.m3u8)', content) if play_media: content = play_media.group(1) return (True, True, content, url) return (False, False, content, url)
def ResolveLive(self, content, url): import re new_content = re.search("<iframe.+?src=[\"']http://.+?livestream\.com/embed/(.+?)\?", content) if new_content: channel_id = new_content.group(1) playable_url = 'http://x%sx.api.channel.livestream.com/3.0/playlist.m3u8' % channel_id return (True, True, playable_url, url) new_content = re.search("<iframe.+?src=[\"'](http://.+?livestream\.com/accounts/[0-9]+?/events/[0-9]+?/player\?.+?)", content) if new_content: new_url = new_content.group(1) from entertainment.net import Net net = Net() new_content = net.http_GET(new_url, headers={'Referer':url}).content m3u8_url = re.search('[\'"]{1}(http://[^\'"]+?\.m3u8[^\'"]+?)[\'"]{1}', new_content) if m3u8_url: resolved_media_url = m3u8_url.group(1) return (True, True, resolved_media_url, url) return (False, False, content, url)
def Resolve(self, url): import re from entertainment.net import Net net = Net(cached=False) common.addon.log(self.name.upper() + ' - Link: %s' % url) common.addon.show_small_popup( '[B][COLOR blue]I[/B][/COLOR]stream: [B][COLOR white]' + self.name.upper() + '[/B][/COLOR]', 'Resolving', 700, self.icon) html = net.http_GET(url).content net.save_cookies(self.cookie_file) net.set_cookies(self.cookie_file) try: if not re.search(r'value=\"Continue to video', html, re.I): raise Exception('File Not Found') html = net.http_POST(url, form_data={ 'Continue': 'Continue to video' }, headers={ 'Content-Type': 'application/x-www-form-urlencoded' }).content finalLink = re.search(r'var\sxxxx\s\=\s\"(.*?)\"', html) if finalLink: return finalLink.group(1) else: raise Exception('No Media Found To Stream') except Exception, e: common.addon.log(self.name.upper() + ' - Exception occured: %s' % e) common.addon.show_small_popup( '[B][COLOR blue]I[/B][/COLOR]stream: [B][COLOR white]' + self.name.upper() + '[/B][/COLOR]', '[COLOR red]' + str(e) + '[/COLOR]', 3000, self.icon) return None
def Resolve(self, url): print url import re from entertainment.net import Net net = Net(cached=False, user_agent='Apple-iPhone/') tv_user = self.Settings().get_setting('tv_user') tv_pwd = self.Settings().get_setting('tv_pwd') loginurl = 'http://hdtvshows.net/reg.php' html = net.http_GET(loginurl).content match = re.compile('name="Token(.+?)" value="(.+?)"').findall(html) _Token = re.compile( 'name="data\[\_Token\]\[fields\]" value="(.+?)"').findall(html)[0] data = { '_method': 'POST', 'subscriptionsPass': tv_pwd, 'UserUsername': tv_user, 'Token' + match[0][0]: 'login', 'data[_Token][fields]': _Token } headers = { 'Host': 'hdtvshows.net', 'Origin': 'http://hdtvshows.net', 'Referer': 'http://hdtvshows.net/login.php', 'X-Requested-With': 'XMLHttpRequest' } html = net.http_POST(loginurl, data, headers) cookie_jar = os.path.join(cookie_path, "hdtvshows.lwp") if os.path.exists(cookie_path) == False: os.makedirs(cookie_path) net.save_cookies(cookie_jar) net.set_cookies(cookie_jar) html = net.http_GET(url).content match = re.compile('<video id="ipadvideo" src="(.+?)"').findall(html) return match[0].replace('|', '%7C')
def ExtractContentAndAddtoList(self, indexer, section, url, type, list, page='', total_pages='', sort_by='', sort_order=''): net = Net(cached=False) type = common.indxr_Movies mode = common.mode_File_Hosts indexer = common.indxr_Movies if section == 'new_releases': response = net.http_GET(url).content stuff = json.loads(response) for movies in stuff['movies']: title = movies['title'] num = movies['year'] name = title.encode('utf8') year = str(num) self.AddContent(list, indexer, common.mode_File_Hosts, name + ' (' + year +')', '', type, '', name, year) elif section == 'trakt_watchlist': response = net.http_GET(url).content stuff = json.loads(response) for movies in stuff: name = movies['title'] if name: name = name.encode('utf8') year = str(movies['year']) self.AddContent(list, indexer, mode, name + ' (' + year +')', '', type, '', name, year) elif section == 'list_name': response = net.http_GET(url).content stuff = json.loads(response) for items in stuff['items']: movies = items['movie'] name = movies['title'] if name: name = name.encode('utf8') year = str(movies['year']) self.AddContent(list, indexer, mode, name + ' (' + year +')', '', type, '', name, year) else: if page == '': page = '1' else: page = str(int(page)) url = url + '&page=' + page response = net.http_GET(url).content stuff = json.loads(response) total_pages = stuff['total_pages'] self.AddInfo(list, indexer, section, url, type, str(page), str(total_pages)) for movies in stuff['results']: name = movies['title'] date = movies['release_date'] year = str(date)[0:4] name = name.encode('utf8') self.AddContent(list, indexer, common.mode_File_Hosts, name + ' (' + year +')', '', type, '', name, year)
def GetFileHostsForContent(self, title, name, year, season, episode, type, list, lock, message_queue): import re from entertainment.net import Net from entertainment import bing net = Net(cached=False) title = self.CleanTextForSearch(title) name = self.CleanTextForSearch(name) search_term = name + ' ' + year RESULT_TERM = 'Watch %s (%s) Full HD' % (name, year) try: GOOGLED = self.GoogleSearch('theonlinemovies.pro', search_term) except: GOOGLED = bing.Search('theonlinemovies.pro', search_term) uniques = [] for result in GOOGLED: movie_url = result['url'] TITLE = result['title'] if RESULT_TERM.lower() in TITLE.lower(): if 'full-hd-movie-online' in movie_url: from entertainment import cloudflare content = cloudflare.solve( movie_url, UA= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.3' ) match = re.compile("iframe.php\?ref=(.+?)&").findall( content) for ID in match: self.GetFileHosts( 'http://videomega.tv/iframe.php?ref=' + ID, list, lock, message_queue, 'HD')
def ResolveLive(self, content, url): import re new_content = re.search( "<script.+?id=[\"'](.+?)[\"'].+?src=[\"']http://embeds\.coolsport\.tv/(.+?)\.js[\"']", content) if new_content: headers = {'Referer': url} page_url = 'http://embeds.coolsport.tv/' + new_content.group( 2) + '.php?id=' + new_content.group(1) from entertainment.net import Net net = Net() content = net.http_GET(page_url, headers=headers).content return (False, True, content, page_url) new_content = re.search( "<iframe.+?src=[\"'](http://www.coolsport.tv/.+?)[\"']", content) if new_content: page_url = new_content.group(1) from entertainment.net import Net net = Net() content = net.http_GET(page_url, headers={'Referer': url}).content new_content = re.search( "<script.+?id=[\"'](.+?)[\"'].+?src=[\"']http://embeds\.coolsport\.tv/(.+?)\.js[\"']", content) headers = {'Referer': page_url} page_url = 'http://embeds.coolsport.tv/' + new_content.group( 2) + '.php?id=' + new_content.group(1) content = net.http_GET(page_url, headers=headers).content return (False, True, content, page_url) return (False, False, content, url)
def login(self): headers = { 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25', 'Host': 'ororo.tv', 'Pragma': 'no-cache', 'Referer': 'http://ororo.tv/en', 'Upgrade-Insecure-Requests': '1', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch', 'Accept-Language': 'en-US,en;q=0.8', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' } tv_user = self.Settings().get_setting('tv_user') tv_pwd = self.Settings().get_setting('tv_pwd') from entertainment.net import Net net = Net( cached=False, user_agent= 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25' ) tries = 0 while True: html = html = net.http_GET('http://ororo.tv/nl/', headers=headers).content if html.startswith('http://') and tries < MAX_REDIRECT: tries += 1 url = html else: break data = { 'user[email]': tv_user, 'user[password]': tv_pwd, 'user[remember_me]': 1 } html = net.http_POST('http://ororo.tv/en/users/sign_in', data, headers=headers).content net.save_cookies(self.cookie_file)