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 LISTTV4(durl): xbmc.executebuiltin("XBMC.Notification(Please Wait!,Collecting Source Data,1000)") main.addDir('Search Rlsmix','rlsmix',136,art+'/search.png') if 'http://directdownload.tv/' in durl: murl=durl else: murl='http://directdownload.tv/ajaxSearch.php?keyword=&dall&hdtv=false&pdtv=false&dsr=false&realhd=true&webdl=false&ms=false&tvshow=false&movie=false&dvdrip=false&myshows=false&offset=0' link=main.OPENURL(murl) link=main.unescapes(link) match=re.compile('DirectDownload.tv">(.+?)</span>(.+?)</b> </strong>.+?<dd class="links">Download<br />(.+?)</dd>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for name1,name2,url in match: name=name1+' '+name2 name=name.replace('.',' ') main.addDirTE(name,url,62,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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('http://directdownload.tv/ajaxSearch.php.?keyword=&dall&hdtv=false&pdtv=false&dsr=false&realhd=true&webdl=false&ms=false&tvshow=false&movie=false&dvdrip=false&myshows=false&offset=([^\&]+)').findall(murl) for page in paginate: i=int(page)+20 purl='http://directdownload.tv/ajaxSearch.php?keyword=&dall&hdtv=false&pdtv=false&dsr=false&realhd=true&webdl=false&ms=false&tvshow=false&movie=false&dvdrip=false&myshows=false&offset='+str(i) main.addDir('[COLOR blue]Next[/COLOR]',purl,61,art+'/next2.png') main.GA("TV","Rlsmix")
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 LISTPFTV(murl,index=False): link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('''class="mnlcategorylist"><a href="([^"]+?)"><b>([^<]+?)<span style='.+?'>\((.+?)\)''').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url, name, count in match: name=re.sub('\((\d+)x(\d+)\)','',name,re.I) episode = re.search('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)',name, re.I) if(episode): e = str(episode.group(4)) if(len(e)==1): e = "0" + e s = episode.group(2) if(len(s)==1): s = "0" + s name = re.sub('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)','',name,re.I) name = name.strip() + " " + "S" + s + "E" + e if index == 'True': main.addDirTE(name,BASE_URL+url,21,'','','','','','') else: main.addDirTE(name,BASE_URL+url,461,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 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: if len(season) == 1: season = "0" + season if len(episode) == 1: episode = "0" + episode name = name.replace("_", " ") if ":" in name: name = re.findall("(.+?)\:", name)[0] name = name.strip() + " S" + season + "E" + episode 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 ICETODAY(murl,index=False): link = main.OPENURL(IceURL) link = cleanHex(link) latest = re.compile('<h1>Latest Releases</h1>(.+?)<h1>',re.DOTALL).findall(link) if latest: main.addDir('Search for TV Shows','TV',286,art+'/search.png') match=re.compile('<a href=(/ip[^>]+?)>([^<]+?)</a>(.*?)<li>',re.DOTALL).findall(latest[0]) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Episode list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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,title,hd in match: if re.search('\d+x\d+',title): title = re.sub('(.*)\(\d{4}\)\s*$','\\1',title).strip() title = re.sub('(\d+x\d+)\s(.*)','\\1 [COLOR blue]\\2[/COLOR]',title) title = re.sub(' \[COLOR blue\](& \d+x\d+ )',' \\1[COLOR blue]',title) title = title.replace('[COLOR blue][/COLOR]','').strip() if hd: title += " [COLOR red]HD[/COLOR]" if index == 'True': main.addDirTE(title,url,21,'','','','','','') else: main.addDirTE(title,url,283,'','','','','','') loadedLinks += 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 SEARCH(url = ''): encode = main.updateSearchFile(url,'TV') if not encode: return False surl='http://www.couchtuner.la/?s=' + encode link=main.OPENURL(surl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match=re.compile('<h2><a href="([^"]*?)" rel="bookmark" title="Watch.+?Online">([^"]*?)</a></h2>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url,name in match: main.addDirTE(name,url,9,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 nextpage=re.compile('<div class="prev-page"><strong>Previous <a href="([^"]*)">[^"]*</a></strong>').findall(link) if nextpage: xurl=base_url+nextpage[0] main.addDir('Next Page',xurl,120,'')
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 LISTPFTV(murl,index=False): main.GA(prettyName,"List") link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('''class="mnlcategorylist"><a href="([^"]+?)"><b>([^<]+?)<span style='.+?'>\((.+?)\)''').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url, name, count in match: name=re.sub('\((\d+)x(\d+)\)','',name,re.I) episode = re.search('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)',name, re.I) if(episode): e = str(episode.group(4)) if(len(e)==1): e = "0" + e s = episode.group(2) if(len(s)==1): s = "0" + s name = re.sub('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)','',name,re.I) name = name.strip() + " " + "S" + s + "E" + e if index == 'True': main.addDirTE(name,BASE_URL+url,21,'','','','','','') else: main.addDirTE(name,BASE_URL+url,461,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 LISTWATCHEPISODE(mname, murl): link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(" "," ") match=re.compile('<a href="([^<]+)"><span class="" >([^<]+)</span>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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+)',main.removeColorTags(mname),re.I) for url, episode in reversed(match): 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 = main.removeColoredText(mname).strip() name = name + " " + "S" + s + "E" + e episode = epi.group(3).strip() main.addDirTE(name + ' [COLOR red]'+str(episode)+'[/COLOR]','http://watchseries.lt'+url,575,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 if selfAddon.getSetting('auto-view') == 'true': xbmc.executebuiltin("Container.SetViewMode(%s)" % selfAddon.getSetting('episodes-view'))
def NewRelease(url): link=main.OPEN_URL(url) link=main.unescapes(link) match=re.compile('data-placement=.+?title=".+?href="([^"]*?)"><img src="([^"]*?)" alt="([^"]*?)"><div class="well-sx text-center">([^"]*?)<br>([^"]*?)</div></a></div>').findall(link) if match: dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url,thumb,epname,name,epinfo in match: main.addDirTE(name+' -'+epinfo+' '+epname,url,5,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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="(http://couchtuner.at/page/[^"]*?)">></a></li>').findall(link) for xurl in paginate: main.addDir('[COLOR blue]Next Page >'+'[/COLOR]',xurl,1,art+'/next2.png','')
def NewRelease(url): link=main.OPENURL(url) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','').replace('&player=2','').replace("",'').replace('\xe2\x80\x99',"'").replace('\xe2\x80\x93','-') match=re.compile('<span class="tvbox"><a href="http://www.couchtuner.me/[^"]+/[^"]+/([^"]+)"><img width="[^"]*" height="[^"]*" src="([^"]*)".+?<span class="tvpost">([^"]*)<br/>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url,thumb,name in match: url = 'http://streamonline.me/' + url main.addDirTE(name,url,5,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 nextpage=re.compile('<div class="prev-page"><strong>Previous <a href="([^"]*)">[^"]*</a></strong>').findall(link) if nextpage: xurl=base_url+nextpage[0] main.addDir('Next Page',xurl,1,'')
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: if len(season) == 1: season = "0" + season if len(episode) == 1: episode = "0" + episode name = name.replace('_', ' ') if ':' in name: name = re.findall('(.+?)\:', name)[0] name = name.strip()+' S'+season+'E'+episode 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 LAST_AIRED(url): html = main.OPENURL2(url) 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: if len(season) == 1: season = "0" + season if len(episode) == 1: episode = "0" + episode name = name.replace('_', ' ') if ':' in name: name = re.findall('(.+?)\:', name)[0] name = name.strip()+' S'+season+'E'+episode name = main.unescapes(name) 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: if len(season) == 1: season = "0" + season if len(episode) == 1: episode = "0" + episode name = name.replace('_', ' ') if ':' in name: name = re.findall('(.+?)\:', name)[0] name = name.strip()+' S'+season+'E'+episode 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 LISTTV4(murl): xbmc.executebuiltin("XBMC.Notification(Please Wait!,Collecting Source Data,10000)") main.addDir('Search Rlsmix','rlsmix',136,art+'/search.png') urllist=main.OPENURL('http://www.rlsmix.net/category/tv-shows/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/2/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/3/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/4/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/5/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/6/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/7/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/8/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/9/')+main.OPENURL('http://www.rlsmix.net/category/tv-shows/page/10/') if urllist: urllist=main.unescapes(urllist) match=re.compile('<h1 class="titles"><a href="(.+?)" title="Permanent Link to (.+?)">.+?src="http://uppix.net/(.+?)"').findall(urllist) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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: match2=re.compile('TV Round Up').findall(name) name=name.replace('\xc2\xa0','').replace('" ','').replace(' "','').replace('"','').replace("'","'").replace("&","and").replace("’","'").replace("amp;","and").replace("#8211;","-") if len(match2)==0: main.addDirTE(name,url,62,'http://uppix.net/'+thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 main.GA("TV","Rlsmix")
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 LISTTV4(murl): xbmc.executebuiltin( "XBMC.Notification(Please Wait!,Collecting Source Data,10000)") main.addDir('Search Rlsmix', 'rlsmix', 136, art + '/search.png') urllist = main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/') + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/2/') + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/3/' ) + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/4/' ) + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/5/' ) + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/6/' ) + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/7/' ) + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/8/' ) + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/9/' ) + main.OPENURL( 'http://www.rlsmix.net/category/tv-shows/page/10/') if urllist: urllist = main.unescapes(urllist) match = re.compile( '<h1 class="titles"><a href="(.+?)" title="Permanent Link to (.+?)">.+?src="http://uppix.net/(.+?)"' ).findall(urllist) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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: match2 = re.compile('TV Round Up').findall(name) name = name.replace('\xc2\xa0', '').replace('" ', '').replace( ' "', '').replace('"', '').replace("'", "'").replace( "&", "and").replace("’", "'").replace("amp;", "and").replace("#8211;", "-") if len(match2) == 0: main.addDirTE(name, url, 62, 'http://uppix.net/' + thumb, '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes 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 main.GA("TV", "Rlsmix")
def SEARCH(url = ''): encode = main.updateSearchFile(url,'TV') if not encode: return False surl='http://couchtuner.at/search?q=' + encode link=main.OPENURL(surl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match=re.compile('td class="col-md-1"><img src="([^"]*?)" title=".+?</td>\s*<td class="col-md-11">.+?<h4 class="media-heading" ><a href="([^"]*?)">([^"]*?)</a></h4>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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: main.addDirTE(name,url,9,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 nextpage=re.compile('<a href="(http://couchtuner.at/page/[^"]*?)">></a></li>').findall(link) if nextpage: for xurl in nextpage: main.addDir('Next Page',xurl,120,'')
def ShowDirectDownloadTVItems(html, cached=False, cached_path=False): html=main.unescapes(html) if cached: match = eval(cached) else: match=re.compile('{"release":"([^"]+?)","when":.+?,"size":".+?","links":(.+?),"idtvs".+?"quality":"([^"]+?)".+?}').findall(html) if cached_path and match: main.setFile(cached_path,str(match)) totalLinks = len(match) if totalLinks: dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') loadedLinks = 0 remaining_display = 'Episodes 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 title,url,quality in match: title = processTitle(title,quality) url=url.replace('\/','/') if isArchive(url): title = '[B][Archived][/B] ' + title main.addDirTE(title,url,62,'','','','','','') loadedLinks += 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display) if dialogWait.iscanceled(): return loadedLinks dialogWait.close() del dialogWait return totalLinks
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: if len(season) == 1: season = "0" + season if len(episode) == 1: episode = "0" + episode name = name.replace("_", " ") if ":" in name: name = re.findall("(.+?)\:", name)[0] name = name.strip() + " S" + season + "E" + episode 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 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 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 LISTWATCHS(murl): main.GA("Watchseries","List") link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('<a title=".+?" href="(.+?)">(.+?)</a>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url, name in match: name=re.sub('\((\d+)x(\d+)\)','',name,re.I) episode = re.search('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)',name, re.I) if(episode): e = str(episode.group(4)) if(len(e)==1): e = "0" + e s = episode.group(2) if(len(s)==1): s = "0" + s name = re.sub('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)','',name,re.I) name = name.strip() + " " + "S" + s + "E" + e if 'watchseries.' not in name and 'watchtvseries.' not in name: main.addDirTE(name,'http://watchseries.lt'+url,575,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 EPISODES(name, url, index=False): episodes = eval(urllib.unquote(url)) totalLinks = len(episodes) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Episode list is cached.') loadedLinks = 0 remaining_display = 'Episodes 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, epname, eptitle in episodes: if index == 'True': main.addDirTE(epname + eptitle, url, 5, '', '', '', '', '', '') else: main.addDirTE(epname + eptitle, url, 5, '', '', '', '', '', '') 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 ICEEPISODES(name, url): name = re.sub('(.*)\(\d{4}\)\s*$', '\\1', name).strip(" :-") name = re.sub('(.*)\d{4}$', '\\1', name).strip(" :-") name = name.partition('Season')[0].strip() episodes = eval(urllib.unquote(url)) totalLinks = len(episodes) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Episode list is cached.') loadedLinks = 0 remaining_display = 'Episodes 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, title, hd in episodes: title = re.sub('(\d+x\d+)\s(.*)', '\\1 [COLOR blue]\\2[/COLOR]', title) title = re.sub(' \[COLOR blue\](& \d+x\d+ )', ' \\1[COLOR blue]', title) title = title.replace('[COLOR blue][/COLOR]', '').strip() if hd: title += " [COLOR red]HD[/COLOR]" main.addDirTE(name + ' ' + title, IceURL + url, 283, '', '', '', '', '', '') 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 main.GA("Episodes", "IceFilms")
def LAST_AIRED(url): html = main.OPENURL2(url) 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: if len(season) == 1: season = "0" + season if len(episode) == 1: episode = "0" + episode name = name.replace("_", " ") if ":" in name: name = re.findall("(.+?)\:", name)[0] name = name.strip() + " S" + season + "E" + episode name = main.unescapes(name) 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 ICEEPISODES(name,url,index=False): name = re.sub('(.*)\(\d{4}\)\s*$','\\1',name).strip(" :-") name = re.sub('(.*)\d{4}$','\\1',name).strip(" :-") name = name.partition('Season')[0].strip() episodes = eval(urllib.unquote(url)) totalLinks = len(episodes) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Episode list is cached.') loadedLinks = 0 remaining_display = 'Episodes 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,title,hd in episodes: title = re.sub('(\d+x\d+)\s(.*)','\\1 [COLOR blue]\\2[/COLOR]',title) title = re.sub(' \[COLOR blue\](& \d+x\d+ )',' \\1[COLOR blue]',title) title = title.replace('[COLOR blue][/COLOR]','').strip() if hd: title += " [COLOR red]HD[/COLOR]" if index == 'True': main.addDirTE(name+' '+title,IceURL+url,21,'','','','','','') else: main.addDirTE(name+' '+title,IceURL+url,283,'','','','','','') 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 iWatchEpisode(mname, murl, index=False): seanum = mname.split('Season ')[1] tv_content = main.OPENURL(murl) link = PANEL_REPLACER(tv_content) descs = re.compile('<meta name="description" content="(.+?)">').findall( link) if len(descs) > 0: desc = descs[0] else: desc = '' thumbs = re.compile( '<div class="movie-cover span2"><img src="(.+?)" alt=".+?" class=".+?" />' ).findall(link) if len(thumbs) > 0: thumb = thumbs[0] else: thumb = '' episodes = re.search('(?sim)season' + seanum + '(.+?)</table>', link) if episodes: episodes = episodes.group(1) match = re.compile( '<a[^>]+?href=\"([^"]+?)\".+?</i>([^<]+?)</a>.+?<td>([^<]+?)</td>' ).findall(episodes) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) for url, epi, name in match: mname = mname.replace('(', '').replace(')', '') mname = re.sub(" \d{4}", "", mname) sea = re.compile('s' + str(seanum)).findall(url) if len(sea) > 0: if index == 'True': main.addDirTE( mname.strip() + ' ' + epi.strip() + ' [COLOR blue]' + name.strip() + '[/COLOR]', url, 21, thumb, desc, '', '', '', '') else: main.addDirTE( mname.strip() + ' ' + epi.strip() + ' [COLOR blue]' + name.strip() + '[/COLOR]', url, 588, thumb, desc, '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes 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 if selfAddon.getSetting('auto-view') == 'true': xbmc.executebuiltin("Container.SetViewMode(%s)" % selfAddon.getSetting('episodes-view'))
def SEARCHRlsmix(murl): log_in = net().http_POST('http://directdownload.tv',{'username':user,'password':passw,'Login':'******'}).content seapath=os.path.join(main.datapath,'Search') SeaFile=os.path.join(seapath,'SearchHistoryTv') try: os.makedirs(seapath) except: pass if murl == 'rlsmix': keyb = xbmc.Keyboard('', 'Search For Shows or Movies') keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() encode=urllib.quote(search) surl='http://directdownload.tv/index/search/keyword/'+encode+'/qualities/pdtv,dsr,realhd,dvdrip,webdl,webdl1080p/from/0/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 else: encode = murl surl='http://directdownload.tv/index/search/keyword/'+encode+'/qualities/pdtv,dsr,realhd,dvdrip,webdl,webdl1080p/from/0/search' link = net().http_GET(surl).content urllist=main.unescapes(link) match=re.compile('{"release":"(.+?)","when":.+?,"size":".+?","links":(.+?),"idtvs".+?}').findall(urllist) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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: name=name.replace('.',' ') url=url.replace('\/','/') main.addDirTE(name,url,62,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 main.GA("Movie1k","Search")
def iWatchToday(murl, index=False): main.GA("Tvshows", "TodaysList") link = main.OPENURL(murl) daysback = 2 for x in range(0, daysback): match = re.findall(r"</i></a> <a href='(.*?)'", link) if (match): link = link + main.OPENURL( "http://www.iwatchonline.to/tv-schedule" + match[x]) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') link = re.sub('>\s*', '>', link) link = re.sub('\s*<', '<', link) match = re.compile( '<img src="([^"]+?)"[^<]+?<br /><a href="([^"]+?)">(.+?)</a></td><td.+?>([^<]+?)</td><td.+?>([^<]+?)</td>.*?>(\d{,2}) Link\(s\)', re.M).findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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 thumb, url, name, episea, epiname, active in match: if (active == '0'): totalLinks -= 1 continue name = name.strip() thumb = thumb.strip() url = url.strip() episea = episea.strip() epiname = epiname.strip() if index == 'True': name = re.sub('(\d{4})', '', name.replace(' (', '').replace(')', '')) main.addDirTE( name + ' ' + episea + ' [COLOR blue]' + epiname + '[/COLOR]', url, 21, thumb, '', '', '', '', '') else: main.addDirTE( name + ' ' + episea + ' [COLOR blue]' + epiname + '[/COLOR]', url, 588, thumb, '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes 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 LISTWATCHEPISODE(mname, murl, index=False): link = main.OPENURL(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace( " ", " ") print mname xname = re.findall('(Season .+?)', mname)[0] print xname match = re.compile( '<a title=".+?- ' + xname + ' -.+?" href="([^"]+)"><span class="" >([^<]+)</span>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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+)', main.removeColorTags(mname), re.I) for url, episode in reversed(match): 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 = main.removeColoredText(mname).strip() name = name + " " + "S" + s + "E" + e episode = epi.group(3).strip() if index == 'True': name = re.sub('(\d{4})', '', name.replace(' (', '').replace(')', '')) main.addDirTE(name + ' [COLOR red]' + str(episode) + '[/COLOR]', 'http://watchseries.ag' + url, 21, '', '', '', '', '', '') else: main.addDirTE(name + ' [COLOR red]' + str(episode) + '[/COLOR]', 'http://watchseries.ag' + url, 575, '', '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes 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 if selfAddon.getSetting('auto-view') == 'true': xbmc.executebuiltin("Container.SetViewMode(%s)" % selfAddon.getSetting('episodes-view'))
def ShowSceneLogItems(html, category, quality): html = main.unescapes(html) match = re.compile('<h1>.*?href="(.+?)".*?title="(.+?)"').findall(html) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Episodes list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes Cached :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) if match: for url, title in match: title = title.replace(".", " ").replace("_", " ") episode = re.search('(\d+)x(\d\d+)', title, re.I) if (episode): e = str(episode.group(2)) s = str(episode.group(1)) if len(s) == 1: s = "0" + s episode = "S" + s + "E" + e title = re.sub('(\d+)x(\d\d+)', episode, title, re.I) else: title = re.sub('(\d{4}) (\d{2}) (\d{2})', '\\1.\\2.\\3', title, re.I) isHD = re.compile('720p|1080p').findall(title) q = re.search( '(?i)(720p|1080p|HDTV|PDTV|WEB DL|DVDRIP|WS DSR|DSR|BDRip|WEBRiP)', title, re.I) title = re.sub( '(?i)(720p|1080p|HDTV|PDTV|WEB DL|DVDRIP|WS DSR|DSR|BDRip|WEBRiP|x264|lol ?-).*', '', title).strip("- ") title = re.sub('(\d{4}\.\d{2}\.\d{2})(.*)', '\\1[COLOR blue]\\2[/COLOR]', title, re.I) title = re.sub('(S\d+E\d+.*?) (.*)', '\\1 [COLOR blue]\\2[/COLOR]', title, re.I) if q: title += " [COLOR red]" + q.group(1) + "[/COLOR]" else: title += " [COLOR red]SD[/COLOR]" if (isHD or quality != 'HD'): if category == 'TV': main.addDirTE(title, url, 656, '', '', '', '', '', '') else: main.addDirM(title, url, 656, '', '', '', '', '', '') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = '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 dialogWait.close() del dialogWait
def LISTEPISODE(mname,murl,index=False): link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('(?sim)<td class="episode"><a name=".+?"></a><b>([^<]+?)</b></td><td class="mnllinklist" align="right"><div class="right">(s\d+e\d+).+?</div>').findall(link) for name,epi in reversed(match): mname=re.sub('(\(.+?\))','[COLOR red]Episode[/COLOR]',mname) name=mname+' [COLOR red]'+name.strip().replace('.','')+'[/COLOR]' name = re.sub('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)',epi,main.removeColorTags(name),re.I) #name=name.encode('utf-8') name = name.decode("utf-8", "ignore") if index == 'True': main.addDirTE(name,murl,21,'','','','','','') else: main.addDirTE(name,murl,461,'','','','','','')
def LISTSP2(murl): if murl=='3D': xbmc.executebuiltin("XBMC.Notification(Please Wait!,Collecting Source Data,5000)") main.addDir('Search Newmyvideolinks','movieNEW',102,art+'/search.png') check=main.OPENURL('http://www.myvideolinks.eu/category/movies/3-d-movies/') match=re.compile('<p><a href=".+?" >Next Page »</a></p>').findall(check) if len(match)>0: urllist=main.OPENURL('http://www.myvideolinks.eu/category/movies/3-d-movies/')+main.OPENURL('http://www.myvideolinks.eu/category/movies/3-d-movies/page/2/') else: urllist=main.OPENURL('http://www.myvideolinks.eu/category/movies/3-d-movies/') elif murl=='TV': xbmc.executebuiltin("XBMC.Notification(Please Wait!,Collecting Source Data,10000)") main.addDir('Search Newmyvideolinks','tvNEW',102,art+'/search.png') urllist=main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/2/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/3/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/4/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/5/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/6/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/7/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/8/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/9/')+main.OPENURL('http://www.myvideolinks.eu/category/tv-shows/page/10/') else: xbmc.executebuiltin("XBMC.Notification(Please Wait!,Collecting Source Data,10000)") main.addDir('Search Newmyvideolinks','movieNEW',102,art+'/search.png') urllist=main.OPENURL('http://www.myvideolinks.eu/category/movies/bluray/')+main.OPENURL('http://www.myvideolinks.eu/category/movies/bluray/page/2/')+main.OPENURL('http://www.myvideolinks.eu/category/movies/bluray/page/3/')+main.OPENURL('http://www.myvideolinks.eu/category/movies/bluray/page/4/')+main.OPENURL('http://www.myvideolinks.eu/category/movies/bluray/page/5/')+main.OPENURL('http://www.myvideolinks.eu/category/movies/bluray/page/6/')+main.OPENURL('http://www.myvideolinks.eu/category/movies/bluray/page/7/')+main.OPENURL('http://www.myvideolinks.eu/category/movies/bluray/page/8/') if urllist: urllist=main.unescapes(urllist) #link=main.OPENURL(xurl) match=re.compile("""<a href=".+?" rel=".+?" title=".+?"> <img src="(.+?)" width=".+?" height=".+?" title="(.+?)" class=".+?"></a><h4><a href="(.+?)" rel""").findall(urllist) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies/Episodes Cached :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) if len(match)>0: for thumb,name,url in match: if murl=='TV': match=re.compile('720p').findall(name) if (len(match)>0): main.addDirTE(name,url,35,thumb,'','','','','') else: main.addDirM(name,url,35,thumb,'','','','','') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') 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 dialogWait.close() del dialogWait main.GA("HD-3D-HDTV","Newmyvideolinks") main.VIEWS()
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 SEARCHNEW(mname,murl): if murl == 'movieNEW': encode = main.updateSearchFile(mname,'Movies','Search') if not encode: return False surl='http://myvideolinks.me/?s='+encode link=main.OPENURL(surl) link=main.unescapes(link) match=re.compile(pattern).findall(link) if match: for url,thumb,name in match: name=main.CleanTitle(name) if not re.findall('HDTV',name): main.addDirM(name,url,35,thumb,'','','','','') elif murl == 'tvNEW': encode = main.updateSearchFile(mname,'TV','Search') if not encode: return False surl='http://tv.myvideolinks.eu/?s='+encode link=main.OPENURL(surl) link=main.unescapes(link) match=re.compile(pattern).findall(link) if match: for url,thumb,name in match: name=main.CleanTitle(name) main.addDirTE(name,url,35,thumb,'','','','','') else: if murl == 'tNEW': encode = mname.replace(' ','+') surl='http://tv.myvideolinks.eu/?s='+encode link=main.OPENURL(surl) link=main.unescapes(link) match=re.compile(pattern).findall(link) if match: for url,thumb,name in match: name=main.CleanTitle(name) main.addDirTE(name,url,35,thumb,'','','','','') elif murl == 'mNEW': encode = mname.replace(' ','+') surl='http://myvideolinks.me/?s='+encode link=main.OPENURL(surl) link=main.unescapes(link) match=re.compile(pattern).findall(link) if match: for url,thumb,name in match: name=main.CleanTitle(name) if not re.findall('HDTV',name): main.addDirM(name,url,35,thumb,'','','','','') main.GA("Newmyvideolinks","Search")
def SEARCHNEW(mname, murl): if murl == 'movieNEW': encode = main.updateSearchFile(mname, 'Movies', 'Search') if not encode: return False surl = 'http://myvideolinks.me/?s=' + encode link = main.OPENURL(surl) link = main.unescapes(link) match = re.compile(pattern).findall(link) if match: for url, thumb, name in match: name = main.CleanTitle(name) if not re.findall('HDTV', name): main.addDirM(name, url, 35, thumb, '', '', '', '', '') elif murl == 'tvNEW': encode = main.updateSearchFile(mname, 'TV', 'Search') if not encode: return False surl = 'http://tv.myvideolinks.eu/?s=' + encode link = main.OPENURL(surl) link = main.unescapes(link) match = re.compile(pattern).findall(link) if match: for url, thumb, name in match: name = main.CleanTitle(name) main.addDirTE(name, url, 35, thumb, '', '', '', '', '') else: if murl == 'tNEW': encode = mname.replace(' ', '+') surl = 'http://tv.myvideolinks.eu/?s=' + encode link = main.OPENURL(surl) link = main.unescapes(link) match = re.compile(pattern).findall(link) if match: for url, thumb, name in match: name = main.CleanTitle(name) main.addDirTE(name, url, 35, thumb, '', '', '', '', '') elif murl == 'mNEW': encode = mname.replace(' ', '+') surl = 'http://myvideolinks.me/?s=' + encode link = main.OPENURL(surl) link = main.unescapes(link) match = re.compile(pattern).findall(link) if match: for url, thumb, name in match: name = main.CleanTitle(name) if not re.findall('HDTV', name): main.addDirM(name, url, 35, thumb, '', '', '', '', '') main.GA("Newmyvideolinks", "Search")
def LISTEPISODES(name,murl,thumb): link=main.OPENURL(murl) match=re.findall('{"id":"(.+?)","name":"(.+?)","date":"(.+?)"}',link,re.DOTALL) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies/Episodes Cached :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for id,name,date in match: main.addDirTE(name+' [COLOR red]'+date+'[/COLOR]',id,271,thumb,'','','','','') 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
def LISTEPISODE(mname, murl, index=False): link = main.OPENURL(murl) link = link.replace("\r", "").replace("\n", "").replace("\t", "") match = re.compile( '(?sim)<td class="episode"><a name=".+?"></a><b>([^<]+?)</b></td><td class="mnllinklist" align="right"><div class="right">(s\d+e\d+).+?</div>' ).findall(link) for name, epi in reversed(match): mname = re.sub("(\(.+?\))", "[COLOR red]Episode[/COLOR]", mname) name = mname + " [COLOR red]" + name.strip().replace(".", "") + "[/COLOR]" name = re.sub("Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)", epi, main.removeColorTags(name), re.I) # name=name.encode('utf-8') name = name.decode("utf-8", "ignore") if index == "True": main.addDirTE(name, murl, 21, "", "", "", "", "", "") else: main.addDirTE(name, murl, 461, "", "", "", "", "", "")
def LISTWATCHS(murl, index=False): main.GA("Watchseries", "List") link = main.OPENURL(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '') match = re.compile( '<a class=".+?" title=".+?" href="(.+?)">.+?</span>(.+?)</a>').findall( link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) for url, name in match: name = re.sub('\((\d+)x(\d+)\)', '', name, re.I) episode = re.search('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)', name, re.I) if (episode): e = str(episode.group(4)) if (len(e) == 1): e = "0" + e s = episode.group(2) if (len(s) == 1): s = "0" + s name = re.sub('Seas(on)?\.? (\d+).*?Ep(isode)?\.? (\d+)', '', name, re.I) name = name.strip() + " " + "S" + s + "E" + e if 'watchseries.' not in name and 'watchtvseries.' not in name: if index == 'True': name = re.sub('(\d{4})', '', name.replace(' (', '').replace(')', '')) main.addDirTE(name, 'http://watchseries.ag' + url, 21, '', '', '', '', '', '') else: main.addDirTE(name, 'http://watchseries.ag' + url, 575, '', '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes 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 NewRelease(url): link=main.OPEN_URL(url) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','').replace('–',' - ') match=re.compile('class="tvbox">.+?<a href="([^"]*?)" title="Watch([^"]*?)Online" ><span style="background-image: url[(]([^"]*?)[)]" class.+?').findall(link) if match: dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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: thumb='http://www.couchtuner.eu'+thumb main.addDirTE(name,url,5,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 else: match=re.compile('class="tvbox">.+?<a href="([^"]*?)" title="Watch([^"]*?)Online" ><span style="background-image: url[(]([^"]*?)[)]" class.+?').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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: thumb='http://www.couchtuner.eu'+thumb main.addDirTE(name,url,5,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 nextpage=re.compile('<div class="prev-page"><strong>Previous <a href="([^"]*)">[^"]*</a></strong>').findall(link) if nextpage: xurl=base_url+nextpage[0] main.addDir('Next Page',xurl,1,'')
def ShowSceneLogItems(html,category,quality): html = main.unescapes(html) match = re.compile('<h1>.*?href="(.+?)".*?title="(.+?)"').findall(html) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Movie list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Movies/Episodes Cached :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) if match: for url,title in match: title = title.replace("."," ").replace("_"," ") episode = re.search('(\d+)x(\d\d+)',title, re.I) if(episode): e = str(episode.group(2)) s = str(episode.group(1)) if len(s)==1: s = "0" + s episode = "S" + s + "E" + e title = re.sub('(\d+)x(\d\d+)',episode,title,re.I) else: title = re.sub('(\d{4}) (\d{2}) (\d{2})','\\1.\\2.\\3',title,re.I) isHD = re.compile('720p|1080p').findall(title) if isHD: title = title.split(isHD[0])[0].strip() else: title = title.split('HDTV')[0].strip() title = title.split('PDTV')[0].strip() title = re.sub('(\d{4}\.\d{2}\.\d{2})(.*)','\\1[COLOR blue]\\2[/COLOR]',title,re.I) title = re.sub('(S\d+E\d+.*?) (.*)','\\1 [COLOR blue]\\2[/COLOR]',title,re.I) if isHD: title += " [COLOR red]"+isHD[0]+"[/COLOR]" if (isHD or quality != 'HD'): if category=='TV': main.addDirTE(title,url,656,'','','','','','') else: main.addDirM(title,url,656,'','','','','','') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') 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 dialogWait.close() del dialogWait
def ICETODAY(murl, index=False): link = main.OPENURL(IceURL) link = cleanHex(link) latest = re.compile('<h1>Latest Releases</h1>(.+?)<h1>', re.DOTALL).findall(link) if latest: main.addDir('Search for TV Shows', 'TV', 286, art + '/search.png') match = re.compile('<a href=(/ip[^>]+?)>([^<]+?)</a>(.*?)<li>', re.DOTALL).findall(latest[0]) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Episode list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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, title, hd in match: if re.search('\d+x\d+', title): title = re.sub('(.*)\(\d{4}\)\s*$', '\\1', title).strip() title = re.sub('(\d+x\d+)\s(.*)', '\\1 [COLOR blue]\\2[/COLOR]', title) title = re.sub(' \[COLOR blue\](& \d+x\d+ )', ' \\1[COLOR blue]', title) title = title.replace('[COLOR blue][/COLOR]', '').strip() if hd: title += " [COLOR red]HD[/COLOR]" if index == 'True': main.addDirTE(title, url, 21, '', '', '', '', '', '') else: main.addDirTE(title, url, 283, '', '', '', '', '', '') loadedLinks += 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes 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 iWatchToday(murl,index=False): main.GA("Tvshows","TodaysList") link=main.OPENURL(murl) daysback = 2 for x in range(0, daysback): match = re.findall(r"</i></a> <a href='(.*?)'" , link) if(match): link = link + main.OPENURL("http://www.iwatchonline.to/tv-schedule" + match[x]) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') link = re.sub('>\s*','>',link) link = re.sub('\s*<','<',link) match=re.compile('<img src="([^"]+?)"[^<]+?<br /><a href="([^"]+?)">(.+?)</a></td><td.+?>([^<]+?)</td><td.+?>([^<]+?)</td>.*?>(\d{,2}) Link\(s\)', re.M).findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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 thumb,url,name,episea,epiname,active in match: if(active == '0'): totalLinks -= 1 continue name=name.strip() thumb=thumb.strip() url=url.strip() episea=episea.strip() epiname=epiname.strip() if index == 'True': name=re.sub('(\d{4})','',name.replace(' (','').replace(')','')) main.addDirTE(name+' '+episea+' [COLOR blue]'+epiname+'[/COLOR]',url,21,thumb,'','','','','') else: main.addDirTE(name+' '+episea+' [COLOR blue]'+epiname+'[/COLOR]',url,588,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 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 SEARCH(url=''): encode = main.updateSearchFile(url, 'TV') if not encode: return False surl = 'http://www.couchtuner.me/?s=' + encode link = main.OPENURL(surl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile( '<span class="tvbox"><a href="http://www.couchtuner.me/[^"]+/[^"]+/([^"]+)"><img width="[^"]*" height="[^"]*" src="([^"]*)".+?<span class="tvpost">([^"]*)<br/>' ).findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) for url, thumb, name in match: url = 'http://streamonline.me/' + url main.addDirTE(name, url, 5, thumb, '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes 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 nextpage = re.compile( '<div class="prev-page"><strong>Previous <a href="([^"]*)">[^"]*</a></strong>' ).findall(link) if nextpage: xurl = base_url + nextpage[0] main.addDir('Next Page', xurl, 120, '')
def LISTWATCHEPISODE(mname, murl): link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(" "," ") match=re.compile('<a href="([^<]+)"><span class="" >([^<]+)</span>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url, name in reversed(match): main.addDirTE(mname+' [COLOR red]'+name+'[/COLOR]','http://watchseries.lt'+url,575,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 if selfAddon.getSetting('auto-view') == 'true': xbmc.executebuiltin("Container.SetViewMode(%s)" % selfAddon.getSetting('episodes-view'))
def LISTPopBTV(murl): if murl=='todays': url='http://www.btvguide.com/shows' link=main.OPENURL(url) match=re.compile('<a href="(.+?)" class=".+?" style=".+?">\r\n\t\t\t\t\t\t\t\t\t<span class=".+?">(.+?)</span>\r\n\t\t\t\t\t\t\t\t\t<span class=".+?">(.+?)\r\n\t\t\t\t\t\t\t\t\t(.+?)</span>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url, name, seep, epiname in match: seep=seep.replace('S.','Season ').replace('E.','Episode ').replace(',','').replace(':',' ') main.addDirTE(name+' '+seep+' [COLOR red]"'+epiname+'"[/COLOR]',url,559,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 SEARCH(url=''): encode = main.updateSearchFile(url, 'TV') if not encode: return False surl = 'http://www.couchtuner.la/?s=' + encode link = main.OPENURL(surl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile( '<h2><a href="([^"]*?)" rel="bookmark" title="Watch.+?Online">([^"]*?)</a></h2>' ).findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]', remaining_display) for url, name in match: main.addDirTE(name, url, 9, '', '', '', '', '', '') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes 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 nextpage = re.compile( '<div class="prev-page"><strong>Previous <a href="([^"]*)">[^"]*</a></strong>' ).findall(link) if nextpage: xurl = base_url + nextpage[0] main.addDir('Next Page', xurl, 120, '')
def LISTWATCHS(murl): main.GA("Watchseries","List") link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('<a title=".+?" href="(.+?)">(.+?)</a>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for url, name in match: name=name.replace('Seas.','Season').replace('Ep.','Episode') main.addDirTE(name,'http://watchseries.lt'+url,575,'','','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 LISTEpilistBTV(mname,murl): link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace('"src="http://static0.btvguide.com/images/nocoverbig.png','').replace('|','') match=re.compile('<img class=.+?="(.+?)".+?alt="(.+?) BTVGuide".+?<a class="title" href="(.+?)"').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes 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(':',' :') main.addDirTE(name,url,559,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 if selfAddon.getSetting('auto-view') == 'true': xbmc.executebuiltin("Container.SetViewMode(%s)" % selfAddon.getSetting('episodes-view'))
def LISTNEWEpiBTV(murl): link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','') match=re.compile('target=".+?"><img.+?="h(.+?)" .+?/></a></div></div><div class=".+?"><h4><a href="([^<]+)" title="([^<]+)" style=".+?" target=".+?">([^<]+)</a><div class=".+?" style=".+?">.+?</div></h4><div class=".+?" ><span class=\'_more_less\' style=".+?"><span style=".+?">([^<]+)</span>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for thumb, url, epiname, name, seep in match: seep=seep.replace(',','') main.addDirTE(name+' '+seep+' [COLOR red]"'+epiname+'"[/COLOR]',url,559,'h'+thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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="([^<]+)">></a>').findall(link) if len(paginate)>0: main.addDir('Next','http://www.btvguide.com'+paginate[0],565,art+'/next2.png')
def iWatchToday(murl): main.GA("Tvshows","TodaysList") link=main.OPENURL(murl) link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','') match=re.compile('<img pagespeed_.+?_src="(.+?)".+?<a href="(.+?)">(.+?)</a></td><td.+?>(.+?)</td><td.+?>(.+?)</td>').findall(link) dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') totalLinks = len(match) loadedLinks = 0 remaining_display = 'Episodes loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display) for thumb,url,name,episea,epiname in match: name=name.replace('(','').replace(')','') name=name.replace('(\d{4})','') main.addDirTE(name+' '+episea+' '+epiname,url,588,thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Episodes 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 ShowDirectDownloadTVItems(html, cached=False, cached_path=False): html = main.unescapes(html) if cached: match = eval(cached) else: match = re.compile( '{"release":"([^"]+?)","when":.+?,"size":".+?","links":(.+?),"idtvs".+?"quality":"([^"]+?)".+?}' ).findall(html) if cached_path and match: main.setFile(cached_path, str(match)) totalLinks = len(match) if totalLinks: dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait until Show list is cached.') loadedLinks = 0 remaining_display = 'Episodes 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 title, url, quality in match: title = processTitle(title, quality) url = url.replace('\/', '/') if isArchive(url): title = '[B][Archived][/B] ' + title main.addDirTE(title, url, 62, '', '', '', '', '', '') loadedLinks += 1 percent = (loadedLinks * 100) / totalLinks remaining_display = 'Episodes loaded :: [B]' + str( loadedLinks) + ' / ' + str(totalLinks) + '[/B].' dialogWait.update(percent, '[B]Will load instantly from now on[/B]', remaining_display) if dialogWait.iscanceled(): return loadedLinks dialogWait.close() del dialogWait return totalLinks