def test_video(url): data = client.request(url) if 'We’re Sorry!' in data: data = client.request(url.replace("/embed/", "/f/")) if 'We’re Sorry!' in data: return False, "[Openload] No file available" return True, ""
def GETAUTOPLAY(url): #progressDialog = xbmcgui.DialogProgress() #progressDialog.create(addon_name, 'Gathering Links For Your Selected Item: [COLOR blue]%s[/COLOR]'%name) #progressDialog.update(0) base_link = 'http://watch5s.is' strm_link = 'http://play.watch5s.is/grabber-api/episode/%s?token=%s' url = re.sub('/$', '', url) req = url + '/watch/' #Text_Box('h',req) referer = req r = client.request(req) if '<title>Watch Free Movies Online, Best Site to Watch Free Movies HD - WATCH5S.TO</title>' in r: r = client.request(url) part = tools.regex_from_to(r, '<div id="mv-info">', '</div>') url = tools.regex_from_to(part, 'href="', '"') r = client.request(url) try: server = tools.regex_from_to(r, '<strong>SERVER 1</strong>', '</a>') server = tools.regex_from_to(server, 'href="', '"') except: try: server = tools.regex_from_to(r, '<strong>SERVER 10</strong>', '</a>') server = tools.regex_from_to(server, 'href="', '"') except: server = tools.regex_from_to(r, '<strong>OpenLoad</strong>', '</a>') server = tools.regex_from_to(server, 'href="', '"') open = client.request(server) t = re.findall('player_type\s*:\s*"(.+?)"', open)[0] if not t == 'embed': s = client.parseDOM(open, 'input', ret='value', attrs={'name': 'episodeID'})[0] t = ''.join( random.sample( string.digits + string.ascii_uppercase + string.ascii_lowercase, 8)) k = hashlib.md5('!@#$%^&*(' + s + t).hexdigest() v = hashlib.md5(t + referer + s).hexdigest() stream = strm_link % (s, t) cookie = '%s=%s' % (k, v) u = client.request(stream, referer=referer, cookie=cookie, timeout='10') url = tools.regex_from_to(u, '"file":"', '"').replace('\/', '/') if not 'grabber-api' in url: return url else: url = tools.regex_from_to(open, 'embed_src: "', '"') return url
def test_video(url): data = client.request(url) if 'We’re Sorry!' not in data: return True else: data = client.request(url.replace("/embed/", "/f/")) if 'We’re Sorry!' not in data: return True else: return False
def resolve(name, url, iconimage, description): xbmc.log('URLLLL: {}'.format(url)) if 'm3u8' in url: link = url link += '|User-Agent={}'.format(urllib.quote_plus(client.agent())) liz = xbmcgui.ListItem(name, iconImage=ICON, thumbnailImage=iconimage) else: url = base_url + url if url.startswith('/') else url info = client.request(url, headers=headers) head = client.parseDOM(info, 'title')[0].encode('utf-8') # title = client.parseDOM(info, 'meta', ret='content', attrs={'name': 'description'})[0].encode('utf-8') # name = '{0} - {1}'.format(head, title) poster = client.parseDOM(info, 'meta', ret='content', attrs={'property': 'og:image'})[0] link = re.findall(r'''\,url:['"](.+?)['"]\}''', info, re.DOTALL)[0] link += '|User-Agent={}&Referer={}'.format( urllib.quote_plus(client.agent()), urllib.quote_plus(url)) liz = xbmcgui.ListItem(head, iconImage=ICON, thumbnailImage=poster) try: liz.setInfo(type="Video", infoLabels={"Title": description}) liz.setProperty("IsPlayable", "true") liz.setPath(str(link)) xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, liz) except: control.infoDialog( "[COLOR red]Dead Link[/COLOR]!\n[COLOR white]Please Try Another[/COLOR]", NAME, '')
def get_content(url): #5 <div id="content"><div class="container"> r = client.request(url, headers=headers) # data = client.parseDOM(r, 'div', attrs={'class': 'container'})[0] # xbmc.log('DATAAAA: %s' % data) data = client.parseDOM(r, 'li', attrs={'class': 'webcam'}) for item in data: link = client.parseDOM(item, 'a', ret='href')[0] if link == '#': continue link = client.replaceHTMLCodes(link) link = link.encode('utf-8') name = client.parseDOM(item, 'span', attrs={'class': 'title'})[0] name = client.replaceHTMLCodes(name) name = name.encode('utf-8') desc = client.parseDOM(item, 'span', attrs={'class': 'description'})[0] desc = clear_Title(desc) desc = desc.decode('ascii', errors='ignore') poster = client.parseDOM(item, 'img', ret='data-original')[0] poster = client.replaceHTMLCodes(poster) poster = 'https:' + poster if poster.startswith('//') else poster poster = poster.encode('utf-8') addDir('[B][COLOR white]%s[/COLOR][/B]' % name, link, 100, poster, '', desc) xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def get_video_openload(url): data = client.request(url, headers={'User-Agent': ua}) try: try: code = re.findall('p id="[^"]+" style="">(.*?)<\/p', data, flags=re.DOTALL)[0] except IndexError: code = re.findall('<p style="" id="[^"]+">(.*?)</p>', data, flags=re.DOTALL)[0] _0x59ce16 = eval( re.findall('_0x59ce16=([^;]+)', data)[0].replace('parseInt', 'int')) _1x4bfb36 = eval( re.findall('_1x4bfb36=([^;]+)', data)[0].replace('parseInt', 'int')) parseInt = eval( re.findall('_0x30725e,(\(parseInt.*?)\),', data)[0].replace('parseInt', 'int')) link = decode(code, parseInt, _0x59ce16, _1x4bfb36) link = read_openload(link) return '%s|User-Agent=%s&Referer=%s' % (link, urllib.quote_plus(ua), urllib.quote_plus(url)) except: return ''
def Get_content(url): #5 r = client.request(url, headers=headers) data = client.parseDOM(r, 'div', attrs={'class': 'imagen'}) data = zip(client.parseDOM(data, 'a', ret='href'), client.parseDOM(data, 'a', ret='title'), client.parseDOM(data, 'img', ret='src')) for item in data: link, name, icon = item[0], item[1], item[2] link = client.replaceHTMLCodes(link) link = link.encode('utf-8') name = client.replaceHTMLCodes(name) name = name.encode('utf-8') if 'capitulo' in link: addDir('[B][COLOR white]%s[/COLOR][/B]' % name, link, 10, icon, FANART, '') else: addDir('[B][COLOR white]%s[/COLOR][/B]' % name, link, 8, icon, FANART, '') try: np = client.parseDOM(r, 'li') np = [i for i in np if 'iguiente' in i][0] np = client.parseDOM(np, 'a', ret='href')[0] page = re.search('(\d+)', np, re.DOTALL) page = '[COLORlime]%s[/COLOR]' % page.groups()[0] url = urlparse.urljoin(url, np) url = client.replaceHTMLCodes(url) addDir('[B][COLORgold]Siguiente(%s)>>>[/COLOR][/B]' % page, url, 5, ICON, FANART, '') except: pass xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def get_content(url): # 5 <div id="content"><div class="container"> r = six.ensure_str(client.request(url, headers=headers)) data = client.parseDOM(r, 'div', attrs={'class': 'container'})[0] data = dom.parse_dom(data, 'a', req='href') data = [i for i in data if 'subt' in i.content] # xbmc.log('DATA22: {}'.format(str(data))) for item in data: link = item.attrs['href'] if link == '#': continue link = client.replaceHTMLCodes(link) name = client.parseDOM(item.content, 'img', ret='alt')[0] name = client.replaceHTMLCodes(name) desc = client.parseDOM(item.content, 'p', attrs={'class': 'subt'})[0] desc = clear_Title(desc) try: poster = client.parseDOM(item.content, 'img', ret='data-src')[0] except IndexError: poster = client.parseDOM(item.content, 'img', ret='src')[0] poster = client.replaceHTMLCodes(poster) poster = 'https:' + poster if poster.startswith('//') else poster if six.PY2: link = link.encode('utf-8') name = name.encode('utf-8') desc = desc.decode('ascii', errors='ignore') poster = poster.encode('utf-8') link = '{}/{}'.format(base_url, link) addDir('[B][COLOR white]%s[/COLOR][/B]' % name, link, 100, poster, '', desc) xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def index(url): if 'movies' in url: mode = '10' else: mode = '4' open = client.request(url) all = regex_get_all(open, '<section class="cardBox.+?flip">', '</section>') for a in all: name = regex_from_to(a, 'alt="', '"') if 'span class' in name: n = regex_from_to(a, 'href=".+?">', '<') ep = regex_from_to(a, '<p>', '</p>') name = n + ' ' + ep icon = regex_from_to(a, 'src="', '"') url = regex_from_to(a, 'href="', '"') mode = '10' else: url = regex_from_to(a, 'href="', '"') icon = regex_from_to(a, 'img src="', '"') addDir(name, urllib.quote_plus(url), mode, icon, fanart, '') try: np = re.compile('<a href="(.+?)" class="next-page-button">').findall( open) for url in np: addDir('[COLOR lime][B]Next Page >[/COLOR][/B]', url, 2, icon, fanart, '') except: pass
def evaluate(host): try: host, referer = host.split('|') if 'openload' in host: from resources.resolvers import openload try: host = openload.get_video_openload(host) except BaseException: host = resolveurl.resolve(host) return host elif 'gamovideo' in host: r = client.request(host, referer=referer) #xbmc.log('@#@GAMO-DATA:%s' % r, xbmc.LOGNOTICE) from resources.modules import jsunpack source = re.findall('''(eval\(function\(p,a,c,k,e,(?:r|d).+?.split\('\|'\)\)\))''', r, re.DOTALL)[0] data = jsunpack.unpack(source) #xbmc.log('@#@GAMO-UNPACK:%s' % data, xbmc.LOGNOTICE) link = re.findall('''file:['"](http.+?v.mp4)['"]''', data, re.DOTALL)[0] #xbmc.log('@#@GAMO-link:%s' % link, xbmc.LOGNOTICE) return link elif 'hqq' in host or 'waaw' in host: from resources.resolvers import netutv media = netutv.get_video_url(host, referer) return media elif resolveurl.HostedMediaFile(host): host = resolveurl.resolve(host) return host else: return host except: return host
def Get_links(name,url): #10 OPEN = client.request(url, headers=headers) Regex = client.parseDOM(OPEN, 'iframe', ret='src') for link in Regex[::-1]: if 'verestrenos' in link: idp = link.split('mula=')[1] post = 'mole=%s' % idp link = client.request('http://www.verestrenos.net/rm/ajax.php', post=post) vid_id = re.compile('http[s]?://(.+?)\.', re.DOTALL).findall(link)[0] if 'sebuscar' in vid_id: continue vid_id = vid_id.replace('hqq', 'netu.tv') addDir('[B][COLOR white]{0} [B]| [COLOR lime]{1}[/COLOR][/B]'.format(name, vid_id), '%s|%s' % (link, url), 100, iconimage, FANART, name) xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def season(url): open = client.request(url) part = regex_from_to(open, '<b>Seasons:</b>', '</div>') regex = re.compile('href="(.+?)".+?">(.+?)<').findall(part) for url, name in regex: addDir('Season %s' % name, url, 5, icon, fanart, '')
def episodes(url): open = client.request(url) all = regex_get_all(open, '<h5 class="episode-title">', '</span>') for a in all: name = regex_from_to(a, 'title="', '"') url = regex_from_to(a, 'href="', '"') icon = regex_from_to(a, 'data-img="', '"') addDir(name, url, 10, icon, fanart, '')
def COUNTRY(url): link = client.request(url) match = re.findall( r'<li><label><input class="country-ids" value="(.*?)" name=".*?" type="checkbox" >(.*?)</label></li>', str(link), re.I | re.DOTALL) for country_id, name in match: url = base_url + '/filter/?sort=rating&type=movie&quality=all&countries%%5B%%5D=%s&year=all' % ( country_id) addDir(name, url, 1, icon, fanart, '')
def get_the_random(url): #3 r = client.request(url, headers=headers) frames = zip(client.parseDOM(r, 'a', ret='href'), client.parseDOM(r, 'a')) frame = [i[0] for i in frames if 'random cam' in i[1].lower()][0] frame = base_url + frame if frame.startswith('/') else frame # xbmc.log('FRAME:%s' % frame) info = client.request(frame, headers=headers) head = client.parseDOM(info, 'title')[0].encode('utf-8') # title = client.parseDOM(info, 'meta', ret='content', attrs={'name': 'description'})[0].encode('utf-8') # name = '{0} - {1}'.format(head, title) # xbmc.log('NAME:%s' % head) poster = client.parseDOM(info, 'meta', ret='content', attrs={'property': 'og:image'})[0] # xbmc.log('INFO:%s' % info) link = re.findall(r'''\,url:['"](.+?)['"]\}''', info, re.DOTALL)[0] addDir('[B][COLOR white]%s[/COLOR][/B]' % head, link, 100, poster, '', 'Random Live Cam')
def cache(self, i): try: self.r = client.request(i) self.r = re.sub(r'[^\x00-\x7F]+', ' ', self.r) t = re.findall('(?:\"|\')original_title(?:\"|\')\s*:\s*(?:\"|\')(.+?)(?:\"|\')', self.r)[0] y = re.findall('(?:\"|\')year(?:\"|\')\s*:\s*(?:\"|\'|)(\d{4})', self.r)[0] return (t, y) except BaseException: pass
def SEARCH(): kb = xbmc.Keyboard('', 'Enter Search Query') kb.doModal() if (kb.isConfirmed()): text = kb.getText() if text == "": xbmcgui.Dialog().notification( '[COLOR blue]EMPTY SEARCH QUERY[/COLOR] ', 'PLEASE TRY AGAIN') else: text = str(text).replace(' ', '+') url = base_url + '/search/?q=' + text open = client.request(url) INDEX(url)
def get_the_random(url): # 3 r = six.ensure_str(client.request(url, headers=headers)) frame = client.parseDOM(r, 'div', attrs={'class': 'row home'})[0] head = client.parseDOM(frame, 'h1')[0] head = clear_Title(head) frame = client.parseDOM(frame, 'a', ret='href')[0] frame = base_url + frame if frame.startswith('/') else frame # xbmc.log('FRAME:%s' % frame) if six.PY2: head = head.encode('utf-8') addDir('[B][COLOR white]%s[/COLOR][/B]' % head, frame, 100, ICON, '', 'Random Live Cam') xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def Get_letras(url): #9 r = client.request(url, headers=headers) r = client.parseDOM(r, 'ul', attrs={'id': 'letras'})[0] r = client.parseDOM(r, 'li') for item in r: name = client.parseDOM(item, 'a')[0] name = client.replaceHTMLCodes(name) name = name.encode('utf-8') url = client.parseDOM(item, 'a', ret='href')[0] url = client.replaceHTMLCodes(url) url = url.encode('utf-8') addDir('[B][COLOR white]Telenovelas de %s[/COLOR][/B]' % name, url, 5, ICON, FANART, '') xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def Episodes(url): #8 r = client.request(url, headers=headers) data = client.parseDOM(r, 'ul', attrs={'id': 'listado'})[0] data = client.parseDOM(data, 'li') data = zip(client.parseDOM(data, 'a', ret='href'), client.parseDOM(data, 'a')) get_icon = client.parseDOM(r, 'img', ret='src', attrs={'class': 'transparent'})[0] for item in data[::-1]: url, title = client.replaceHTMLCodes(item[0]), client.replaceHTMLCodes(item[1]) url = url.encode('utf-8') title = title.encode('utf-8') addDir(title, url, 10, get_icon, FANART, '') xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def genres(url): if 'movies' in url: url = base_url + '/movies/' else: url = base_url + '/tv-shows/' open = client.request(url) part = regex_from_to(open, 'Genres:', '</select>') regex = re.compile('<option value="(.+?)">(.+?)<').findall(part) for url, name in regex: if not 'All Movies' in name: if not 'All TV Shows' in name: addDir(name, url, 2, icon, fanart, '')
def get_country(url): #4 r = client.request(url, headers=headers) r = client.parseDOM(r, 'li', attrs={'class': 'dropdown'})[0] r = zip(client.parseDOM(r, 'a', attrs={'class': 'menu-item'}), client.parseDOM(r, 'a', attrs={'class': 'menu-item'}, ret='href')) for name, link in r: name = re.sub('<.+?>', '', name).replace(' ', ' ') name = client.replaceHTMLCodes(name) name = name.encode('utf-8') link = client.replaceHTMLCodes(link) link = link.encode('utf-8') link = base_url + link if link.startswith('/') else link addDir('[B][COLOR white]%s[/COLOR][/B]' % name, link, 5, ICON, FANART, '') xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def get_country(url): # 4 r = six.ensure_str(client.request(url, headers=headers)) r = client.parseDOM(r, 'div', attrs={'class': 'dropdown mega-dropdown live'})[0] r = zip(client.parseDOM(r, 'a'), client.parseDOM(r, 'a', ret='href')) for name, link in r: name = re.sub('<.+?>', '', name).replace(' ', ' ') name = client.replaceHTMLCodes(name) name = '[B][COLOR white]{}[/COLOR][/B]'.format(name) link = client.replaceHTMLCodes(link) if six.PY2: name = name.encode('utf-8') link = link.encode('utf-8') link = base_url + link if link.startswith('/') else link addDir(name, link, 5, ICON, FANART, '') xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def get_greek_cams(): link = 'http://www.livecameras.gr/' headers = {"User-Agent": client.agent()} r = client.request(link, headers=headers) r = r.encode('utf-8') cams = client.parseDOM(r, 'div', attrs={'class': 'fp-playlist'})[0] cams = zip(client.parseDOM(cams, 'a', ret='href'), client.parseDOM(cams, 'a', ret='data-title'), client.parseDOM(cams, 'img', ret='src')) for stream, name, poster in cams: name = re.sub('".+?false', '', name) name = client.replaceHTMLCodes(name).encode('utf-8') stream = 'http:' + stream if stream.startswith('//') else stream stream += '|Referer={}'.format(link) poster = link + poster if poster.startswith('/') else poster addDir('[B][COLOR white]%s[/COLOR][/B]' % name, stream, 100, poster, '', 'name')
def get_events(url): # 5 data = client.request(url) # xbmc.log('@#@EDATAAA: {}'.format(data), xbmc.LOGNOTICE) events = list( zip( client.parseDOM(str(data), 'li', attrs={'class': "item itemhov"}), re.findall(r'<i class="material-icons">(.+?)</a> </li>', str(data), re.DOTALL))) # addDir('[COLORcyan]Time in GMT+2[/COLOR]', '', 'BUG', ICON, FANART, '') for event, streams in events: # xbmc.log('@#@EVENTTTTT:%s' % event, xbmc.LOGNOTICE) watch = '[COLORlime]*[/COLOR]' if '>Live<' in event else '[COLORred]*[/COLOR]' try: teams = client.parseDOM(event, 'td') # xbmc.log('@#@TEAMSSSS:%s' % str(teams), xbmc.LOGNOTICE) home, away = re.sub(r'\s*(<img.+?>)\s*', '', teams[0]), re.sub(r'\s*(<img.+?>)\s*', '', teams[2]) if six.PY2: home = home.strip().encode('utf-8') away = away.strip().encode('utf-8') teams = '[B]{0} vs {1}[/B]'.format(home, away) except IndexError: teams = client.parseDOM(event, 'center')[0] teams = re.sub(r'<.+?>|\s{2}', '', teams) teams = teams.encode('utf-8') if six.PY2 else teams teams = '[B]{}[/B]'.format(teams) # xbmc.log('@#@TEAM-FINAL:%s' % str(teams), xbmc.LOGNOTICE) lname = client.parseDOM(event, 'a')[1] lname = re.sub(r'<.+?>', '', lname) time = client.parseDOM(event, 'span', attrs={'class': 'gmt_m_time'})[0] time = time.split('GMT')[0].strip() cov_time = convDateUtil( time, 'default', 'GMT{}'.format(str(control.setting('timezone')))) # xbmc.log('@#@COVTIMEEE:%s' % str(cov_time), xbmc.LOGNOTICE) ftime = '[COLORgold][I]{}[/COLOR][/I]'.format(cov_time) name = '{0}{1} {2} - [I]{3}[/I]'.format(watch, ftime, teams, lname) # links = re.findall(r'<a href="(.+?)".+?>( Link.+? )</a>', event, re.DOTALL) streams = str(quote(base64.b64encode(six.ensure_binary(streams)))) icon = client.parseDOM(event, 'img', ret='src')[0] icon = urljoin(BASEURL, icon) addDir(name, streams, 4, icon, FANART, name)
def get_new(url): r = client.request(url, headers=headers) r = client.parseDOM(r, 'div', attrs={'class': 'row'})[0] r = zip(client.parseDOM(r, 'a', ret='href'), client.parseDOM(r, 'img', ret='src'), client.parseDOM(r, 'img', ret='alt')) for link, poster, name in r: name = client.replaceHTMLCodes(name) name = name.encode('utf-8') link = client.replaceHTMLCodes(link) link = link.encode('utf-8') link = 'https:' + link if link.startswith('//') else link poster = client.replaceHTMLCodes(poster) poster = 'https:' + poster if poster.startswith('//') else poster poster = poster.encode('utf-8') addDir('[B][COLOR white]%s[/COLOR][/B]' % name, link, 100, poster, FANART, '') xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def get_video_openload(url): data = client.request(url) try: code = re.findall('p style="" id="[^"]+">(.*?)<\/p', data, flags=re.DOTALL)[0] _0x59ce16 = eval( re.findall('_0x59ce16=([^;]+)', data)[0].replace('parseInt', 'int')) _1x4bfb36 = eval( re.findall('_1x4bfb36=([^;]+)', data)[0].replace('parseInt', 'int')) parseInt = eval( re.findall('_0x30725e,(\(parseInt.*?)\),', data)[0].replace('parseInt', 'int')) link = decode(code, parseInt, _0x59ce16, _1x4bfb36) link = read_openload(link) ua = "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3163.100 Safari/537.36" return '%s|User-Agent=%s&Referer=%s' % (link, urllib.quote(ua), url) except: pass return ''
def resolver(host): referer = re.sub('embed-', 'player-', host) OPEN = client.request(referer, referer=referer) key = '' for list in find_multiple_matches(OPEN, '_[^=]+=(\[[^\]]+\]);'): if len(list) == 703 or len(list) == 711: key = "".join(eval(list)[7:9]) break if key.startswith("embed"): key = key[6:] + key[:6] matches = find_single_match( OPEN, "<script type=[\"']text/javascript[\"']>(eval.*?)</script>") data = jsunpack.unpack(matches).replace("\\", "") data = find_single_match(data.replace('"', "'"), "sources\s*=[^\[]*\[([^\]]+)\]") print data matches = find_multiple_matches(data, "[src|file]:'([^']+)'") video_urls = [] for video_url in matches: _hash = find_single_match(video_url, '[A-z0-9\_\-]{40,}') hash = decrypt(_hash, key) video_url = video_url.replace(_hash, hash) filename = get_filename_from_url(video_url)[-4:] if video_url.startswith("rtmp"): rtmp, playpath = video_url.split("vod/", 1) video_url = "%svod/ playpath=%s swfUrl=%splayer6/jwplayer.flash.swf pageUrl=%s" % \ (rtmp, playpath, 'http://streamplay.to/', host) filename = "RTMP" elif video_url.endswith("/v.mp4"): video_url_flv = re.sub(r'/v.mp4', '/v.flv', video_url) video_urls.append(["flv [streamplay]", video_url_flv]) video_urls.append([filename + " [streamplay]", video_url]) video_urls.sort(key=lambda x: x[0], reverse=True) return video_urls
def get_cat_cams(): try: html = six.ensure_str(client.request(base_url, referer=BASEURL)) data = client.parseDOM(html, 'li', attrs={'class': 'dropdown mega-dropdown'})[0] cats = client.parseDOM(data, 'div', attrs={'class': 'container-fluid'})[0] cats = dom.parse_dom(cats, 'a', req='href') for cat in cats: name = client.parseDOM(cat.content, 'p', attrs={'class': 'tcam'})[0] if six.PY2: name = name.encode('utf-8') name = '[B][COLOR white]{}[/COLOR][/B]'.format(name) icon = client.parseDOM(cat.content, 'img', ret='data-src')[0] icon = 'https:{}'.format(icon) if icon.startswith('//') else icon icon = icon + '|Referer={}'.format(base_url) url = cat.attrs['href'][3:] url = '{2}/{0}/{1}'.format(web_lang, url, base_url) addDir(name, url, 5, icon, FANART, '') except BaseException: pass xbmcplugin.setContent(int(sys.argv[1]), 'movies')
def GETLINKS(url, name): progressDialog = xbmcgui.DialogProgress() progressDialog.create(addon_name, 'Gathering Links For: [COLOR blue]%s[/COLOR]' % name) progressDialog.update(0) name = str(name).replace(' [COLOR blue]', '').replace( '[/COLOR]', '').replace('CAM', '').replace('SD', '').replace('HD', '') name = tools.geturl(name) name = re.sub('-$', '', name) name = re.sub('^-', '', name) base_link = 'http://watch5s.is' strm_link = 'http://play.watch5s.is/grabber-api/episode/%s?token=%s' url = re.sub('/$', '', url) req = url + '/watch/' #Text_Box('h',req) referer = req r = client.request(req) if '<title>Watch Free Movies Online, Best Site to Watch Free Movies HD - WATCH5S.TO</title>' in r: r = client.request(url) part = tools.regex_from_to(r, '<div id="mv-info">', '</div>') url = tools.regex_from_to(part, 'href="', '"') r = client.request(url) all = tools.regex_get_all(r, '<div class="les-content">', '</div>') for a in all: try: u = tools.regex_from_to(a, '<a href="', '"') qual = tools.regex_from_to(a, 'first-ep.*?">', '<') p = client.request(u, referer=referer, timeout='10') t = re.findall('player_type\s*:\s*"(.+?)"', p)[0] if not t == 'embed': s = client.parseDOM(p, 'input', ret='value', attrs={'name': 'episodeID'})[0] t = ''.join( random.sample( string.digits + string.ascii_uppercase + string.ascii_lowercase, 8)) k = hashlib.md5('!@#$%^&*(' + s + t).hexdigest() v = hashlib.md5(t + referer + s).hexdigest() stream = strm_link % (s, t) cookie = '%s=%s' % (k, v) u = client.request(stream, referer=referer, cookie=cookie, timeout='10') url = tools.regex_from_to(u, '"file":"', '"') if not 'grabber-api' in url: host = 'GVIDEO' addDir('%s | [COLOR blue]%s[/COLOR]' % (host, qual), urllib.quote_plus(str(url).replace('\/', '/')), 7, icon, fanart, '') else: url = tools.regex_from_to(p, 'embed_src: "', '"') if 'openload' in url: host = 'OPENLOAD' addDir('%s | [COLOR blue]%s[/COLOR]' % (host, qual), url, 7, icon, fanart, '') except: pass progressDialog.close()