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 MAIN(murl): if 'TV' in murl: main.addDir('Movies','MOVIES',451,art+'/shush.png') link=main.OPENURL('http://www.shush.se/index.php?shows') link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','').replace('»','') match=re.compile('(?sim)class="shows"><a href="([^"]+)"><img src="([^"]+)" alt="Watch (.+?) online').findall(link) for url,thumb,name in match: main.addDirT(name.title(),'http://www.shush.se/'+url,452,thumb,'','','','','') else: main.addDir('TV','TV',451,art+'/shush.png') link=main.OPENURL('http://www.shush.se/index.php?movies') link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','').replace('»','') match=re.compile('(?sim)class="shows"><a href="([^"]+)"><img src="([^"]+)" alt="([^"]+)" title=').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) xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") for url,thumb,name in match: main.addPlayM(name.title(),'http://www.shush.se/'+url,453,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
def LISTSHOWWATCHS(murl): main.GA("Watchseries","List") link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('<a title="(.+?)" href="(.+?)">.+?<span class="epnum">(.+?)</span></a>').findall(link) for name, url, year in match: main.addDirT(name,'http://watchseries.lt'+url,578,'','','','','','')
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 AZLIST(mname,murl): link=main.OPENURL('http://www.dubzonline.co/dubbed-anime/')+main.OPENURL('http://www.dubzonline.co/dubbed-anime/') link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match = re.compile('<li><a href="([^"]+)">(.+?)</a></li>').findall(link) for url, name in match: if name[0]==mname or name[0]==mname.lower(): main.addDirT(name,url,616,'','','','','','')
def AZLIST(mname,murl): link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match = re.compile('<li><a href="([^<]+)">(.+?)</a></li>').findall(link) for url, name in match: if name[0]==mname or name[0]==mname.lower(): main.addDirT(name,url,616,'','','','','','')
def LISTVIKIT(murl): html = main.OPENURL(murl) link=main.unescapes(html).decode('ascii', 'ignore') match = re.findall('(?sim)class="thumbnail pull-left"><img alt=".+?src="([^"]+)".+?<a href="([^"]+)">([^<]+)</a>.+?<p>(.+?)...',link.replace(' ','')) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Shows loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for thumb,url,name,desc in match: fan=re.findall('(.+?jpg)',thumb) if fan: fanart=fan[0] else: fanart='' main.addDirT(name,MainUrl+url,481,thumb,desc,fanart,'','','') 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("(?sim)<a class='page-link' rel='next' href='([^']+)'>Next →</a>").findall(link) if len(paginate)>0: main.addDir('[COLOR blue]Next Page >>>[/COLOR]',MainUrl+paginate[0],480,art+'/next2.png') main.GA("Viki","List")
def SEARCH(): dialog = xbmcgui.Dialog() ret = dialog.select('[COLOR=FF67cc33][B]Choose A Search Type[/COLOR][/B]',['[B][COLOR=FF67cc33]TV Shows[/COLOR][/B]','[B][COLOR=FF67cc33]Movies[/COLOR][/B]']) if ret == -1: return if ret==0: murl='http://api.dramago.com/GetAllShows' keyb = xbmc.Keyboard('', 'Search For Shows') else: murl='http://api.dramago.com/GetAllMovies' keyb = xbmc.Keyboard('', 'Search For Movies') keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() encode=urllib.quote(search) link=main.OPENURL(murl) field=json.loads(link) for data in field: genre=str(data["genres"]).replace("u'",'').replace("'",'').replace("[",'').replace("]",'') if encode.lower()in(str(data["name"].encode('utf-8'))).lower(): if ret==0: main.addDirT(str(data["name"].encode('utf-8'))+' [COLOR red]'+str(data["rating"])+'/10[/COLOR] [COLOR blue]'+str(data["released"])+'[/COLOR]','http://api.dramago.com/GetDetails/'+str(data["id"]),275,'http://www.dramago.com/images/series/big/'+str(data["id"])+'.jpg',str(data["description"].encode('utf-8')),'','',genre,'') else: main.addDirM(str(data["name"].encode('utf-8'))+' [COLOR red]'+str(data["rating"])+'/10[/COLOR] [COLOR blue]'+str(data["released"])+'[/COLOR]','http://api.dramago.com/GetDetails/'+str(data["id"]),271,'http://www.dramago.com/images/series/big/'+str(data["id"])+'.jpg',str(data["description"].encode('utf-8')),'','',genre,'') else: return main.GA("Dramania","Search")
def LIST(type): path=os.path.join(profile,type.replace('25','')+'_lite.json') f = open(path) field=json.loads(f.read()) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Content list is cached.') if '25movies'in type: totalLinks = 25 else: totalLinks = len(field) loadedLinks = 0 remaining_display = 'Content Cached :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") field = sorted(field,key=lambda x:x['poster'],reverse=True) try: updates = '' if 'movies'in type or '25movies'in type: path = os.path.join(profile,'news_movies.json') else: path = os.path.join(profile,'news_tv.json') updates = open(path).read() field = sorted(field,key=lambda word: negtopos(updates.find('"id":'+word['id']+','))) except: pass if '25movies'in type: field=field[0:25] for data in field: #genre=str(data["genres"]).replace("u'",'').replace("'",'').replace("[",'').replace("]",'') if data['active'] == '1': thumb=str(data["poster"]).replace("\/'",'/') if 'movies'in type or '25movies'in type: main.addDown4(main.unescapes(str(data["title"].encode('utf-8')))+' ('+str(data["year"])+')',apibase+'/api/serials/get_movie_data?id='+str(data["id"]),279,thumb,'','','','','') elif 'music' in type: main.addDirMs(main.unescapes(str(data["title"].encode('utf-8'))),apibase+'/api/serials/get_artist_data/?id='+str(data["id"])+'&type=1',302,thumb,'','','','','') else: main.addDirT(main.unescapes(str(data["title"].encode('utf-8'))),data["id"]+'xoxe'+data["seasons"],280,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Content Cached :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if dialogWait.iscanceled(): break main.VIEWS()
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 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 SEARCHVIKI(): dialog = xbmcgui.Dialog() ret = dialog.select('[COLOR=FF67cc33][B]Choose A Search Type[/COLOR][/B]',['[B][COLOR=FF67cc33]TV Shows[/COLOR][/B]','[B][COLOR=FF67cc33]Movies[/COLOR][/B]']) if ret == -1: return if ret==0: keyb = xbmc.Keyboard('', 'Search For Shows') else: keyb = xbmc.Keyboard('', 'Search For Movies') keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() encode=urllib.quote(search) if ret==0: surl='http://www.viki.com/search?q='+encode+'&type=series' else: surl='http://www.viki.com/search?q='+encode+'&type=film' html = main.OPENURL(surl) link=main.unescapes(html).decode('ascii', 'ignore') match = re.findall('(?sim)class="thumbnail pull-left"><img alt=".+?src="([^"]+)".+?<a href="([^"]+)">([^<]+)</a>.+?<p>(.+?)...',link.replace(' ','')) for thumb,url,name,desc in match: fan=re.findall('(.+?jpg)',thumb) if fan: fanart=fan[0] else: fanart='' if ret==0: main.addDirT(name,MainUrl+url,481,thumb,desc,fanart,'','','') else: main.addPlayc(name,url,482,thumb,desc,fanart,'','','')
def LISTICE(murl,index=False): link = main.OPENURL(IceURL+murl) link = cleanHex(link) if '/tv/'in murl: match=re.compile('<a name=i id=(\d+)></a><img class=star><a href=(/tv[^<]+?)>([^<]+?)</a>(.)*?<br>',re.DOTALL).findall(link) #main.GA("TV","IceFilms") else: main.addDir('Search for Movies','Movies',286,art+'/search.png') match=re.compile('<a name=i id=(\d+)></a><img class=star><a href=(/ip[^>]+?)>([^<]+?)</a>(.)*?<br>',re.DOTALL).findall(link) #main.GA("HD","IceFilms") dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie/Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies/Shows loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") for imdb,url,title,hd in match: if hd: title += ' [COLOR red]HD[/COLOR]' title = re.sub('\s\s+',' ',title) if '/tv/'in murl: main.addDirT(title.strip(),IceURL+url,289,'','','','','','',index=index) else: if index == 'True': main.addDirM(title.strip(),IceURL+url,21,'','','','','','',imdb) else: main.addDirM(title.strip(),IceURL+url,283,'','','','','','',imdb) loadedLinks += 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Movies/Shows loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if dialogWait.iscanceled(): break dialogWait.close() del dialogWait main.VIEWS()
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 LISTFULLS(murl): link=main.OPENURL2(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match=re.compile('class="short-title">.+?<a href="(.+?)">(.+?)</a>.+?</span><a href=".+?"><img src="(.+?)" alt=".+?" width=".+?" height=".+?"/></a>',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 url,name,thumb 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) #xbmc.log(msg='-------------------'+str(match)+str(len(paginate)), level=xbmc.LOGDEBUG) if len(paginate)>0: main.addDir('Next',paginate[0],795,art+'/next2.png') main.GA("Fullstream2","List")
def LIST(murl): link=main.OPENURL(murl) field=json.loads(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(field) loadedLinks = 0 remaining_display = 'Movies/Shows Cached :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") for data in field: genre=str(data["genres"]).replace("u'",'').replace("'",'').replace("[",'').replace("]",'') if 'Movies' in murl: try: desc=str(data["description"].encode('utf-8')) except: desc =' ' main.addDirM(str(data["name"].encode('utf-8'))+' [COLOR red]'+str(round(data["rating"],2)).rstrip('0').rstrip('.')+'/10[/COLOR] [COLOR blue]'+str(data["released"])+'[/COLOR]','http://api.dramago.com/GetDetails/'+str(data["id"]),271,'http://www.dramago.com/images/series/big/'+str(data["id"])+'.jpg',desc,'','',genre,'') else: main.addDirT(str(data["name"].encode('utf-8'))+' [COLOR red]'+str(round(data["rating"],2)).rstrip('0').rstrip('.')+'/10[/COLOR] [COLOR blue]'+str(data["released"])+'[/COLOR]','http://api.dramago.com/GetDetails/'+str(data["id"]),275,'http://www.dramago.com/images/series/big/'+str(data["id"])+'.jpg',str(data["description"].encode('utf-8')),'','',genre,'') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Movies/Episodes Cached :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if (dialogWait.iscanceled()): return False main.GA("Dramania","List")
def iWatchLISTSHOWS(murl, index=False): main.GA("Tvshows", "List") link = main.OPENURL(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') videos = re.search('<ul class="thumbnails">(.+?)</ul>', link) if videos: videos = videos.group(1) match = re.compile( '<li.+?<a[^>]+?href=\"([^"]+?)\".+?<img[^>]+?src=\"([^"]+?)\".+?<div class=\"title[^>]+?>([^>]+?)<div' ).findall(videos) for url, thumb, name in match: main.addDirT(name, url, 590, thumb, '', '', '', '', '', index=index) if len(match) == 25: paginate = re.compile('([^<]+)&p=([^<]+)').findall(murl) for purl, page in paginate: i = int(page) + 25 main.addDir('[COLOR blue]Next[/COLOR]', purl + '&p=' + str(i), 589, art + '/next2.png', index=index) xbmcplugin.setContent(int(sys.argv[1]), 'Movies') main.VIEWS()
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 LIST(type): path = os.path.join(profile, type.replace('25', '') + '_lite.json') f = open(path) field = json.loads(f.read()) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Content list is cached.') if '25movies' in type: totalLinks = 25 else: totalLinks = len(field) loadedLinks = 0 remaining_display = 'Content Cached :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") field = sorted(field, key=lambda x: x['poster'], reverse=True) try: updates = '' if 'movies' in type or '25movies' in type: path = os.path.join(profile, 'news_movies.json') else: path = os.path.join(profile, 'news_tv.json') updates = open(path).read() field = sorted(field, key=lambda word: negtopos( updates.find('"id":' + word['id'] + ','))) except: pass if '25movies' in type: field = field[0:25] for data in field: #genre=str(data["genres"]).replace("u'",'').replace("'",'').replace("[",'').replace("]",'') if data['active'] == '1': thumb = str(data["poster"]).replace("\/'", '/') if 'movies' in type or '25movies' in type: main.addDown4( str(data["title"].encode('utf-8')) + ' (' + str(data["year"]) + ')', apibase + '/api/serials/get_movie_data?id=' + str(data["id"]), 279, thumb, '', '', '', '', '') elif 'music' in type: main.addDirMs( str(data["title"].encode('utf-8')), apibase + '/api/serials/get_artist_data/?id=' + str(data["id"]) + '&type=1', 302, thumb, '', '', '', '', '') else: main.addDirT(str(data["title"].encode('utf-8')), data["id"] + 'xoxe' + data["seasons"], 280, thumb, '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Content Cached :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(percent, '[B]Will load instantly from now on[/B]', remaining_display) if dialogWait.iscanceled(): break main.GA("Mbox", "List") main.VIEWS()
def SEARCHPFTV(murl = '',index=False): encode = main.updateSearchFile(murl,'TV') if not encode: return False surl=BASE_URL2+'search/?q='+encode+'&md=shows' link=main.OPENURL(surl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile(' class="mnlcategorylist"><a href="([^"]+)"><b>([^<]+)</b>',re.DOTALL).findall(link) for url,name in match: main.addDirT(name,BASE_URL2+url,465,'','','','','','',index=index)
def LISTPOP(murl): link = main.OPENURL(murl) link = main.unescapes(link) match = re.compile( '<div><span><img alt=".+?" src="(.+?)" /></span></div> </td> <td .+?> <h2><a href="(.+?)"><strong>(.+?)</strong></a></h2>' ).findall(link) for thumb, url, name in match: main.addDirT(name, url, 626, thumb, '', '', '', '', '')
def AllShows(murl): sear = net.http_POST('http://seriesgate.tv/tvshows_ajax/', {'_number':murl,'_genre_':'', '_network_':'', '_rating_':''}).content match= re.compile('<a href = "(.+?)"><img src = "(.+?)" height=".+?/><div class = "_tvshow_title">(.+?)</div>').findall(sear) for url,thumb,name in match: main.addDirT(name,url,604,thumb,'','','','','') main.GA("SeriesGate","AllShows")
def AllShowsBTV(murl): link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('<li class="show"><a href="(.+?)">(.+?)</a></li>').findall(link) for url, name in match: main.addDirT(name,url,553,'','','','','','') paginate = re.compile('<a href="([^<]+)">></a>').findall(link) if len(paginate)>0: main.addDir('Next','http://www.btvguide.com'+paginate[0],561,art+'/next2.png')
def SEARCHWS(murl = '',index=False): encode = main.updateSearchFile(murl,'TV') if not encode: return False surl='http://watchseries.ag/search/'+encode link=main.OPENURL(surl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('<a title=".+?" href="([^<]+)"><b>(.+?)</b></a> <br> <b>Description:</b>(.+?)</td></tr> <tr></tr> <tr><td valign="top"> <a title=".+?<img src="(.+?)"> </a>',re.DOTALL).findall(link) for url,name,desc,thumb in match: main.addDirT(name,'http://watchseries.ag'+url,578,thumb,desc,'','','','',index=index)
def SearchIceFilms(searchQuery='', type='Movies', index=False): searchQuery = main.updateSearchFile(searchQuery, type) if not searchQuery: return False if type == 'Movies': site = 'site:http://icefilms.info/ip' else: site = 'site:http://icefilms.info/tv/series' results = main.SearchGoogle(urllib.unquote(searchQuery), site) r = 0 dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(results) remaining_display = 'Movies loaded :: [B]' + str(r) + ' / ' + str( totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") if results: for res in results: t = res.title.encode('utf8') u = res.url.encode('utf8') if type == 'TV': t = t.rpartition('Episode List')[0] main.addDirT(t.strip(" -"), u, 289, '', '', '', '', '', '', index=index) r += 1 else: if not re.search('(?i)\s\d+x\d+', t) and (re.search( '(?i)links', t) or re.search('\.\.\.$', t)): t = re.sub('(.*\)).*', '\\1', t) if index == 'True': main.addDirM(t.strip(), u, 21, '', '', '', '', '', '') else: main.addDirM(t.strip(), u, 283, '', '', '', '', '', '') r += 1 else: if totalLinks > 1: totalLinks -= 1 percent = (r * 100) / totalLinks remaining_display = 'Movies loaded :: [B]' + str(r) + ' / ' + str( totalLinks) + '[/B].' dialogWait.update(percent, '[B]Will load instantly from now on[/B]', remaining_display) if dialogWait.iscanceled(): return False if not r: xbmcplugin.endOfDirectory(int(sys.argv[1]), False, False) xbmc.executebuiltin("XBMC.Notification(Sorry,No results found,3000)") return False main.GA("IceFilms", "Search")
def LATESTE(mname,murl): link=main.OPENURL(murl) link=main.unescapes(link) match = re.compile('<td class=".+?<a href="(.+?)">(.+?)</a> </td>').findall(link) for url, name in match: main.addDirT(name,'http://www.animefreak.tv/'+url,630,'','','','','','') paginate = re.compile("""<li class="pager-next last"><a href="(.+?)" class="active">.+?</a></li>""").findall(link) if len(paginate)>0: paginates=paginate[0] main.addDir('Next','http://www.animefreak.tv/'+paginates,632,art+'/next2.png')
def GENRELIST(murl): link=main.OPENURL(murl) link=main.unescapes(link) match = re.compile('<h2 class="nodeTitle">.+?<a href="(.+?)".+?src="(.+?)" alt="(.+?)" />').findall(link) for url, thumb,name in match: main.addDirT(name,'http://www.animefreak.tv/'+url,626,thumb,'','','','','') paginate = re.compile("""<li class="pager-next"><a href="(.+?)" title=".+?" class="active">.+?</a></li>""").findall(link) if len(paginate)>0: paginates=paginate[0] main.addDir('Next','http://www.animefreak.tv/'+paginates,635,art+'/next2.png')
def SEARCHPFTV(murl = '',index=False): encode = main.updateSearchFile(murl,'TV') if not encode: return False surl=BASE_URL2+'search/?q='+encode+'&md=shows' link=main.OPENURL(surl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile(' class="mnlcategorylist"><a href="([^"]+)"><b>([^<]+)</b>',re.DOTALL).findall(link) for url,name in match: main.addDirT(name,BASE_URL2+url,465,'','','','','','',index=index) main.GA(prettyName,"Search")
def LISTSHOW(mname,murl,index=False): link=main.OPENURL(BASE_URL) link=link.replace('\r','').replace('\n','').replace('\t','') if 'Z' in mname: links = re.search('<a name="Z">(.+?)<!-- End of the page footer -->', link) elif '0-9' in mname: links = re.search('<a name="#">(.+?)<a name="A">', link) else: links = re.search('<a name="'+mname+'">(.+?)<a name="'+murl+'">', link) if links: links = links.group(1) match=re.compile('''class="mnlcategorylist"><a href="([^"]+?)"><b>([^<]+?)</b></a>''', re.DOTALL).findall(links) for url, name in match: main.addDirT(name,BASE_URL+url,465,'','','','','','',index=index)
def AZLIST(mname, murl): link = main.OPENURL(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile('<li><a href="([^<]+)">(.+?)</a></li>').findall(link) for url, name in match: if name[0] == mname or name[0] == mname.lower(): main.addDirT(name, url, 616, '', '', '', '', '', '')
def SEARCHTV(murl = '',index=False): encode = main.updateSearchFile(murl,'TV') if not encode: return False search_url = 'http://www.iwatchonline.to/search' from t0mm0.common.net import Net as net search_content = net().http_POST(search_url, { 'searchquery' : encode, 'searchin' : 't'} ).content.encode('utf-8') r = re.findall('(?s)<table(.+?)</table>',search_content) r=main.unescapes(r[0]) match=re.compile('<img[^>]+?src="([^"]+?)\".+?<a[^>]+?href="([^"]+?)">([^<]+?)</a>').findall(r) for thumb,url,name in match: main.addDirT(name,url,590,thumb,'','','','','',index=index)
def LISTICE(murl, index=False): link = main.OPENURL(IceURL + murl) link = cleanHex(link) if '/tv/' in murl: match = re.compile( '<a name=i id=(\d+)></a><img class=star><a href=(/tv[^<]+?)>([^<]+?)</a>(.)*?<br>', re.DOTALL).findall(link) main.GA("TV", "IceFilms") else: main.addDir('Search for Movies', 'Movies', 286, art + '/search.png') match = re.compile( '<a name=i id=(\d+)></a><img class=star><a href=(/ip[^>]+?)>([^<]+?)</a>(.)*?<br>', re.DOTALL).findall(link) main.GA("HD", "IceFilms") dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie/Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies/Shows loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") for imdb, url, title, hd in match: if hd: title += ' [COLOR red]HD[/COLOR]' title = re.sub('\s\s+', ' ', title) if '/tv/' in murl: main.addDirT(title.strip(), IceURL + url, 289, '', '', '', '', '', '', index=index) else: if index == 'True': main.addDirM(title.strip(), IceURL + url, 21, '', '', '', '', '', '', imdb) else: main.addDirM(title.strip(), IceURL + url, 283, '', '', '', '', '', '', imdb) loadedLinks += 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Movies/Shows loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(percent, '[B]Will load instantly from now on[/B]', remaining_display) if dialogWait.iscanceled(): break dialogWait.close() del dialogWait main.VIEWS()
def SEARCHPFTV(murl="", index=False): encode = main.updateSearchFile(murl, "TV") if not encode: return False surl = BASE_URL2 + "search/?q=" + encode + "&md=shows" link = main.OPENURL(surl) link = link.replace("\r", "").replace("\n", "").replace("\t", "") match = re.compile(' class="mnlcategorylist"><a href="([^"]+)"><b>([^<]+)</b>', re.DOTALL).findall(link) for url, name in match: main.addDirT(name, BASE_URL2 + url, 465, "", "", "", "", "", "", index=index) main.GA(prettyName, "Search")
def HOMESG(): url='http://seriesgate.tv/home1/' link=main.OPENURL(url) main.addLink('[COLOR red]Updated Tv Shows[/COLOR]','','') match=re.compile('href = "(.+?)" style=".+?"><img src="(.+?)" width=".+?" height=".+?" alt="(.+?)" title = ".+?"').findall(link) for url,thumb,name in match[0:16]: main.addDirT(name,'http://seriesgate.me'+url,604,thumb,'','','','','') main.addLink('[COLOR red]TV SHOWS BEING WATCHED[/COLOR]','','') match=re.compile('href = "(.+?)" style=".+?"><img src="(.+?)" width=".+?" height=".+?" alt="(.+?)" title = ".+?"').findall(link) for url,thumb,name in match[16:32]: main.addDirT(name,'http://seriesgate.me'+url,604,thumb,'','','','','')
def SEARCHWS(murl=''): encode = main.updateSearchFile(murl, 'TV') if not encode: return False surl = 'http://watchseries.ag/search/' + encode link = main.OPENURL(surl) link = link.replace('\r', '').replace('\n', '').replace('\t', '') match = re.compile( '<a title=".+?" href="([^<]+)"><b>(.+?)</b></a> <br> <b>Description:</b>(.+?)</td></tr> <tr></tr> <tr><td valign="top"> <a title=".+?<img src="(.+?)"> </a>', re.DOTALL).findall(link) for url, name, desc, thumb in match: main.addDirT(name, 'http://watchseries.ag' + url, 578, thumb, desc, '', '', '', '') main.GA("Watchseries", "Search")
def AZLIST(mname,murl): if mname=='#': link=main.OPENURL(murl) link=main.unescapes(link) match = re.compile('<li><a href="([^<]+)">(.+?)</a></li>').findall(link) for url, name in match[0:10]: main.addDirT(name,'http://www.animefreak.tv/'+url,626,'','','','','','') else: link=main.OPENURL(murl) link=main.unescapes(link) match = re.compile('<li><a href="([^<]+)">(.+?)</a></li>').findall(link) for url, name in match: if name[0]==mname or name[0]==mname.lower(): main.addDirT(name,'http://www.animefreak.tv/'+url,626,'','','','','','')
def POPULARPFTV(murl,index=False): link=main.OPENURL(BASE_URL2) link=link.replace('\r','').replace('\n','').replace('\t','') if 'season' in murl: match=re.compile('(?sim)<td class="tleft" style="text-align:center"><a href="([^"]+?)">([^<]+?)</a>').findall(link) else: match=re.compile('(?sim)<td class="tleft" style="text-align:center;"><a href="([^"]+?)">([^<]+?)</a>').findall(link) for url,name in match: if 'season' in murl: sepi=re.findall('(?sim)(\(s(\d+)e(\d+)\))',name) if sepi: name=re.sub('(?sim)(\(s(\d+)e(\d+)\))','',name) fname = re.sub('-',sepi[0],name).replace('(','').replace(')','') if index == 'True': main.addDirTE(fname,BASE_URL2+url,21,'','','','','','') else: main.addDirTE(fname,BASE_URL2+url,461,'','','','','','') else: main.addDirT(name,url,465,'','','','','','',index=index)
def AllShows(murl): sear = net.http_POST('http://seriesgate.tv/tvshows_ajax/', { '_number': murl, '_genre_': '', '_network_': '', '_rating_': '' }).content match = re.compile( '<a href = "(.+?)"><img src = "(.+?)" height=".+?/><div class = "_tvshow_title">(.+?)</div>' ).findall(sear) for url, thumb, name in match: main.addDirT(name, url, 604, thumb, '', '', '', '', '') main.GA("SeriesGate", "AllShows")
def iWatchLISTSHOWS(murl): main.GA("Tvshows","List") link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match=re.compile('<a href="(.+?)" class=".+?" rel=".+?"><img class=".+?" src="(.+?)" alt=""> <div class=".+?">.+?</div> </a><div class=".+?">(.+?)<div class=".+?"><div class=".+?" data-rating=".+?"></div></div></div><div class=".+?">(.+?)<br />').findall(link) for url,thumb,name,desc in match: main.addDirT(name,url,590,thumb,desc,'','','','') print len(match) if len(match)==25: paginate=re.compile('([^<]+)start=([^<]+)').findall(murl) for purl,page in paginate: i=int(page)+25 main.addDir('[COLOR blue]Next[/COLOR]',purl+'start='+str(i),589,art+'/next2.png') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') main.VIEWS()
def iWatchLISTSHOWS(murl): main.GA("Tvshows","List") link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match=re.compile('<li.+?<a.+?href=\"(.+?)\".+?<img.+?src=\"(.+?)\".+?<div class=\"title.+?>(.+?)<div').findall(link) for url,thumb,name in match: main.addDirT(name,url,590,thumb,'','','','','') print len(match) if len(match)==25: paginate=re.compile('([^<]+)start=([^<]+)').findall(murl) for purl,page in paginate: i=int(page)+25 main.addDir('[COLOR blue]Next[/COLOR]',purl+'start='+str(i),589,art+'/next2.png') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') main.VIEWS()
def LISTNEWShowsBTV(murl): desclist=[] i=0 link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') descr=re.compile('<span class=\'_more_less\'>([^<]+)').findall(link) if len(descr)>0: for desc in descr: desclist.append(desc) match=re.compile('<a href="([^<]+)" title="([^<]+)"><img src="([^<]+)" alt=".+?" title=".+?" width=".+?" height=".+?" />').findall(link) for url, name, thumb in match: main.addDirT(name,url,553,thumb,desclist[i],'','','','') i=i+1 paginate = re.compile('<a href="([^<]+)">></a>').findall(link) if len(paginate)>0: main.addDir('Next','http://www.btvguide.com'+paginate[0],564,art+'/next2.png')
def SEARCH(): keyb = xbmc.Keyboard('', 'Search Anime') keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() encode=urllib.quote(search) surl='http://www.animefreak.tv/search/node/'+encode link=main.OPENURL(surl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match= re.compile('<dt class="title".+?a href="(.+?)">(.+?)</a.+?dt>').findall(link) for url,name in match: r = re.findall('Episode',name) if not r: main.addDirT(name,url,626,'','','','','','') else: main.addDirT(name,url,630,'','','','','','')
def LIST(mname,murl): link=main.OPENURL(murl) link=main.unescapes(link) match = re.compile('<li class="leaf.+?<a href="([^<]+)">(.+?)</a></li>').findall(link) thumbs = re.compile('</p><p><img align="left".+?src="(.+?)".+?>').findall(link) if thumbs: thumb=thumbs[0] else: thumb='' descs = re.compile('<h2><span style=".+?"><strong>.+?</strong></span></h2><blockquote><p>(.+?)</p>').findall(link) if descs: desc=descs[0] else: desc='' for url, name in match: main.addDirT(name,'http://www.animefreak.tv/'+url,630,thumb,desc,'','','','')
def SEARCHTV(murl=''): encode = main.updateSearchFile(murl, 'TV') if not encode: return False search_url = 'http://www.iwatchonline.to/search' from t0mm0.common.net import Net as net search_content = net().http_POST(search_url, { 'searchquery': encode, 'searchin': 't' }).content.encode('utf-8') r = re.findall('(?s)<table(.+?)</table>', search_content) r = main.unescapes(r[0]) match = re.compile( '<img[^>]+?src="([^"]+?)\".+?<a[^>]+?href="([^"]+?)">([^<]+?)</a>' ).findall(r) for thumb, url, name in match: main.addDirT(name, url, 590, thumb, '', '', '', '', '') main.GA("iWatchonline", "Search")
def MAIN(murl): if 'TV' in murl: main.addDir('Movies', 'MOVIES', 451, art + '/shush.png') link = main.OPENURL('http://www.shush.se/index.php?shows') link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace( ' ', '').replace('»', '') match = re.compile( '(?sim)class="shows"><a href="([^"]+)"><img src="([^"]+)" alt="Watch (.+?) online' ).findall(link) for url, thumb, name in match: main.addDirT(name.title(), 'http://www.shush.se/' + url, 452, thumb, '', '', '', '', '') else: main.addDir('TV', 'TV', 451, art + '/shush.png') link = main.OPENURL('http://www.shush.se/index.php?movies') link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace( ' ', '').replace('»', '') match = re.compile( '(?sim)class="shows"><a href="([^"]+)"><img src="([^"]+)" alt="([^"]+)" title=' ).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) xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") for url, thumb, name in match: main.addPlayM(name.title(), 'http://www.shush.se/' + url, 453, 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
def HOMESG(): url = 'http://seriesgate.tv/home1/' link = main.OPENURL(url) main.addLink('[COLOR red]Updated Tv Shows[/COLOR]', '', '') match = re.compile( 'href = "(.+?)" style=".+?"><img src="(.+?)" width=".+?" height=".+?" alt="(.+?)" title = ".+?"' ).findall(link) for url, thumb, name in match[0:16]: main.addDirT(name, 'http://seriesgate.me' + url, 604, thumb, '', '', '', '', '') main.addLink('[COLOR red]TV SHOWS BEING WATCHED[/COLOR]', '', '') match = re.compile( 'href = "(.+?)" style=".+?"><img src="(.+?)" width=".+?" height=".+?" alt="(.+?)" title = ".+?"' ).findall(link) for url, thumb, name in match[16:32]: main.addDirT(name, 'http://seriesgate.me' + url, 604, thumb, '', '', '', '', '')
def SEARCHSG(murl): seapath = os.path.join(main.datapath, 'Search') SeaFile = os.path.join(seapath, 'SearchHistoryTv') try: os.makedirs(seapath) except: pass if murl == 'sg': keyb = xbmc.Keyboard('', 'Search For Shows or Episodes') keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() encode = urllib.quote(search) surl = 'http://seriesgate.tv/search/indv_episodes/' + encode + '/' 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 else: encode = murl surl = 'http://seriesgate.tv/search/indv_episodes/' + encode + '/' link = main.OPENURL(surl) main.addLink('[COLOR red]Shows[/COLOR]', '', art + '/link.png') match = re.compile( 'src = "([^<]+)" height=".+?" width=".+?" alt="" /></a><div class = ".+?" style=".+?"><div class = ".+?"><a href = "([^<]+)">([^<]+)</a></div><a href = ".+?">' ).findall(link) for thumb, url, name in match: main.addDirT(name, 'http://seriesgate.tv' + url, 604, thumb, '', '', '', '', '') main.GA("SeriesGate", "Search")