def FAVS(): favpath = os.path.join(main.datapath, 'Favourites') moviefav = os.path.join(favpath, 'Movies') FavFile = os.path.join(moviefav, 'Fav') if os.path.exists(FavFile): Favs = re.compile('url="(.+?)",name="(.+?)"').findall( open(FavFile, 'r').read()) for url, name in Favs: name = name.replace('-', '').replace('&', '').replace('acute;', '') url = url.replace('(', '').replace('[', '') if url[0] == 'm': url = 'http://movie25.com/' + url link = main.OPENURL(url) match = re.compile( '<div class="movie_pic"><a href="(.+?)" target="_blank">' ).findall(link) for thumb in match: main.addInfo(name, url, 3, thumb, '', '') else: xbmc.executebuiltin( "XBMC.Notification([B][COLOR green]Mash Up[/COLOR][/B],[B]You Have No Saved Favourites[/B],5000," ")") main.GA("None", "Movie25-Fav") xbmcplugin.setContent(int(sys.argv[1]), 'Movies') main.VIEWS()
def YOULink(mname, url, thumb): ok = True main.GA("Youtube-List", "Watched") url = "plugin://plugin.video.youtube/?path=/root/video&action=play_video&videoid=" + url + "&hd=1" stream_url = url # play with bookmark player = playbackengine.PlayWithoutQueueSupport( resolved_url=stream_url, addon_id=addon_id, video_type='', title=mname, season='', episode='', year='', img=thumb, infolabels='', watchedCallbackwithParams=main.WatchedCallbackwithParams, imdb_id='') #WatchHistory if selfAddon.getSetting("whistory") == "true": wh.add_item(mname + ' ' + '[COLOR green]YoutubeChannel[/COLOR]', sys.argv[0] + sys.argv[2], infolabels='', img=thumb, fanart='', is_folder=False) player.KeepAlive() return ok
def YOUKIDS(): main.addDir('Sesame Street', 'sesamestreet', 47, art + '/youkids.png') main.addDir('Yo Gabba Gabba!', 'yogabbagabba', 47, art + '/youkids.png') main.addDir('Baby Tv', 'BabyTVChannel', 47, art + '/youkids.png') main.addDir('Houston Zoo', 'houstonzoo', 47, art + '/youkids.png') main.addDir('Simple Kids Crafts', 'simplekidscrafts', 47, art + '/youkids.png') main.addDir('Cartoon Network', 'cartoonnetwork', 47, art + '/youkids.png') main.addDir('Muppets Studio', 'MuppetsStudio', 47, art + '/youkids.png') main.addDir('Word World PBS', 'WordWorldPBS', 47, art + '/youkids.png') main.addDir('Big Red Hat Kids', 'bigredhatkids', 47, art + '/youkids.png') main.addDir('Baby Einstein', 'TerrapinStation5', 47, art + '/youkids.png') main.addDir('Activity Village', 'activityv', 47, art + '/youkids.png') main.addDir('Hoopla Kids', 'hooplakidz', 47, art + '/youkids.png') main.addDir('4KidsTV', '4KidsTV', 47, art + '/youkids.png') main.addDir('School House Rock Kids', 'MrRiggyRiggs', 47, art + '/youkids.png') main.addDir('Arthur', 'MsArthurTV', 47, art + '/youkids.png') main.addDir('POCOYO', 'pocoyotv', 47, art + '/youkids.png') main.addDir('Disney jr', 'disneyjunior', 47, art + '/youkids.png') main.addDir('Mickey Mouse', 'MickeyMouseCartoon', 47, art + '/youkids.png') main.addDir('Tom and Jerry', 'TheTomEJerryShow', 47, art + '/youkids.png') main.addDir('Dora', 'TheDoraTheExplorerHD', 47, art + '/youkids.png') main.addDir('SpongeBob', 'Spongebob4Children', 47, art + '/youkids.png') main.addDir('Curious George', 'ngk', 47, art + '/youkids.png') main.addDir('Kids Camp', 'kidscamp', 47, art + '/youkids.png') main.addDir('Timon and Pumbaa', 'timonandpumbaa1', 47, art + '/youkids.png') main.addDir('Dragon Tales', 'DejectedDragon', 47, art + '/youkids.png') main.addDir('Aladdin', 'aladdinvids', 47, art + '/youkids.png') main.GA("KidZone", "YoutubeKids") main.VIEWSB()
def LISTMOVIES(murl): link = main.OPENURL(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.findall( 'movie_pic"><a href="([^"]+)" target=".+?<img src="(.+?)".+?target="_self">([^<]+)</a>.+?>([^<]+)</a>.+?<br/>Views: <span>(.+?)</span>.+?(.+?)votes.*?<li class="current-rating" style="width:(\d+?)px', 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, genre, views, votes, rating in match: votes = votes.replace('(', '') name = name.replace('-', '').replace('&', '').replace('acute;', '').strip() main.addInfo( name + '[COLOR blue] Views: ' + views + '[/COLOR] [COLOR red]Votes: ' + votes + '[/COLOR] [COLOR green]Rating: ' + rating + '/100[/COLOR]', MainUrl + url, 3, thumb, genre, '') 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("None", "Movie25-list") paginate = re.compile('</a><a href=\'([^<]+)\'>Next</a>').findall(link) if paginate: # main.addDir('[COLOR red]Home[/COLOR]','',2000,art+'/home.png') main.addDir('[COLOR red]Enter Page #[/COLOR]', murl, 207, art + '/gotopage.png') xurl = MainUrl + paginate[0] r = re.findall('>Next</a><a href=\'/.+?/(\d+)\'>Last</a>', link) pg = re.findall('/.+?/(\d+)', paginate[0]) pg = int(pg[0]) - 1 if r: main.addDir( '[COLOR blue]Page ' + str(pg) + ' of ' + r[0] + '[/COLOR]', xurl, 1, art + '/next2.png') else: main.addDir('[COLOR blue]Page ' + str(pg) + '[/COLOR]', xurl, 1, art + '/next2.png') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') main.VIEWS()
def YOUList(mname, durl): murl = 'http://gdata.youtube.com/feeds/api/users/' + durl + '/uploads?start-index=1&max-results=50' link = main.OPENURL(murl) match = re.compile( "http\://www.youtube.com/watch\?v\=([^\&]+)\&.+?<media\:descriptio[^>]+>([^<]+)</media\:description>.+?<media\:thumbnail url='([^']+)'.+?<media:title type='plain'>(.+?)/media:title>" ).findall(link) for url, desc, thumb, name in match: name = name.replace('<', '') main.addPlayMs(name, url, 48, thumb, desc, '', '', '', '') main.GA(mname, "Youtube-List")
def SEARCH(murl=''): encode = main.updateSearchFile(murl, 'Movies') if not encode: return False surl = MainUrl + '/search.php?key=' + encode + '&submit=' link = main.OPENURL(surl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile( '<div class="movie_pic"><a href="([^"]+?)"[^>]+?>\s*?<img src="([^"]+?)"[^>]+?>.+?<a href[^>]+?>([^<]+?)</a></h1><div class=".+?">().*?Views: <span>(.+?)</span>.+?id=RateCount_.+?>(.+?)</span>.*?<li class="current-rating" style="width:(\d+?)px' ).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, genre, views, votes, rating in match: name = name.replace('-', '').replace('&', '').replace('acute;', '') furl = MainUrl + url main.addInfo( name + '[COLOR blue] Views: ' + views + '[/COLOR] [COLOR red]Votes: ' + votes + '[/COLOR] [COLOR green]Rating: ' + rating + '/100[/COLOR]', furl, 3, thumb, genre, '') 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 exist = re.findall("<a href='search.php.?page=.+?'>Next</a>", link) if exist: r = re.findall( """>Next</a><a href='search.php.?page=([^<]+)&key=.+?'>Last</a>""", link) if r: main.addDir( '[COLOR blue]Page 1 of ' + r[0] + '[/COLOR]', 'http://www.movie25.so/search.php?page=2&key=' + encode, 9, art + '/next2.png') else: main.addDir( '[COLOR blue]Page 1[/COLOR]', 'http://www.movie25.so/search.php?page=2&key=' + encode, 9, art + '/next2.png') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') main.GA("None", "Movie25-Search")
def UFCMOVIE25(): surl = 'http://www.movie25.com/search.php?key=ufc&submit=' link = main.OPENURL(surl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile( '<div class="movie_pic"><a href="(.+?)" target=".+?"> <img src="(.+?)" width=".+?" height=".+?" /> </a></div> <div class=".+?"> <div class=".+?"> <h1><a href=".+?" target=".+?"> (.+?) </a></h1> <div class=".+?">Genre: <a href=".+?" target=\'.+?\'>(.+?)</a>.+?Release:.+?Views: <span> (.+?) </span>.+?<span id=RateCount.+?> (.+?) </span> votes.+?<div id=".+?">score:<span id=Rate_.+?>(.+?)</span>' ).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, thumb, name, genre, views, votes, rating in match: name = name.replace('-', '').replace('&', '').replace('acute;', '') furl = 'http://movie25.com/' + url main.addInfo( name + '(' + year + ')[COLOR blue] Views: ' + views + '[/COLOR] [COLOR red]Votes: ' + votes + '[/COLOR] [COLOR green]Rating: ' + rating + '[/COLOR]', furl, 3, thumb, genre, '') 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.addDir('[COLOR blue]Page 2[/COLOR]', 'http://www.movie25.com/search.php?page=2&key=ufc', 9, art + '/next2.png') main.GA("UFC", "UFC_Movie25-List")
def YOUList(mname,durl): if 'gdata' in durl: murl=durl else: murl='https://gdata.youtube.com/feeds/api/playlists/'+durl+'?start-index=1&max-results=50' link=main.OPENURL(murl) match=re.compile("href='https://m.youtube.com/details.?v=(.+?)'/.+?<media\:descriptio[^>]+>([^<]+)</media\:description>.+?<media\:thumbnail url='([^']+)'.+?<media:title type='plain'>(.+?)/media:title>").findall(link) for url,desc,thumb,name in match: name=name.replace('<','') main.addPlayMs(name,url,206,thumb,desc,'','','','') match2=re.compile("<title type=\'text\'>.+?</title><link rel=\'alternate\' type=\'text/html\' href=\'https://www.youtube.com/watch.?v=(.+?)&feature=youtube_gdata\'/>.+?<media:title type=\'plain\'>(.+?)</media:title>").findall(link) for url,name in match2: name=name.replace('<','') main.addPlayMs(name,url,206,'','','','','','') tot=len(match)+len(match2) if tot >=49: paginate=re.compile('https://gdata.youtube.com/feeds/api/playlists/(.+?).?start-index=(.+?)&max-results=50').findall(murl) for id, page in paginate: i=int(page)+50 purl='https://gdata.youtube.com/feeds/api/playlists/'+id+'?start-index='+str(i)+'&max-results=50' main.addDir('[COLOR blue]Next[/COLOR]',purl,205,art+'/next2.png') main.GA(mname,"Youtube-List")
def YOUList(mname, durl): if 'gdata' in durl: murl = durl else: murl = 'http://gdata.youtube.com/feeds/api/users/' + durl + '/uploads?start-index=1&max-results=50' link = main.OPENURL(murl) match = re.compile( "http\://www.youtube.com/watch\?v\=([^\&]+)\&.+?<media\:descriptio[^>]+>([^<]+)</media\:description>.+?<media\:thumbnail url='([^']+)'.+?<media:title type='plain'>(.+?)/media:title>" ).findall(link) for url, desc, thumb, name in match: name = name.replace('<', '') main.addPlayMs(name, url, 48, thumb, desc, '', '', '', '') if len(match) >= 49: paginate = re.compile( 'http://gdata.youtube.com/feeds/api/users/(.+?)/uploads.?start-index=(.+?)&max-results=50' ).findall(murl) for id, page in paginate: i = int(page) + 50 purl = 'http://gdata.youtube.com/feeds/api/users/' + id + '/uploads?start-index=' + str( i) + '&max-results=50' main.addDir('[COLOR blue]Next[/COLOR]', purl, 47, art + '/next2.png') main.GA(mname, "Youtube-List")
def PLAYB(name, murl): main.GA("Movie25-Movie", "Watched") ok = True hname = name name = name.split('[COLOR blue]')[0] name = name.split('[COLOR red]')[0] infoLabels = main.GETMETAT(name, '', '', '') video_type = 'movie' season = '' episode = '' img = infoLabels['cover_url'] fanart = infoLabels['backdrop_url'] imdb_id = infoLabels['imdb_id'] infolabels = { 'supports_meta': 'true', 'video_type': video_type, 'name': str(infoLabels['title']), 'imdb_id': str(infoLabels['imdb_id']), 'season': str(season), 'episode': str(episode), 'year': str(infoLabels['year']) } try: xbmc.executebuiltin( "XBMC.Notification(Please Wait!,Resolving Link,3000)") stream_url = main.resolve_url(murl) infoL = { 'Title': infoLabels['metaName'], 'Plot': infoLabels['plot'], 'Genre': infoLabels['genre'] } # play with bookmark from resources.universal import playbackengine player = playbackengine.PlayWithoutQueueSupport( resolved_url=stream_url, addon_id=addon_id, video_type=video_type, title=str(infoLabels['title']), season=str(season), episode=str(episode), year=str(infoLabels['year']), img=img, infolabels=infoL, watchedCallbackwithParams=main.WatchedCallbackwithParams, imdb_id=imdb_id) #WatchHistory if selfAddon.getSetting("whistory") == "true": from resources.universal import watchhistory wh = watchhistory.WatchHistory('plugin.video.movie25') wh.add_item(hname + ' ' + '[COLOR green]Movie25[/COLOR]', sys.argv[0] + sys.argv[2], infolabels=infolabels, img=img, fanart=fanart, is_folder=False) player.KeepAlive() return ok except Exception, e: if stream_url != False: main.ErrorReport(e) return ok
def SEARCH(mname,type,libID=''): if libID=='': main.GA("None","SuperSearch") else: libName=mname if re.search('(?i).\s\([12][90]\d{2}\)',mname): mname = re.sub('(?i)^(.+?)\s\([12][90]\d{2}\).*','\\1',mname) elif re.search('(?i).\s[12][90]\d{2}',mname): mname = re.sub('(?i)^(.+?)\s[12][90]\d{2}.*','\\1',mname) mname = re.sub('(?i)\s\s+',' ',mname).strip() try: import Queue as queue except ImportError: import queue results = [] searchList=[] #mname=main.unescapes(mname) mname=main.removeColoredText(mname) if mname=='Search': mname='' encode = main.updateSearchFile(mname,type) if not encode: return False else: sources = [] encodeunquoted = urllib.unquote(encode) encode = re.sub('(?i)[^a-zA-Z0-9]',' ',encodeunquoted) encode = re.sub('(?i)\s\s+',' ',encode).strip() try: year = int(re.sub('(?i)^.+?\s\(?([12][90]\d{2})\)?.*','\\1',mname)) except: year = 0 encodeorg = encode encode = re.sub('(?i)^(.+?)\s\(?[12][90]\d{2}\)?.*','\\1',encode) encode = urllib.quote(encode) if type=='Movies': if selfAddon.getSetting('ssm_iwatch') != 'false': sources.append('iWatchOnline') q = queue.Queue() threading.Thread(target=iwatch,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_movie25') != 'false': sources.append('Movie25') q = queue.Queue() threading.Thread(target=movie25,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_icefilms') != 'false': sources.append('IceFilms') q = queue.Queue() threading.Thread(target=icefilms,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_watchingnow') != 'false': sources.append('Watching Now') q = queue.Queue() threading.Thread(target=watchingnow,args=(encode,type,q)).start() if selfAddon.getSetting('ssm_filestube') != 'false': sources.append('FilesTube') q = queue.Queue() threading.Thread(target=filestube,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_mbox') != 'false': sources.append('MBox') q = queue.Queue() threading.Thread(target=mbox,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_yify') != 'false': sources.append('Yify') q = queue.Queue() threading.Thread(target=yify,args=(encode,type,q)).start() results.append(q) # if selfAddon.getSetting('ssm_noobroom') != 'false': # if selfAddon.getSetting('username') != '' and selfAddon.getSetting('password') != '': # sources.append('NoobRoom') # q = queue.Queue() # threading.Thread(target=noobroom,args=(encode,type,q)).start() # results.append(q) if selfAddon.getSetting('ssm_tubeplus') != 'false': sources.append('TubePlus') q = queue.Queue() threading.Thread(target=tubeplus,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_tvrelease') != 'false': sources.append('TVRelease') q = queue.Queue() threading.Thread(target=tvrelease,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_mynewvideolinks') != 'false': sources.append('MyNewVideoLinks') q = queue.Queue() threading.Thread(target=mynewvideolinks,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_sceper') != 'false': sources.append('Sceper') q = queue.Queue() threading.Thread(target=sceper,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_fma') != 'false': sources.append('FMA') q = queue.Queue() threading.Thread(target=fma,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_scenesource') != 'false': sources.append('SceneSource') q = queue.Queue() threading.Thread(target=scenesource,args=(encode,type,q)).start() results.append(q) if selfAddon.getSetting('ssm_vip') != 'false': sources.append('VIP') q = queue.Queue() threading.Thread(target=vip,args=(encode,type,q)).start() results.append(q) # if selfAddon.getSetting('ssm_rls1click') != 'false': # sources.append('Rls1Click') # q = queue.Queue() # threading.Thread(target=rls1click,args=(encode,type,q)).start() else: encodetv = urllib.quote(re.sub('(?i)^(.*?((\ss(\d+)e(\d+))|(Season(.+?)Episode \d+)|(\d+)x(\d+))).*','\\1',urllib.unquote(encode))) encodewithoutepi = urllib.quote(re.sub('(?i)(\ss(\d+)e(\d+))|(Season(.+?)Episode)|(\d+)x(\d+)','',urllib.unquote(encodetv)).strip()) print encodetv if selfAddon.getSetting('sstv_mbox') != 'false': sources.append('MBox') q = queue.Queue() threading.Thread(target=mbox,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_watchseries') != 'false': sources.append('WatchSeries') q = queue.Queue() threading.Thread(target=watchseries,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_iwatch') != 'false': sources.append('iWatchOnline') q = queue.Queue() threading.Thread(target=iwatch,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_pftv') != 'false': sources.append('PFTV') q = queue.Queue() threading.Thread(target=pftv,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_icefilms') != 'false': sources.append('IceFilms') q = queue.Queue() threading.Thread(target=icefilms,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_tubeplus') != 'false': sources.append('TubePlus') q = queue.Queue() threading.Thread(target=tubeplus,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_tvrelease') != 'false': sources.append('TVRelease') q = queue.Queue() threading.Thread(target=tvrelease,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_mynewvideolinks') != 'false': sources.append('MyNewVideoLinks') q = queue.Queue() threading.Thread(target=mynewvideolinks,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_rlsmix') != 'false': if selfAddon.getSetting('rlsusername') != '' and selfAddon.getSetting('rlspassword') != '': sources.append('Rlsmix') q = queue.Queue() threading.Thread(target=rlsmix,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_scenelog') != 'false': sources.append('SceneLog') q = queue.Queue() threading.Thread(target=scenelog,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_sceper') != 'false': sources.append('Sceper') q = queue.Queue() threading.Thread(target=sceper,args=(encodetv,type,q)).start() results.append(q) if selfAddon.getSetting('sstv_scenesource') != 'false': sources.append('SceneSource') q = queue.Queue() threading.Thread(target=scenesource,args=(encodetv,type,q)).start() results.append(q) encodewithoutepi = urllib.unquote(encodewithoutepi) encode = urllib.unquote(encode) if libID=='': dialogWait = xbmcgui.DialogProgress() ret = dialogWait.create('Please wait. Super Search is searching...') loadedLinks = 0 remaining_display = 'Sources searched :: [B]'+str(loadedLinks)+' / '+str(len(results))+'[/B].' dialogWait.update(0,'[B]'+type+' Super Search - ' + encodeunquoted + '[/B]',remaining_display) totalLinks = len(results) whileloopps = 0 xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)") while totalLinks > loadedLinks: for n in range(len(results)): try: searchList.extend(results[n].get_nowait()) loadedLinks += 1 percent = (loadedLinks * 100)/len(results) remaining_display = 'Sources searched :: [B]'+str(loadedLinks)+' / '+str(len(results))+'[/B].' dialogWait.update(percent,'[B]'+type+' Super Search - ' + encodeunquoted + '[/B]',remaining_display,sources[n] + ' finished searching') if dialogWait.iscanceled(): break; except: pass if dialogWait.iscanceled(): break; time.sleep(.1) ret = dialogWait.create('Please wait until Video list is cached.') totalLinks = len(searchList) loadedLinks = 0 remaining_display = 'Videos loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].' dialogWait.update(0, '[B]Will load instantly from now on[/B]',remaining_display,' ') searchList = sortSearchList(searchList,mname) if not libID=='': for n in range(len(results)): searchList.extend(results[n].get()) searchList = sortSearchList(searchList,mname) import library t=threading.Thread(target=library.buildHostDB,args=(searchList,libID,libName)) t.start() t.join() else: encode = encodeorg if type == 'TV': wordsalt = set(encodewithoutepi.lower().split()) encode = urllib.unquote(encodetv) wordsorg = set(encode.lower().split()) for name,section,url,thumb,mode,dir in searchList: name = name.replace('’',"'").replace('"','"').strip() cname = re.sub('(?i)[^a-zA-Z0-9]',' ',name) try: cyear = int(re.sub('(?i)^.+?\s\(?([12][90]\d{2})\)?.*','\\1',cname)) except: cyear = 0 if year and not re.search('(?i)^.+?\s\(?([12][90]\d{2})\)?.*',cname): cname += ' ' + str(year) elif (cyear + 1) == year or (cyear - 1) == year: cname = cname.replace(str(cyear),str(year)) name = name +' [COLOR=FF67cc33]'+section+'[/COLOR]' if type == 'TV' and (section == 'MBox' or section == 'WatchSeries' or section == 'iWatchOnline' or section == 'IceFilms' or section == 'TubePlus'): words = wordsalt else: words = wordsorg if words.issubset(cname.lower().split()): if dir: if type=='Movies': main.addDirM(name,url,int(mode),thumb,'','','','','') else: if re.search('(?i)\ss(\d+)e(\d+)',name) or re.search('(?i)Season(.+?)Episode',name) or re.search('(?i)(\d+)x(\d+)',name): main.addDirTE(name,url,int(mode),thumb,'','','','','') else: main.addDirT(name,url,int(mode),thumb,'','','','','') else: if type=='Movies': main.addPlayM(name,url,int(mode),thumb,'','','','','') else: if re.search('(?i)\ss(\d+)e(\d+)',name) or re.search('(?i)Season(.+?)Episode',name) or re.search('(?i)(\d+)x(\d+)',name): main.addPlayTE(name,url,int(mode),thumb,'','','','','') else: main.addPlayT(name,url,int(mode),thumb,'','','','','') loadedLinks = loadedLinks + 1 percent = (loadedLinks * 100)/totalLinks remaining_display = 'Videos 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 type=='Movies': xbmcgui.Window(10000).setProperty('MASH_SSR_TYPE', '2') elif type == 'TV': xbmcgui.Window(10000).setProperty('MASH_SSR_TYPE', '1') try: filelist = [ f for f in os.listdir(cachedir) if f.endswith(".fi") ] for f in filelist: os.remove(os.path.join(cachedir,f)) except:pass if not loadedLinks: xbmc.executebuiltin("XBMC.Notification(Super Search - "+encode.replace("%20"," ")+",No Results Found,3000)") xbmcplugin.endOfDirectory(int(sys.argv[1]), False, False) return False
def LISTMOVIES(murl): link = main.OPENURL(murl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile( '<div class="movie_pic"><a href="(.+?)" ><img src="(.+?)" width=".+?" height=".+?" alt=".+?" /></a></div> <div class=".+?"> <div class=".+?"> <h1><a href=".+?" >(.+?)</a></h1> <div class=".+?">Genre: <a href=".+?" title=\'.+?\'>(.+?)</a>.+?Release:.+?<br/> Views: <span>(.+?)</span>.+?<span>(.+?)</span> votes.+?<div id=".+?">score:<span id=Rate_.+?>(.+?)</span></div>' ).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, thumb, name, genre, views, votes, rating in match: name = name.replace('-', '').replace('&', '').replace('acute;', '') main.addInfo( name + '[COLOR blue] Views: ' + views + '[/COLOR] [COLOR red]Votes: ' + votes + '[/COLOR] [COLOR green]Rating: ' + rating + '[/COLOR]', url, 3, thumb, genre, '') 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("None", "Movie25-list") paginate = re.compile( 'http://www.movie25.com/movies/.+?/index-(.+?).html').findall(murl) if (len(paginate) == 0): purl = murl + 'index-2.html' r = re.findall( 'Next</a><a href="index-(.+?).html" title="Last" >Last</a>', link) if r: main.addDir('[COLOR red]Enter Page #[/COLOR]', murl, 207, art + '/gotopage.png') exist = re.findall('<a href="index-.+?" class=".+?">Next</a>', link) if exist: main.addDir('[COLOR blue]Page 2[/COLOR]', purl, 1, art + '/next2.png') else: paginate = re.compile( 'http://www.movie25.com/movies/(.+?)/index-(.+?).html').findall( murl) for section, page in paginate: pg = int(page) + 1 xurl = main.Mainurl + str(section) + '/' + 'index-' + str( pg) + '.html' main.addDir('[COLOR red]Home[/COLOR]', '', 2000, art + '/home.png') r = re.findall( 'Next</a><a href="index-(.+?).html" title="Last" >Last</a>', link) if r: main.addDir('[COLOR red]Enter Page #[/COLOR]', murl, 207, art + '/gotopage.png') exist = re.findall('<a href="index-.+?" class=".+?">Next</a>', link) if exist: main.addDir('[COLOR blue]Page ' + str(pg) + '[/COLOR]', xurl, 1, art + '/next2.png') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') main.VIEWS()
def SEARCH(murl): seapath = os.path.join(main.datapath, 'Search') SeaFile = os.path.join(seapath, 'SearchHistory25') try: os.makedirs(seapath) except: pass if murl == 'm25': keyb = xbmc.Keyboard('', 'Search Movies') keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() encode = urllib.quote(search) surl = 'http://www.movie25.com/search.php?key=' + encode + '&submit=' 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: return else: encode = murl surl = 'http://www.movie25.com/search.php?key=' + encode + '&submit=' link = main.OPENURL(surl) link = link.replace('\r', '').replace('\n', '').replace('\t', '').replace(' ', '') match = re.compile( '<div class="movie_pic"><a href="(.+?)" target=".+?"> <img src="(.+?)" width=".+?" height=".+?" /> </a></div> <div class=".+?"> <div class=".+?"> <h1><a href=".+?" target=".+?"> (.+?) </a></h1> <div class=".+?">Genre: <a href=".+?" target=\'.+?\'>(.+?)</a>.+?Release:.+?Views: <span> (.+?) </span>.+?<span id=RateCount.+?> (.+?) </span> votes.+?<div id=".+?">score:<span id=Rate_.+?>(.+?)</span>' ).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, thumb, name, genre, views, votes, rating in match: name = name.replace('-', '').replace('&', '').replace('acute;', '') furl = 'http://movie25.com/' + url main.addInfo( name + '[COLOR blue] Views: ' + views + '[/COLOR] [COLOR red]Votes: ' + votes + '[/COLOR] [COLOR green]Rating: ' + rating + '[/COLOR]', furl, 3, thumb, genre, '') 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 exist = re.findall("<a href='search.php.?page=.+?'>Next</a>", link) if exist: main.addDir('[COLOR blue]Page 2[/COLOR]', 'http://www.movie25.com/search.php?page=2&key=' + encode, 9, art + '/next2.png') xbmcplugin.setContent(int(sys.argv[1]), 'Movies') main.GA("None", "Movie25-Search")
def PLAY(name, murl): main.GA("Movie25-Movie", "Watched") ok = True hname = name name = name.split('[COLOR blue]')[0] name = name.split('[COLOR red]')[0] infoLabels = main.GETMETAB(name, '', '', '') link = main.OPENURL(murl) match = re.compile("Javascript:location.?href=.+?'(.+?)\'").findall(link) for murl in match: print murl video_type = 'movie' season = '' episode = '' img = infoLabels['cover_url'] fanart = infoLabels['backdrop_url'] imdb_id = infoLabels['imdb_id'] infolabels = { 'supports_meta': 'true', 'video_type': video_type, 'name': str(infoLabels['title']), 'imdb_id': str(infoLabels['imdb_id']), 'season': str(season), 'episode': str(episode), 'year': str(infoLabels['year']) } media = urlresolver.HostedMediaFile(murl) source = media try: if source: xbmc.executebuiltin( "XBMC.Notification(Please Wait!,Resolving Link,3000)") stream_url = source.resolve() else: stream_url = False infoL = { 'Title': infoLabels['title'], 'Plot': infoLabels['plot'], 'Genre': infoLabels['genre'] } # play with bookmark player = playbackengine.PlayWithoutQueueSupport( resolved_url=stream_url, addon_id=addon_id, video_type=video_type, title=str(infoLabels['title']), season=str(season), episode=str(episode), year=str(infoLabels['year']), img=img, infolabels=infoL, watchedCallbackwithParams=main.WatchedCallbackwithParams, imdb_id=imdb_id) #WatchHistory if selfAddon.getSetting("whistory") == "true": wh.add_item(hname + ' ' + '[COLOR green]Movie25[/COLOR]', sys.argv[0] + sys.argv[2], infolabels=infolabels, img=img, fanart=fanart, is_folder=False) player.KeepAlive() return ok except Exception, e: if stream_url != False: main.ErrorReport(e) return ok