def POPULARWATCHS(murl): main.GA("Watchseries", "PopularShows") link = main.OPENURL2(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile('href="([^"]+)" title=".+?">([^<]+)</a><br />').findall( link) main.addLink('[COLOR red]Most Popular Series[/COLOR]', '', art + '/link.png') for url, name in match[0:12]: main.addDirT(name, 'http://watchseries.ag' + url, 578, '', '', '', '', '', '') main.addLink('[COLOR red]Most Popular Cartoons[/COLOR]', '', art + '/link.png') for url, name in match[12:24]: main.addDirT(name, 'http://watchseries.ag' + url, 578, '', '', '', '', '', '') main.addLink('[COLOR red]Most Popular Documentaries[/COLOR]', '', art + '/link.png') for url, name in match[24:36]: main.addDirT(name, 'http://watchseries.ag' + url, 578, '', '', '', '', '', '') main.addLink('[COLOR red]Most Popular Shows[/COLOR]', '', art + '/link.png') for url, name in match[36:48]: main.addDirT(name, 'http://watchseries.ag' + url, 578, '', '', '', '', '', '') main.addLink('[COLOR red]Most Popular Sports[/COLOR]', '', art + '/link.png') for url, name in match[48:60]: main.addDirT(name, 'http://watchseries.ag' + url, 578, '', '', '', '', '', '')
def TV_TOP10(url): html = main.OPENURL2(url) if html == None: return r = re.findall('Top 10 TV Episodes</h1>(.+?)«More TV Shows»', html, re.M|re.DOTALL) pattern = '<a target="_blank" title="Watch online: (.+?)".+?href="/(.+?)"><img' r = re.findall(r''+pattern+'', str(r), re.M|re.DOTALL) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(r) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for tname, url in r: r = re.findall(r'\d+/(.+?)/season_(\d+)/episode_(\d+)/', url) for name, season, episode in r: name = name.replace('_', ' ') name = name.strip()+' Season '+season.strip()+' Episode '+episode.strip()+' ('+season.strip()+'x'+episode.strip()+')' if ':' in name: name = re.findall('(.+?)\:', name)[0] name = name.strip()+' Season '+season.strip()+' Episode '+episode.strip()+' ('+season.strip()+'x'+episode.strip()+')' main.addDirTE(name.replace('.',''),url,1026,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close()
def LINKLIST(mname, url): link = main.OPENURL2(url) link = link.replace('<iframe src="http://ads.affbuzzads.com', '') link = main.unescapes(link) if selfAddon.getSetting("hide-download-instructions") != "true": main.addLink( "[COLOR red]For Download Options, Bring up Context Menu Over Selected Link.[/COLOR]", '', '') match = re.compile('<iframe src="(.+?)" frameborder', re.DOTALL).findall(link) for url in match: hostn = re.compile("http://(.+?)/.+?").findall(url) for hname in hostn: host = hname.replace('www.', '').replace('embed.', '').replace( '.es', '').replace('.in', '').replace('.sx', '').replace( '.net', '').replace('.com', '').replace('.to', '').replace( '.org', '').replace('.ch', '').replace('.eu', '').replace('.ES', '') host = host.split('.')[0] if main.supportedHost(host): mname = main.removeColoredText(mname) main.addDown2(mname + ' [COLOR blue]' + host.upper() + ' [/COLOR]', url, 314, art + '/hosts/' + host.lower() + ".png", art + '/hosts/' + host.lower() + ".png")
def LAST_AIRED(url): html = main.OPENURL2(url) html = html.decode('ISO-8859-1').encode('utf-8', 'ignore') if html == None: return r = re.findall(r'Last Aired TV Shows/Episodes</div>(.+?)«Browse all latest TV Episodes»',html, re.M|re.DOTALL)[0] pattern = 'href="/(player.+?)">' r = re.findall(r''+pattern+'', r, re.M|re.DOTALL) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(r) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url in r: r = re.findall(r'player/\d+/(.+?)/season_(\d+)/episode_(\d+)/.+?/',url)#.replace('_', ' ') for name, season, episode in r: name = name.replace('_', ' ') name = name.strip()+' Season '+season.strip()+' Episode '+episode.strip()+' ('+season.strip()+'x'+episode.strip()+')' if ':' in name: name = re.findall('(.+?)\:', name)[0] name = name.strip()+' Season '+season.strip()+' Episode '+episode.strip()+' ('+season.strip()+'x'+episode.strip()+')' main.addDirTE(name.replace('.',''),url,1026,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close()
def LATEST_TV(url): html = main.OPENURL2(url) html = html.replace('’',"'") if html == None: return pattern = '<a target="_blank" title="Watch online: (.+?)"'#name pattern += '.+?href="/(player/.+?)"><img.+?'#url r = re.findall(r''+pattern+'',html, re.I|re.M|re.DOTALL) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(r) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for name, url in r: r = re.findall(r'(.+?) - Season: (\d+) Episode: (\d+) -', name) for name, season, episode in r: name = name.strip()+' Season '+season.strip()+' Episode '+episode.strip()+' ('+season.strip()+'x'+episode.strip()+')' if ':' in name: name = re.findall('(.+?)\:', name)[0] name = name.strip()+' Season '+season.strip()+' Episode '+episode.strip()+' ('+season.strip()+'x'+episode.strip()+')' main.addDirTE(name.replace('.',''),url,1026,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close()
def LISTFULLS(murl): link=main.OPENURL2(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match=re.compile('full-stream-view-hover"><img src="(.+?)" alt="(.+?)".+?<h2><a href="(.+?)">.+?</a></h2>',re.DOTALL).findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for thumb,name,url in match: name=name.replace("<span style='color: #ff0000'>",'').replace('</span>','') if '/series-tv/' in murl or 'saison' in url: main.addDirT(name,url,790,thumb,'','','','','') else: main.addDirM(name,url,788,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Movies loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close() del dialogWait paginate = re.compile('''<div class="navigation".+? <span.+? <a href="(.+?)">''').findall(link) #xbmc.log(msg='-------------------'+str(match)+str(len(paginate)), level=xbmc.LOGDEBUG) if len(paginate)>0: main.addDir('Next',paginate[0],787,art+'/next2.png') main.GA("Fullstream","List")
def EPISODES(mname,url,linkback): html = main.OPENURL2(url) r = re.compile(r'parts" id="'+linkback+'"><a name=(.+?)<div id="parts_header">',re.M|re.DOTALL).findall(html) match = re.compile('href=/(.+?'+linkback+'.+?)">(.+?)</a>').findall(str(r)) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) season = re.search('Seas(on)?\.? (\d+)',mname,re.I) for url, episode in match: episode = main.unescapes(episode) episode = episode.replace('\\','').replace('xc2x92','') name = mname epi= re.search('Ep(isode)?\.? (\d+)(.*)',episode, re.I) if(epi): e = str(epi.group(2)) if(len(e)==1): e = "0" + e if(season): s = season.group(2) if(len(s)==1): s = "0" + s name = re.sub(' ?Seas(on)?\.? (\d+)','',name,re.I) name = name + " " + "S" + s + "E" + e episode = epi.group(3).strip(" -") main.addDirTE(name+' '+"[COLOR red]" + episode + '[/COLOR]',url,1026,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close()
def INDEXtv(url): html = main.OPENURL2(url) if html == None: return pattern = 'title="Watch online: ([^"]*)" href="/([^"]*)"><img border="0" alt=".+?" src="([^"]*)"></a>' r = re.findall(r''+pattern+'', html, re.M|re.DOTALL) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(r) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for name, nurl,thumb in r: loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) url = BASE_URL+nurl main.addDirT(name,url,1049,'http://www.tubeplus.me'+thumb,'','','','','') if (dialogWait.iscanceled()): return False if re.findall(r'<div id="paging">', html): r = re.findall('\<li title="Page (\d+)"\>.+?"\>(\d+)(?=\<\/a\>\<\/li\>\<li title="Next Page"\>\<a href="/(.+?)")',html) for current, total, npurl in r: name = '[COLOR=FF67cc33]Page '+current+' of '+total+', Next Page >>>[/COLOR]' main.addDir(name, BASE_URL+npurl, 1051, art+'/nextpage.png') url = url+':'+total name = '[COLOR=FF67cc33]Goto Page[/COLOR]' main.addDir(name, url, 1028, art+'/gotopagetr.png') dialogWait.close()
def LISTEPISODE(mname, murl): link = main.OPENURL2(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace( ' ', '').replace('\xc2\xa0', '') match = re.compile( """<p style="text-align: center;">([^<]+)<a (.+?)</p>""", re.DOTALL).findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) for name, url in match: mname = mname.split('[')[0] mname = mname.replace('&-', '').replace('-', '').replace('Saison', 'Season') main.addDirTE(mname + '' + name.replace('Épisode', 'Episode'), url, 316, '', '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Movies loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(percent, '[B]Will load instantly from now on[/B]', remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close() del dialogWait
def MOVIE_MENU(): html = main.OPENURL2(BASE_URL) r = re.findall(r'<h1 id="list_head" class="short"> (.+?)</h1>',html) for movies_special in r[0:1]: main.addDir('[COLOR=FF67cc33]'+movies_special+'[/COLOR]',BASE_URL,1040,art+'/tppopular.png') main.addDir('[COLOR=FF67cc33][B]Most Popular Movies[/B][/COLOR]',BASE_URL+'browse/movies/Last/ALL/',1048,art+'/tppopular.png') main.addDir('[COLOR=FF67cc33][B]Movies By Genres[/B][/COLOR]',BASE_URL+'browse/movies/',1044,art+'/tpgenres.png') main.addDir('[COLOR=FF67cc33][B]Most Popular Genres[/B][/COLOR]',BASE_URL+'browse/movies/',1046,art+'/tpmostpopgenre.png') main.addDir('[COLOR=FF67cc33][B]Movies by A to Z[/B][/COLOR]',BASE_URL+'browse/movies/',1047,art+'/tpatoz.png')
def INDEXONE(url): res_genre = [] res_url = [] html = main.OPENURL2(url) if html == None: return r = re.findall('<div id="popular">(.+?)<div id="popular_footer"></div>', html, re.M|re.DOTALL) pattern = '<li><a href="/(.+?)">(.+?)</a>' r = re.findall(r''+pattern+'', str(r)) for url, name in r: url = BASE_URL+url res_genre.append(name.encode('utf8')) res_url.append(url.encode('utf8')) dialog = xbmcgui.Dialog() ret = dialog.select('Choose Genre', res_genre) if ret == -1: return elif ret >= 0: genre = res_url [ret - 0] html = main.OPENURL2(genre) if html == None: return r = re.findall(r'var chart_movies(.+?)for\s\(movie in chart_movies\)', html, re.M|re.DOTALL) pattern = 'tt: \"(.+?)\".+?url: \"/(.+?)\"' r = re.findall(r''+pattern+'', str(r)) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(r) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for name, url in r: main.addDirM(name,url,1026,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close()
def SEASONS(mname,url,thumb): if thumb == None: thumb='' if 'http://www.tubeplus.me/' not in url: url=BASE_URL+url html = main.OPENURL2(url) r = re.findall(r'id="l(sea.+?)" class="season"',html,flags=re.DOTALL|re.M) for seasons in r: linkback=seasons seasons=seasons.replace('_',' ').replace('season','Season') meta_name = mname+' '+seasons main.addDir2(meta_name,url,1050,thumb,linkback)
def MOVIEAZ(url): html = main.OPENURL2(url) if html == None: return r = re.findall('<div id="alphabetic">(.+?)<!-- ###', html, re.M|re.DOTALL) pattern = '<a href=\"\/(.+?)\"\>(.+?)\</a>' r = re.findall(r''+pattern+'', str(r)) for url, name in r: url = BASE_URL+url thumb=art+'/'+name.lower()+'.png' if name =='#': thumb=art+'/09.png' if 'tv-shows' in url: main.addDir(name, url, 1051,thumb) else: main.addDir(name, url, 1048,thumb)
def LISTFULLS(murl): link = main.OPENURL2(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile( 'class="movie movie-block"><img src="([^<]+)" alt=".+?" title="([^<]+)"/>.+?<h2 onclick="window.location.href=\'([^<]+)\'">', re.DOTALL).findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) for thumb, name, url in match: name = name.replace("<span style='color: #ff0000'>", '').replace('</span>', '') if '/series-tv/' in murl or 'saison' in url: main.addDirT(name, url, 798, thumb, '', '', '', '', '') else: main.addDirM(name, url, 796, thumb, '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Movies loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(percent, '[B]Will load instantly from now on[/B]', remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close() del dialogWait paginate = re.compile( '''<div class="navigation".+? <span.+? <a href="(.+?)">''').findall( link) if len(paginate) > 0: main.addDir('[COLOR blue]Next Page >>>[/COLOR]', paginate[0], 795, art + '/next2.png') main.GA("Fullstream2", "List")
def EPISODES(mname,url,linkback): html = main.OPENURL2(url) r = re.compile(r'parts" id="'+linkback+'"><a name=(.+?)<div id="parts_header">',re.M|re.DOTALL).findall(html) match = re.compile('href=/(.+?'+linkback+'.+?)">(.+?)</a>').findall(str(r)) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url, epi in match: epi=main.unescapes(epi) epi = epi.replace('\\','').replace('xc2x92','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) main.addDirTE(mname+' '+epi,url,1026,'','','','','','') if (dialogWait.iscanceled()): return False dialogWait.close()
def LISTDP(murl): link = main.OPENURL2(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace( ' ', '').replace('\xc2\xa0', '') match = re.compile( """height=".+?" src="(.+?)".+?<h2><a href="(.+?)" rel=".+?" title=".+?">(.+?)</a></h2>""", re.DOTALL).findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) for thumb, url, name in match: name = name.replace("<span style='color: #ff0000'>", '').replace('</span>', '') if '/series-tv/' in murl or 'saison' in url: main.addDirT(name, url, 315, thumb, '', '', '', '', '') else: main.addDirM(name, url, 313, thumb, '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Movies loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(percent, '[B]Will load instantly from now on[/B]', remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close() del dialogWait paginate = re.compile("<a href='(.+?)' class='nextpostslink'>").findall( link) if len(paginate) > 0 and len(match) == 12: main.addDir('Next', paginate[0], 312, art + '/next2.png') main.GA("DpStreaming", "List")
def MOVIES_SPECIAL(url): html = main.OPENURL2(url) if html == None: return r = re.findall(r'<h1 id="list_head" class="short">.+?Movies Special</h1>(.+?)«More Movies»</a>',html, re.M|re.DOTALL) pattern = '<a target="_blank" title="Watch online: (.+?)" href="/(.+?)"><img' r = re.findall(r''+pattern+'',str(r)) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(r) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for name, url in r: url = BASE_URL+url main.addDirM(name,url,1026,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close()
def GENRES(url): Curl = url html = main.OPENURL2(url) if html == None: return r = re.findall(r'{value:1, te(.+?)var selected_genre', html, re.M) pattern = 'xt: "(.+?)"' r = re.findall(r''+pattern+'', str(r), re.I|re.DOTALL) res_genre = [] res_url = [] for genre in r: res_genre.append(genre.encode('utf8')) res_url.append(genre.encode('utf8')) dialog = xbmcgui.Dialog() ret = dialog.select('Choose Genre', res_genre) if ret == -1: return elif ret >= 0: genre = res_url [ret - 0] url = url+genre+'/ALL/' try: html = main.OPENURL2(url) #html = html.replace('xc2\x92', "'") if html == None: print 'html None' return except:#Mash can you add your error calling function pass#remove the pass and add call to your error routine r = re.findall(r'Alphabetically \[\<b\>'+genre+', ALL\<\/b\>\]\<\/div\>(.+?)\<div id=\"list_footer\"\>\<\/div\>', html, re.I|re.M|re.DOTALL) pattern = 'title="Watch online: ([^"]*)" href="/([^"]*)"><img border="0" alt=".+?" src="([^"]*)"></a>' r = re.findall(pattern, str(r), re.I|re.M|re.DOTALL) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(r) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for name, url, thumb in r: url = BASE_URL+url if 'tv-shows' in Curl: main.addDir(name,url,1049,'http://www.tubeplus.me'+thumb) else: name = name.replace('\\','').replace('xc2x92','') main.addDirM(name,url,1026,'http://www.tubeplus.me'+thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close() if re.findall(r'<div id="paging">', html): r = re.findall('\<li title="Page (\d+)"\>.+?"\>(\d+)(?=\<\/a\>\<\/li\>\<li title="Next Page"\>\<a href="/(.+?)")',html) for current, total, npurl in r: name = '[COLOR=FF67cc33]Page '+current+' of '+total+', Next Page >>>[/COLOR]' main.addDir(name, BASE_URL+npurl, 1048, art+'/nextpage.png') url = url+':'+total name = '[COLOR=FF67cc33]Goto Page[/COLOR]' main.addDir(name, url, 1028, art+'/gotopagetr.png') main.VIEWS()
def SEARCH(murl): if murl == 'tv': seapath=os.path.join(main.datapath,'Search') SeaFile=os.path.join(seapath,'SearchHistoryTv') try: os.makedirs(seapath) except: pass keyb = xbmc.Keyboard('', '[COLOR=FF67cc33]MashUP: Search For Shows or Episodes[/COLOR]') keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() encode=urllib.quote(search) if not os.path.exists(SeaFile) and encode != '': open(SeaFile,'w').write('search="%s",'%encode) else: if encode != '': open(SeaFile,'a').write('search="%s",'%encode) searchis=re.compile('search="(.+?)",').findall(open(SeaFile,'r').read()) for seahis in reversed(searchis): continue if len(searchis)>=10: searchis.remove(searchis[0]) os.remove(SeaFile) for seahis in searchis: try: open(SeaFile,'a').write('search="%s",'%seahis) except: pass surl = 'http://www.tubeplus.me/search/tv-shows/'+encode+'/0/' #SEARCH(url) else: return TVMENU() elif murl=='movie': seapath=os.path.join(main.datapath,'Search') SeaFile=os.path.join(seapath,'SearchHistory25') try: os.makedirs(seapath) except: pass keyb = xbmc.Keyboard('', '[COLOR=FF67cc33]MashUP: Search For Movies[/COLOR]') keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() encode=urllib.quote(search) if not os.path.exists(SeaFile) and encode != '': open(SeaFile,'w').write('search="%s",'%encode) else: if encode != '': open(SeaFile,'a').write('search="%s",'%encode) searchis=re.compile('search="(.+?)",').findall(open(SeaFile,'r').read()) for seahis in reversed(searchis): continue if len(searchis)>=10: searchis.remove(searchis[0]) os.remove(SeaFile) for seahis in searchis: try: open(SeaFile,'a').write('search="%s",'%seahis) except: pass surl = 'http://www.tubeplus.me/search/movies/'+encode+'/0/' #SEARCH(url) else: return MOVIE_MENU() else: surl=murl html = main.OPENURL2(surl) r = re.compile(r'<div id="list_body">(.+?)<div id="list_footer"></div>', re.DOTALL|re.I|re.M).findall(html) match = re.compile(r'title="Watch online: ([^"]*)" href="/([^"]*)"><img border="0" alt=".+?" src="([^"]*)"></a>', re.I).findall(str(r))# href',str(r),flags=re.I) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for name, url, image in match: name = name.replace('_',' ').replace('/','').replace('\\x92',"'").replace('’',"'").replace('"','"').replace(',',',') if 'tv-shows' in surl: main.addDirT(name.replace('.',''),url,1049,'http://www.tubeplus.me'+image,'','','','','') else: main.addDirM(name.replace('.',''),url,1026,'http://www.tubeplus.me'+image,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Media loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False dialogWait.close() del dialogWait