def resolve(url): try: user = control.setting('movreel_user') password = control.setting('movreel_password') login = '******' post = {'op': 'login', 'login': user, 'password': password, 'redirect': url} post = urllib.urlencode(post) result = client.request(url, close=False) result += client.request(login, post=post, close=False) post = {} f = client.parseDOM(result, "Form", attrs = { "name": "F1" })[-1] k = client.parseDOM(f, "input", ret="name", attrs = { "type": "hidden" }) for i in k: post.update({i: client.parseDOM(f, "input", ret="value", attrs = { "name": i })[0]}) post.update({'method_free': '', 'method_premium': ''}) post = urllib.urlencode(post) request = urllib2.Request(url, post) for i in range(0, 3): try: response = urllib2.urlopen(request, timeout=10) result = response.read() response.close() url = re.compile('(<a .+?</a>)').findall(result) url = [i for i in url if 'Download Link' in i][-1] url = client.parseDOM(url, "a", ret="href")[0] return url except: time.sleep(1) except: return
def getSources(self, name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre): sourceDict = [] for package, name, is_pkg in pkgutil.walk_packages(__path__): sourceDict.append((name, is_pkg)) sourceDict = [i[0] for i in sourceDict if i[1] == False] if show == None: content = 'movie' else: content = 'episode' if content == 'movie': sourceDict = [i for i in sourceDict if i.endswith(('_mv', '_mv_tv'))] try: sourceDict = [(i, control.setting(re.sub('_mv_tv$|_mv$|_tv$', '', i))) for i in sourceDict] except: sourceDict = [(i, 'true') for i in sourceDict] else: sourceDict = [i for i in sourceDict if i.endswith(('_tv', '_mv_tv'))] try: sourceDict = [(i, control.setting(re.sub('_mv_tv$|_mv$|_tv$', '', i) + '_tv')) for i in sourceDict] except: sourceDict = [(i, 'true') for i in sourceDict] global global_sources global_sources = [] threads = [] control.makeFile(control.dataPath) self.sourceFile = control.cachesourcesFile sourceDict = [i[0] for i in sourceDict if i[1] == 'true'] if content == 'movie': title = cleantitle.normalize(title) for source in sourceDict: threads.append(Thread(self.getMovieSource, title, year, imdb, re.sub('_mv_tv$|_mv$|_tv$', '', source), __import__(source, globals(), locals(), [], -1).source())) else: show, show_alt = cleantitle.normalize(show), cleantitle.normalize(show_alt) season, episode = ep_redirect.get(title, year, imdb, tvdb, season, episode, show, date, genre) for source in sourceDict: threads.append(Thread(self.getEpisodeSource, title, year, imdb, tvdb, date, season, episode, show, show_alt, re.sub('_mv_tv$|_mv$|_tv$', '', source), __import__(source, globals(), locals(), [], -1).source())) try: timeout = int(control.setting('sources_timeout_beta')) except: timeout = 10 [i.start() for i in threads] #[i.join() for i in threads] ; self.sources = global_sources ; return self.sources for i in range(0, timeout * 2): is_alive = [x.is_alive() for x in threads] if all(x == False for x in is_alive): break time.sleep(0.5) for i in range(0, 5 * 2): is_alive = len([i for i in threads if i.is_alive() == True]) if is_alive < 10: break time.sleep(0.5) self.sources = global_sources return self.sources
def library(self): self.addDirectoryItem(30640, "librarySettings", "settings.jpg", "DefaultAddonProgram.png") self.addDirectoryItem(30641, "library_update_tool", "library_update.jpg", "DefaultAddonProgram.png") self.addDirectoryItem( 30642, control.setting("movie_library"), "library_movies.jpg", "DefaultMovies.png", isAction=False ) self.addDirectoryItem( 30643, control.setting("tv_library"), "library_shows.jpg", "DefaultTVShows.png", isAction=False ) if traktMode == True: self.addDirectoryItem(30644, "library_trakt_collection", "movies_trakt_collection.jpg", "DefaultMovies.png") self.addDirectoryItem( 30645, "library_tv_trakt_collection", "shows_trakt_collection.jpg", "DefaultTVShows.png" ) self.addDirectoryItem(30646, "library_trakt_watchlist", "movies_trakt_watchlist.jpg", "DefaultMovies.png") self.addDirectoryItem( 30647, "library_tv_trakt_watchlist", "shows_trakt_watchlist.jpg", "DefaultTVShows.png" ) if imdbMode == True: self.addDirectoryItem(30648, "library_imdb_watchlist", "movies_imdb_watchlist.jpg", "DefaultMovies.png") self.addDirectoryItem(30649, "library_tv_imdb_watchlist", "shows_imdb_watchlist.jpg", "DefaultTVShows.png") self.endDirectory()
def root(self): self.addDirectoryItem(30501, 'root_movies', 'root_movies.jpg', 'DefaultMovies.png') self.addDirectoryItem(30502, 'root_shows', 'root_shows.jpg', 'DefaultTVShows.png') self.addDirectoryItem(30503, 'channels_movies', 'channels_movies.jpg', 'DefaultMovies.png') self.addDirectoryItem(30504, 'root_genesis', 'root_genesis.jpg', 'DefaultVideoPlaylists.png') root_movies = control.setting('root_movies') if root_movies == '1': self.addDirectoryItem(30505, 'movies_featured', 'movies_added.jpg', 'DefaultRecentlyAddedMovies.png') elif root_movies == '2': self.addDirectoryItem(30505, 'movies_added_hd', 'movies_added.jpg', 'DefaultRecentlyAddedMovies.png') elif root_movies == '3': self.addDirectoryItem(30505, 'movies_added', 'movies_added.jpg', 'DefaultRecentlyAddedMovies.png') if traktMode == True: root_episodes = control.setting('root_episodes_trakt') else: root_episodes = control.setting('root_episodes') if root_episodes == '1': self.addDirectoryItem(30506, 'episodes_added', 'episodes_added.jpg', 'DefaultRecentlyAddedEpisodes.png') elif root_episodes == '2': self.addDirectoryItem(30506, 'episodes_trakt_progress', 'episodes_added.jpg', 'DefaultRecentlyAddedEpisodes.png') elif root_episodes == '3': self.addDirectoryItem(30506, 'episodes_trakt', 'episodes_added.jpg', 'DefaultRecentlyAddedEpisodes.png') ''' if not control.setting('root_movies') == '0': self.addDirectoryItem(30505, 'root_movies_added', 'movies_added.jpg', 'DefaultRecentlyAddedMovies.png') if (traktMode == True and not control.setting('root_episodes_trakt') == '0') or (traktMode == False and not control.setting('root_episodes') == '0'): self.addDirectoryItem(30506, 'root_episodes_added', 'episodes_added.jpg', 'DefaultRecentlyAddedEpisodes.png') if not control.setting('root_calendar') == '0': self.addDirectoryItem(30507, 'root_calendar', 'root_calendar.jpg', 'DefaultRecentlyAddedEpisodes.png') ''' self.addDirectoryItem(30508, 'root_tools', 'root_tools.jpg', 'DefaultAddonProgram.png') if not control.setting('downloadPath') == '': self.addDirectoryItem(30140, 'downloader', 'downloader.jpg', 'DefaultFolder.png') self.addDirectoryItem(30509, 'root_search', 'root_search.jpg', 'DefaultFolder.png') self.endDirectory()
def getSources(self, name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre): sourceDict = [] for package, name, is_pkg in pkgutil.walk_packages(__path__): sourceDict.append((name, is_pkg)) sourceDict = [i[0] for i in sourceDict if i[1] == False] if show == None: content = 'movie' else: content = 'episode' if content == 'movie': sourceDict = [i for i in sourceDict if i.endswith(('_mv', '_mv_tv'))] try: sourceDict = [(i, control.setting(re.sub('_mv_tv$|_mv$|_tv$', '', i))) for i in sourceDict] except: sourceDict = [(i, 'true') for i in sourceDict] else: sourceDict = [i for i in sourceDict if i.endswith(('_tv', '_mv_tv'))] try: sourceDict = [(i, control.setting(re.sub('_mv_tv$|_mv$|_tv$', '', i) + '_tv')) for i in sourceDict] except: sourceDict = [(i, 'true') for i in sourceDict] global global_sources global_sources = [] threads = [] self.sourceFile = control.cachesourcesFile sourceDict = [i[0] for i in sourceDict if i[1] == 'true'] if content == 'movie': title = cleantitle.normalize(title) for source in sourceDict: threads.append(Thread(self.getMovieSource, title, year, imdb, re.sub('_mv_tv$|_mv$|_tv$', '', source), __import__(source, globals(), locals(), [], -1).source())) else: show, show_alt = cleantitle.normalize(show), cleantitle.normalize(show_alt) season, episode = ep_redirect.get(title, year, imdb, tvdb, season, episode, show, date, genre) for source in sourceDict: threads.append(Thread(self.getEpisodeSource, title, year, imdb, tvdb, date, season, episode, show, show_alt, re.sub('_mv_tv$|_mv$|_tv$', '', source), __import__(source, globals(), locals(), [], -1).source())) try: timeout = int(control.setting('sources_timeout_beta')) except: timeout = 10 [i.start() for i in threads] #[i.join() for i in threads] ; self.sources = global_sources ; return self.sources for i in range(0, timeout * 2): is_alive = [x.is_alive() for x in threads] if all(x == False for x in is_alive): break time.sleep(0.5) for i in range(0, 5 * 2): is_alive = len([i for i in threads if i.is_alive() == True]) if is_alive < 10: break time.sleep(0.5) self.sources = global_sources return self.sources
def play(self, name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre, url): try: if show == None: content = "movie" else: content = "episode" self.sources = self.getSources(name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre) if self.sources == []: raise Exception() self.sources = self.sourcesFilter() if control.window.getProperty("PseudoTVRunning") == "True": url = self.sourcesDirect() elif url == "dialog://": url = self.sourcesDialog() elif url == "direct://": url = self.sourcesDirect() elif ( not control.infoLabel("Container.FolderPath").startswith("plugin://") and control.setting("autoplay_library") == "false" ): url = self.sourcesDialog() elif ( control.infoLabel("Container.FolderPath").startswith("plugin://") and control.setting("autoplay") == "false" ): url = self.sourcesDialog() else: url = self.sourcesDirect() if url == None: raise Exception() if url == "close://": return if control.setting("playback_info") == "true": control.infoDialog(self.selectedSource, heading=name) from modules.libraries.player import player player().run(content, name, url, imdb, tvdb) return url except: control.infoDialog(control.lang(30308).encode("utf-8")) pass
def sourcesDirect(self): self.sources = [i for i in self.sources if not i["source"] in self.hostcapDict] self.sources = [ i for i in self.sources if not ( i["quality"] in ["1080p", "HD"] and i["source"] in self.hosthdDict and not i["source"] in self.rdDict + self.pzDict ) ] self.sources = [i for i in self.sources if not i["source"] in ["furk"]] if control.setting("playback_auto_sd") == "true": self.sources = [i for i in self.sources if not i["quality"] in ["1080p", "HD"]] u = None for i in self.sources: try: url = self.sourcesResolve(i["url"], i["provider"]) if url == None: raise Exception() if u == None: u = url self.selectedSource = i["label"] return url except: pass return u
def root(self): self.addDirectoryItem(30501, "root_movies", "root_movies.jpg", "DefaultMovies.png") self.addDirectoryItem(30502, "root_shows", "root_shows.jpg", "DefaultTVShows.png") self.addDirectoryItem(30503, "channels_movies", "channels_movies.jpg", "DefaultMovies.png") self.addDirectoryItem(30504, "root_lemon", "root_genesis.jpg", "DefaultVideoPlaylists.png") root_movies = control.setting("root_movies") if root_movies == "1": self.addDirectoryItem(30505, "movies_featured", "movies_added.jpg", "DefaultRecentlyAddedMovies.png") elif root_movies == "2": self.addDirectoryItem(30505, "movies_added_hd", "movies_added.jpg", "DefaultRecentlyAddedMovies.png") elif root_movies == "3": self.addDirectoryItem(30505, "movies_added", "movies_added.jpg", "DefaultRecentlyAddedMovies.png") if traktMode == True: root_episodes = control.setting("root_episodes_trakt") else: root_episodes = control.setting("root_episodes") if root_episodes == "1": self.addDirectoryItem(30506, "episodes_added", "episodes_added.jpg", "DefaultRecentlyAddedEpisodes.png") elif root_episodes == "2": self.addDirectoryItem( 30506, "episodes_trakt_progress", "episodes_added.jpg", "DefaultRecentlyAddedEpisodes.png" ) elif root_episodes == "3": self.addDirectoryItem(30506, "episodes_trakt", "episodes_added.jpg", "DefaultRecentlyAddedEpisodes.png") """ if not control.setting('root_movies') == '0': self.addDirectoryItem(30505, 'root_movies_added', 'movies_added.jpg', 'DefaultRecentlyAddedMovies.png') if (traktMode == True and not control.setting('root_episodes_trakt') == '0') or (traktMode == False and not control.setting('root_episodes') == '0'): self.addDirectoryItem(30506, 'root_episodes_added', 'episodes_added.jpg', 'DefaultRecentlyAddedEpisodes.png') if not control.setting('root_calendar') == '0': self.addDirectoryItem(30507, 'root_calendar', 'root_calendar.jpg', 'DefaultRecentlyAddedEpisodes.png') """ self.addDirectoryItem(30508, "root_tools", "root_tools.jpg", "DefaultAddonProgram.png") if not control.setting("downloadPath") == "": self.addDirectoryItem(30140, "downloader", "downloader.jpg", "DefaultFolder.png") self.addDirectoryItem(30509, "root_search", "root_search.jpg", "DefaultFolder.png") self.endDirectory()
def library(self): self.addDirectoryItem(30640, 'librarySettings', 'settings.jpg', 'DefaultAddonProgram.png') self.addDirectoryItem(30641, 'library_update_tool', 'library_update.jpg', 'DefaultAddonProgram.png') self.addDirectoryItem(30642, control.setting('movie_library'), 'library_movies.jpg', 'DefaultMovies.png', isAction=False) self.addDirectoryItem(30643, control.setting('tv_library'), 'library_shows.jpg', 'DefaultTVShows.png', isAction=False) if traktMode == True: self.addDirectoryItem(30644, 'library_trakt_collection', 'movies_trakt_collection.jpg', 'DefaultMovies.png') self.addDirectoryItem(30645, 'library_tv_trakt_collection', 'shows_trakt_collection.jpg', 'DefaultTVShows.png') self.addDirectoryItem(30646, 'library_trakt_watchlist', 'movies_trakt_watchlist.jpg', 'DefaultMovies.png') self.addDirectoryItem(30647, 'library_tv_trakt_watchlist', 'shows_trakt_watchlist.jpg', 'DefaultTVShows.png') if imdbMode == True: self.addDirectoryItem(30648, 'library_imdb_watchlist', 'movies_imdb_watchlist.jpg', 'DefaultMovies.png') self.addDirectoryItem(30649, 'library_tv_imdb_watchlist', 'shows_imdb_watchlist.jpg', 'DefaultTVShows.png') self.endDirectory()
def resolve(url): try: user = control.setting('movreel_user') password = control.setting('movreel_password') login = '******' post = { 'op': 'login', 'login': user, 'password': password, 'redirect': url } post = urllib.urlencode(post) result = client.request(url, close=False) result += client.request(login, post=post, close=False) post = {} f = client.parseDOM(result, "Form", attrs={"name": "F1"})[-1] k = client.parseDOM(f, "input", ret="name", attrs={"type": "hidden"}) for i in k: post.update({ i: client.parseDOM(f, "input", ret="value", attrs={"name": i})[0] }) post.update({'method_free': '', 'method_premium': ''}) post = urllib.urlencode(post) request = urllib2.Request(url, post) for i in range(0, 3): try: response = urllib2.urlopen(request, timeout=10) result = response.read() response.close() url = re.compile('(<a .+?</a>)').findall(result) url = [i for i in url if 'Download Link' in i][-1] url = client.parseDOM(url, "a", ret="href")[0] return url except: time.sleep(1) except: return
def addPlayableItem(self, name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre, meta): try: if tvdb == None: tvdb = '0' if show == None: content = 'movie' else: content = 'episode' self.sources = self.getSources(name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre) if self.sources == []: raise Exception() self.sources = self.sourcesFilter() meta = json.loads(meta) try: poster, banner, thumb, fanart = meta['poster'], meta['banner'], meta['thumb'], meta['fanart'] except: poster, banner, thumb, fanart = meta['poster'], meta['poster'], meta['poster'], meta['fanart'] if control.setting('fanart') == 'true' and not fanart == '0': pass else: fanart = control.addonFanart() sysaddon = sys.argv[0] for i in self.sources: try: url, source, provider = i['url'], i['label'], i['provider'] sysname, sysimdb, systvdb, sysurl, syssource, sysprovider = urllib.quote_plus(name), urllib.quote_plus(imdb), urllib.quote_plus(tvdb), urllib.quote_plus(url), urllib.quote_plus(source), urllib.quote_plus(provider) query = 'action=playItem&content=%s&name=%s&imdb=%s&tvdb=%s&url=%s&source=%s&provider=%s' % (content, sysname, sysimdb, systvdb, sysurl, syssource, sysprovider) cm = [] cm.append((control.lang(30401).encode('utf-8'), 'RunPlugin(%s?action=item_queue)' % (sysaddon))) cm.append((control.lang(30402).encode('utf-8'), 'RunPlugin(%s?action=download&name=%s&url=%s&provider=%s)' % (sysaddon, sysname, sysurl, sysprovider))) cm.append((control.lang(30412).encode('utf-8'), 'Action(Info)')) cm.append((control.lang(30427).encode('utf-8'), 'RunPlugin(%s?action=container_refresh)' % (sysaddon))) cm.append((control.lang(30410).encode('utf-8'), 'RunPlugin(%s?action=settings_open)' % (sysaddon))) cm.append((control.lang(30411).encode('utf-8'), 'RunPlugin(%s?action=playlist_open)' % (sysaddon))) item = control.item(source, iconImage='DefaultVideo.png', thumbnailImage=thumb) try: item.setArt({'poster': poster, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner}) except: pass item.setInfo(type='Video', infoLabels = meta) if not fanart == None: item.setProperty('Fanart_Image', fanart) item.setProperty('Video', 'true') item.setProperty('IsPlayable', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]),url='%s?%s' % (sysaddon, query),listitem=item,isFolder=False) except: pass control.directory(int(sys.argv[1]), cacheToDisc=True) except: control.infoDialog(control.lang(30308).encode('utf-8')) pass
def playItem(self, content, name, imdb, tvdb, url, source, provider): try: url = self.sourcesResolve(url, provider) if url == None: raise Exception() if control.setting('playback_info') == 'true': control.infoDialog(source, heading=name) from modules.libraries.player import player player().run(content, name, url, imdb, tvdb) return url except: control.infoDialog(control.lang(30308).encode('utf-8')) pass
def play(self, name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre, url): try: if show == None: content = 'movie' else: content = 'episode' self.sources = self.getSources(name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre) if self.sources == []: raise Exception() self.sources = self.sourcesFilter() if control.window.getProperty('PseudoTVRunning') == 'True': url = self.sourcesDirect() elif url == 'dialog://': url = self.sourcesDialog() elif url == 'direct://': url = self.sourcesDirect() elif not control.infoLabel('Container.FolderPath').startswith('plugin://') and control.setting('autoplay_library') == 'false': url = self.sourcesDialog() elif control.infoLabel('Container.FolderPath').startswith('plugin://') and control.setting('autoplay') == 'false': url = self.sourcesDialog() else: url = self.sourcesDirect() if url == None: raise Exception() if url == 'close://': return if control.setting('playback_info') == 'true': control.infoDialog(self.selectedSource, heading=name) from modules.libraries.player import player player().run(content, name, url, imdb, tvdb) return url except: control.infoDialog(control.lang(30308).encode('utf-8')) pass
def sourcesDirect(self): self.sources = [i for i in self.sources if not i['source'] in self.hostcapDict] self.sources = [i for i in self.sources if not (i['quality'] in ['1080p', 'HD'] and i['source'] in self.hosthdDict and not i['source'] in self.rdDict + self.pzDict)] self.sources = [i for i in self.sources if not i['source'] in ['furk']] if control.setting("playback_auto_sd") == 'true': self.sources = [i for i in self.sources if not i['quality'] in ['1080p', 'HD']] u = None for i in self.sources: try: url = self.sourcesResolve(i['url'], i['provider']) if url == None: raise Exception() if u == None: u = url self.selectedSource = i['label'] return url except: pass return u
import sys import urlparse from modules.libraries import control sysAddon = sys.argv[0] artPath = control.artPath() addonFanart = control.addonFanart() try: action = dict(urlparse.parse_qsl(sys.argv[2].replace('?', '')))['action'] except: action = None if (control.setting('trakt_user') == '' or control.setting('trakt_password') == ''): traktMode = False else: traktMode = True if control.setting('imdb_user') == '': imdbMode = False else: imdbMode = True class navigator: def root(self): self.addDirectoryItem(30501, 'root_movies', 'root_movies.jpg', 'DefaultMovies.png') self.addDirectoryItem(30502, 'root_shows', 'root_shows.jpg', 'DefaultTVShows.png')
def getDirectory(name, url, audio, image, fanart, playable, content, close=True): result = cache.get(client.request, 0, url) result = str(result).replace('\r', '').replace('\n', '').replace( '\t', '').replace(' ', '') try: fanart = re.findall('<fanart>(.+?)</fanart>', result)[0] except: fanart = '0' try: notify = re.compile('<notify>(.+?)</notify>').findall(result)[0] vip = re.findall('<poster>(.+?)</poster>', result)[0] if not re.search('[a-zA-Z]', vip): raise Exception() def message(vip): return (vip + version) check = cache.get(message, 600000000, vip, table='rel_vip') version = re.findall('<new>(.+?)</new>', notify)[0] if not version.isdigit(): raise Exception() if check == (vip + version): raise Exception() title = '[B]Announcement From %s![/B]' % vip msg1 = re.findall('<message1>(.+?)</message1>', notify)[0] msg2 = re.findall('<message2>(.+?)</message2>', notify)[0] msg3 = re.findall('<message3>(.+?)</message3>', notify)[0] check = cache.get(message, 0, vip, table='rel_vip') control.dialog.ok(str(title), str(msg1), str(msg2), str(msg3)) except: pass infos = re.compile('<info>(.+?)</info>').findall(result) for info in infos: try: name = re.findall('<message>(.+?)</message>', info)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', info)[0] except: image = '0' addDirectoryItem(name, '0', '0', image, image, fanart, '0', '0', {}) except: pass popups = re.compile('<popup>(.+?)</popup>').findall(result) for popup in popups: try: name = re.findall('<name>(.+?)</name>', popup)[0] url = re.findall('<popImage>(.+?)</popImage>', popup)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', popup)[0] except: image = '0' try: audio = re.findall('<sound>(.+?)</sound>', popup)[0] except: audio = '0' addDirectoryItem(name, url, 'openDialog', image, image, fanart, audio, '0', {}) except: pass special = re.compile( '<name>([^<]+)</name><link>([^<]+)</link><thumbnail>([^<]+)</thumbnail><date>([^<]+)</date>' ).findall(result) for name, url, image, date in special: if re.search(r'\d+', date): name += ' [COLOR red] Updated %s[/COLOR]' % date addDirectoryItem(name, url, 'ndmode', image, image, fanart, '0', '0', {}) special = re.compile( '<name>([^<]+)</name><link>([^<]+)</link><thumbnail>([^<]+)</thumbnail><mode>([^<]+)</mode>' ).findall(result) for name, url, image, action in special: addDirectoryItem(name, url, action, image, image, fanart, '0', '0', {}) meta = False try: content = re.findall('<meta>(.+?)</meta>', result)[0] except: content = '0' try: tvshow = re.findall('<tvshow>(.+?)</tvshow>', result)[0] except: tvshow = '0' if content in ['seasons', 'episodes'] and tvshow == '0': content = '0' if content in ['movies', 'tvshows'] and control.setting('meta') == 'true': try: from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) meta = True except: meta = False elif content in ['seasons', 'episodes']: try: from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) #tvd = metaget.get_meta('tvshow', tvshow) tvd = cachemeta.get(metaget.get_meta, 24, 'tvshow', tvshow, '', '', '') except: tvd = {} dirs = re.compile('<dir>(.+?)</dir>').findall(result) totalItems = len(dirs) for dir in dirs: try: data = {} name = re.findall('<name>(.+?)</name>', dir)[0] url = re.findall('<link>(.+?)</link>', dir)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', dir)[0] except: image = '0' try: fanart2 = re.findall('<fanart>(.+?)</fanart>', dir)[0] except: fanart2 = fanart if meta == True and content == 'tvshows': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': title} #data = metaget.get_meta('tvshow', title) data = cachemeta.get(metaget.get_meta, 24, 'tvshow', title, '', '', '') metafanart = data['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass elif content == 'tvshows': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': title} except: pass elif content == 'seasons': try: title = cleantitle(tvshow).encode('utf-8') data = {'title': title, 'tvshowtitle': title} data.update(tvd) metafanart = tvd['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass addDirectoryItem(name, url, 'ndmode', image, image, fanart2, '0', content, data, totalItems=totalItems) except: pass items = re.compile('<item>(.+?)</item>').findall(result) try: sort = re.findall('<sort>(.+?)</sort>', result)[0] except: sort = '' if sort == 'yes': items = sorted(items) totalItems = len(items) for item in items: try: data = {} name = re.findall('<title>(.+?)</title>', item)[0] url = re.findall('<link>(.+?)</link>', item)[0] try: image = image2 = re.findall('<thumbnail>(.+?)</thumbnail>', item)[0] except: image = image2 = '0' try: fanart2 = re.findall('<fanart>(.+?)</fanart>', item)[0] except: fanart2 = fanart if meta == True and content == 'movies': try: title = cleantitle(name).encode('utf-8') data = {'title': title} title, year = re.compile('(.+?)[(](\d{4})[)]').findall( name)[0] title = cleantitle(title).encode('utf-8') data = {'title': title, 'year': year} #data = metaget.get_meta('movie', title, year=year) data = cachemeta.get(metaget.get_meta, 24, 'movie', title, '', '', year) metaimage = data['cover_url'] if not metaimage == '': image = metaimage metafanart = data['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass elif content == 'movies': try: title = cleantitle(name).encode('utf-8') data = {'title': title} title, year = re.compile('(.+?)[(](\d{4})[)]').findall( name)[0] title = cleantitle(title).encode('utf-8') data = {'title': title, 'year': year} except: pass elif content == 'episodes': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': tvshow} except: pass try: i = cleaneptitle(tvshow, title) title, season, episode = i[0].encode('utf-8'), i[1], i[2] data = { 'title': title, 'tvshowtitle': tvshow, 'season': season, 'episode': episode } except: pass try: data.update({ 'year': tvd['year'], 'imdb_id': tvd['imdb_id'], 'tvdb_id': tvd['tvdb_id'], 'tvshowtitle': tvd['TVShowTitle'], 'genre': tvd['genre'], 'studio': tvd['studio'], 'status': tvd['status'], 'duration': tvd['duration'], 'rating': tvd['rating'], 'mpaa': tvd['mpaa'], 'plot': tvd['plot'], 'cast': tvd['cast'] }) metafanart = tvd['backdrop_url'] if not metafanart == '': image = fanart2 = metafanart except: pass if 'sublink' in url: addDirectoryItem(name, url, 'subDirectory', image, image2, fanart2, '0', content, data, tvshow=tvshow, totalItems=totalItems, isFolder=True) else: addDirectoryItem(name, url, 'resolveUrl', image, image2, fanart2, '0', content, data, totalItems=totalItems, isFolder=False) except: pass endDirectory(content, close)
def getTraktCredentials(): user = control.setting('trakt_user') password = control.setting('trakt_password') if (user == '' or password == ''): return False return (user, password)
def getCredentials(): user = control.setting('premiumize_user') password = control.setting('premiumize_password') if (user == '' or password == ''): return False return (user, password)
def __init__(self): self.base_link = 'http://api.furk.net' self.search_link = '/api/plugins/metasearch' self.login_link = '/api/login/login' self.user = control.setting('furk_user') self.password = control.setting('furk_password')
def sourcesFilter(self): try: customhdDict = [ control.setting("hosthd1"), control.setting("hosthd2"), control.setting("hosthd3"), control.setting("hosthd4"), control.setting("hosthd5"), control.setting("hosthd6"), control.setting("hosthd7"), control.setting("hosthd8"), control.setting("hosthd9"), control.setting("hosthd10"), control.setting("hosthd11"), control.setting("hosthd12"), control.setting("hosthd13"), control.setting("hosthd14"), control.setting("hosthd15"), control.setting("hosthd16"), control.setting("hosthd17"), control.setting("hosthd18"), control.setting("hosthd19"), control.setting("hosthd20"), ] except: customhdDict = [] try: customsdDict = [ control.setting("host1"), control.setting("host2"), control.setting("host3"), control.setting("host4"), control.setting("host5"), control.setting("host6"), control.setting("host7"), control.setting("host8"), control.setting("host9"), control.setting("host10"), control.setting("host11"), control.setting("host12"), control.setting("host13"), control.setting("host14"), control.setting("host15"), control.setting("host16"), control.setting("host17"), control.setting("host18"), control.setting("host19"), control.setting("host20"), ] except: customsdDict = [] hd_rank = [] hd_rank += [i for i in self.rdDict if i in self.hostprDict + self.hosthdDict] hd_rank += [i for i in self.pzDict if i in self.hostprDict + self.hosthdDict] hd_rank += customhdDict hd_rank += [ i["source"] for i in self.sources if i["quality"] in ["1080p", "HD"] and not i["source"] in customhdDict + self.hostprDict + self.hosthdDict ] hd_rank += self.hosthdDict hd_rank = [i.lower() for i in hd_rank] hd_rank = [x for y, x in enumerate(hd_rank) if x not in hd_rank[:y]] sd_rank = [] sd_rank += [i for i in self.rdDict if i in self.hostprDict + self.hosthqDict] sd_rank += [i for i in self.pzDict if i in self.hostprDict + self.hosthqDict] sd_rank += customsdDict sd_rank += [ i["source"] for i in self.sources if i["quality"] == "SD" and not i["source"] in customsdDict + self.hostprDict + self.hosthqDict + self.hostmqDict + self.hostlqDict ] sd_rank += self.hosthqDict + self.hostmqDict + self.hostlqDict sd_rank = [i.lower() for i in sd_rank] sd_rank = [x for y, x in enumerate(sd_rank) if x not in sd_rank[:y]] for i in range(len(self.sources)): self.sources[i]["source"] = self.sources[i]["source"].lower() self.sources = sorted(self.sources, key=lambda k: k["source"]) filter = [] for host in hd_rank: filter += [i for i in self.sources if i["quality"] == "1080p" and i["source"] == host] for host in hd_rank: filter += [i for i in self.sources if i["quality"] == "HD" and i["source"] == host] for host in sd_rank: filter += [i for i in self.sources if i["quality"] == "SD" and i["source"] == host] if len(filter) < 10: filter += [i for i in self.sources if i["quality"] == "SCR"] if len(filter) < 10: filter += [i for i in self.sources if i["quality"] == "CAM"] self.sources = filter try: playback_quality = control.setting("playback_quality") except: playback_quality = "0" if playback_quality == "1": self.sources = [i for i in self.sources if not i["quality"] == "1080p"] elif playback_quality == "2": self.sources = [i for i in self.sources if not i["quality"] in ["1080p", "HD"]] elif playback_quality == "3": self.sources = [ i for i in self.sources if not i["quality"] in ["1080p", "HD"] and i["source"] in self.hostmqDict + self.hostlqDict ] elif playback_quality == "4": self.sources = [ i for i in self.sources if not i["quality"] in ["1080p", "HD"] and i["source"] in self.hostlqDict ] try: playback_captcha = control.setting("playback_captcha") except: playback_captcha = "false" try: playback_1080p_hosts = control.setting("playback_1080p_hosts") except: playback_1080p_hosts = "true" try: playback_720p_hosts = control.setting("playback_720p_hosts") except: playback_720p_hosts = "true" if playback_captcha == "false": self.sources = [i for i in self.sources if not i["source"] in self.hostcapDict] if playback_1080p_hosts == "false": self.sources = [ i for i in self.sources if not ( i["quality"] == "1080p" and i["source"] in self.hosthdDict and not i["source"] in self.rdDict + self.pzDict ) ] if playback_720p_hosts == "false": self.sources = [ i for i in self.sources if not ( i["quality"] == "HD" and i["source"] in self.hosthdDict and not i["source"] in self.rdDict + self.pzDict ) ] for i in range(len(self.sources)): s = self.sources[i]["source"].lower() p = self.sources[i]["provider"] q = self.sources[i]["quality"] if q == "SD" and s in self.hostmqDict: q = "MQ" elif q == "SD" and s in self.hostlqDict: q = "LQ" elif q == "SD": q = "HQ" try: d = self.sources[i]["info"] except: d = "" if not d == "": d = " | [I]%s [/I]" % d if s in self.rdDict: label = "%02d | [B]realdebrid[/B] | " % int(i + 1) elif s in self.pzDict: label = "%02d | [B]premiumize[/B] | " % int(i + 1) else: label = "%02d | [B]%s[/B] | " % (int(i + 1), p) if q in ["1080p", "HD"]: label += "%s%s | [B][I]%s [/I][/B]" % (s, d, q) else: label += "%s%s | [I]%s [/I]" % (s, d, q) self.sources[i]["label"] = label.upper() return self.sources
import os import sys import urlparse from modules.libraries import control sysAddon = sys.argv[0] artPath = control.artPath() addonFanart = control.addonFanart() try: action = dict(urlparse.parse_qsl(sys.argv[2].replace('?','')))['action'] except: action = None if (control.setting('trakt_user') == '' or control.setting('trakt_password') == ''): traktMode = False else: traktMode = True if control.setting('imdb_user') == '': imdbMode = False else: imdbMode = True class navigator: def root(self): self.addDirectoryItem(30501, 'root_movies', 'root_movies.jpg', 'DefaultMovies.png') self.addDirectoryItem(30502, 'root_shows', 'root_shows.jpg', 'DefaultTVShows.png') self.addDirectoryItem(30503, 'channels_movies', 'channels_movies.jpg', 'DefaultMovies.png') self.addDirectoryItem(30504, 'root_genesis', 'root_genesis.jpg', 'DefaultVideoPlaylists.png') root_movies = control.setting('root_movies')
def sourcesFilter(self): try: customhdDict = [control.setting("hosthd1"), control.setting("hosthd2"), control.setting("hosthd3"), control.setting("hosthd4"), control.setting("hosthd5"), control.setting("hosthd6"), control.setting("hosthd7"), control.setting("hosthd8"), control.setting("hosthd9"), control.setting("hosthd10"), control.setting("hosthd11"), control.setting("hosthd12"), control.setting("hosthd13"), control.setting("hosthd14"), control.setting("hosthd15"), control.setting("hosthd16"), control.setting("hosthd17"), control.setting("hosthd18"), control.setting("hosthd19"), control.setting("hosthd20")] except: customhdDict = [] try: customsdDict = [control.setting("host1"), control.setting("host2"), control.setting("host3"), control.setting("host4"), control.setting("host5"), control.setting("host6"), control.setting("host7"), control.setting("host8"), control.setting("host9"), control.setting("host10"), control.setting("host11"), control.setting("host12"), control.setting("host13"), control.setting("host14"), control.setting("host15"), control.setting("host16"), control.setting("host17"), control.setting("host18"), control.setting("host19"), control.setting("host20")] except: customsdDict = [] hd_rank = [] hd_rank += [i for i in self.rdDict if i in self.hostprDict + self.hosthdDict] hd_rank += [i for i in self.pzDict if i in self.hostprDict + self.hosthdDict] hd_rank += customhdDict hd_rank += [i['source'] for i in self.sources if i['quality'] in ['1080p', 'HD'] and not i['source'] in customhdDict + self.hostprDict + self.hosthdDict] hd_rank += self.hosthdDict hd_rank = [i.lower() for i in hd_rank] hd_rank = [x for y,x in enumerate(hd_rank) if x not in hd_rank[:y]] sd_rank = [] sd_rank += [i for i in self.rdDict if i in self.hostprDict + self.hosthqDict] sd_rank += [i for i in self.pzDict if i in self.hostprDict + self.hosthqDict] sd_rank += customsdDict sd_rank += [i['source'] for i in self.sources if i['quality'] == 'SD' and not i['source'] in customsdDict + self.hostprDict + self.hosthqDict + self.hostmqDict + self.hostlqDict] sd_rank += self.hosthqDict + self.hostmqDict + self.hostlqDict sd_rank = [i.lower() for i in sd_rank] sd_rank = [x for y,x in enumerate(sd_rank) if x not in sd_rank[:y]] for i in range(len(self.sources)): self.sources[i]['source'] = self.sources[i]['source'].lower() self.sources = sorted(self.sources, key=lambda k: k['source']) filter = [] for host in hd_rank: filter += [i for i in self.sources if i['quality'] == '1080p' and i['source'] == host] for host in hd_rank: filter += [i for i in self.sources if i['quality'] == 'HD' and i['source'] == host] for host in sd_rank: filter += [i for i in self.sources if i['quality'] == 'SD' and i['source'] == host] if len(filter) < 10: filter += [i for i in self.sources if i['quality'] == 'SCR'] if len(filter) < 10: filter += [i for i in self.sources if i['quality'] == 'CAM'] self.sources = filter try: playback_quality = control.setting("playback_quality") except: playback_quality = '0' if playback_quality == '1': self.sources = [i for i in self.sources if not i['quality'] == '1080p'] elif playback_quality == '2': self.sources = [i for i in self.sources if not i['quality'] in ['1080p', 'HD']] elif playback_quality == '3': self.sources = [i for i in self.sources if not i['quality'] in ['1080p', 'HD'] and i['source'] in self.hostmqDict + self.hostlqDict] elif playback_quality == '4': self.sources = [i for i in self.sources if not i['quality'] in ['1080p', 'HD'] and i['source'] in self.hostlqDict] try: playback_captcha = control.setting("playback_captcha") except: playback_captcha = 'false' try: playback_1080p_hosts = control.setting("playback_1080p_hosts") except: playback_1080p_hosts = 'true' try: playback_720p_hosts = control.setting("playback_720p_hosts") except: playback_720p_hosts = 'true' if playback_captcha == 'false': self.sources = [i for i in self.sources if not i['source'] in self.hostcapDict] if playback_1080p_hosts == 'false': self.sources = [i for i in self.sources if not (i['quality'] == '1080p' and i['source'] in self.hosthdDict and not i['source'] in self.rdDict + self.pzDict)] if playback_720p_hosts == 'false': self.sources = [i for i in self.sources if not (i['quality'] == 'HD' and i['source'] in self.hosthdDict and not i['source'] in self.rdDict + self.pzDict)] for i in range(len(self.sources)): s = self.sources[i]['source'].lower() p = self.sources[i]['provider'] q = self.sources[i]['quality'] if q == 'SD' and s in self.hostmqDict: q = 'MQ' elif q == 'SD' and s in self.hostlqDict: q = 'LQ' elif q == 'SD': q = 'HQ' try: d = self.sources[i]['info'] except: d = '' if not d == '': d = ' | [I]%s [/I]' % d if s in self.rdDict: label = '%02d | [B]realdebrid[/B] | ' % int(i+1) elif s in self.pzDict: label = '%02d | [B]premiumize[/B] | ' % int(i+1) else: label = '%02d | [B]%s[/B] | ' % (int(i+1), p) if q in ['1080p', 'HD']: label += '%s%s | [B][I]%s [/I][/B]' % (s, d, q) else: label += '%s%s | [I]%s [/I]' % (s, d, q) self.sources[i]['label'] = label.upper() return self.sources
def addPlayableItem(self, name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre, meta): try: if tvdb == None: tvdb = "0" if show == None: content = "movie" else: content = "episode" self.sources = self.getSources(name, title, year, imdb, tvdb, season, episode, show, show_alt, date, genre) if self.sources == []: raise Exception() self.sources = self.sourcesFilter() meta = json.loads(meta) try: poster, banner, thumb, fanart = meta["poster"], meta["banner"], meta["thumb"], meta["fanart"] except: poster, banner, thumb, fanart = meta["poster"], meta["poster"], meta["poster"], meta["fanart"] if control.setting("fanart") == "true" and not fanart == "0": pass else: fanart = control.addonFanart() sysaddon = sys.argv[0] for i in self.sources: try: url, source, provider = i["url"], i["label"], i["provider"] sysname, sysimdb, systvdb, sysurl, sysimage, syssource, sysprovider = ( urllib.quote_plus(name), urllib.quote_plus(imdb), urllib.quote_plus(tvdb), urllib.quote_plus(url), urllib.quote_plus(poster), urllib.quote_plus(source), urllib.quote_plus(provider), ) query = "action=playItem&content=%s&name=%s&imdb=%s&tvdb=%s&url=%s&source=%s&provider=%s" % ( content, sysname, sysimdb, systvdb, sysurl, syssource, sysprovider, ) cm = [] cm.append((control.lang(30401).encode("utf-8"), "RunPlugin(%s?action=queueItem)" % (sysaddon))) cm.append( ( control.lang(30402).encode("utf-8"), "RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s&provider=%s)" % (sysaddon, sysname, sysurl, sysimage, sysprovider), ) ) cm.append((control.lang(30412).encode("utf-8"), "Action(Info)")) cm.append((control.lang(30427).encode("utf-8"), "RunPlugin(%s?action=refresh)" % (sysaddon))) cm.append((control.lang(30410).encode("utf-8"), "RunPlugin(%s?action=openSettings)" % (sysaddon))) cm.append((control.lang(30411).encode("utf-8"), "RunPlugin(%s?action=openPlaylist)" % (sysaddon))) item = control.item(source, iconImage="DefaultVideo.png", thumbnailImage=thumb) try: item.setArt( { "poster": poster, "tvshow.poster": poster, "season.poster": poster, "banner": banner, "tvshow.banner": banner, "season.banner": banner, } ) except: pass item.setInfo(type="Video", infoLabels=meta) if not fanart == None: item.setProperty("Fanart_Image", fanart) item.setProperty("Video", "true") item.setProperty("IsPlayable", "true") item.addContextMenuItems(cm, replaceItems=True) control.addItem( handle=int(sys.argv[1]), url="%s?%s" % (sysaddon, query), listitem=item, isFolder=False ) except: pass control.directory(int(sys.argv[1]), cacheToDisc=True) except: control.infoDialog(control.lang(30308).encode("utf-8")) pass
def getCredentials(): user = control.setting('realdedrid_user') password = control.setting('realdedrid_password') if (user == '' or password == ''): return False return (user, password)
import urlparse from modules.libraries import control sysAddon = sys.argv[0] artPath = control.artPath() addonFanart = control.addonFanart() try: action = dict(urlparse.parse_qsl(sys.argv[2].replace("?", "")))["action"] except: action = None if control.setting("trakt_user") == "" or control.setting("trakt_password") == "": traktMode = False else: traktMode = True if control.setting("imdb_user") == "": imdbMode = False else: imdbMode = True class navigator: def root(self): self.addDirectoryItem(30501, "root_movies", "root_movies.jpg", "DefaultMovies.png") self.addDirectoryItem(30502, "root_shows", "root_shows.jpg", "DefaultTVShows.png") self.addDirectoryItem(30503, "channels_movies", "channels_movies.jpg", "DefaultMovies.png")
def getDirectory(name, url, audio, image, fanart, playable, content, close=True): result = cache.get(client.request, 0, url) result = str(result).replace('\r','').replace('\n','').replace('\t','').replace(' ','') try: fanart = re.findall('<fanart>(.+?)</fanart>', result)[0] except: fanart = '0' try: notify = re.compile('<notify>(.+?)</notify>').findall(result)[0] vip = re.findall('<poster>(.+?)</poster>', result)[0] if not re.search('[a-zA-Z]', vip): raise Exception() def message(vip): return (vip+version) check = cache.get(message, 600000000, vip, table='rel_vip') version = re.findall('<new>(.+?)</new>', notify)[0] if not version.isdigit(): raise Exception() if check == (vip+version): raise Exception() title = '[B]Announcement From %s![/B]' % vip msg1 = re.findall('<message1>(.+?)</message1>', notify)[0] msg2 = re.findall('<message2>(.+?)</message2>', notify)[0] msg3 = re.findall('<message3>(.+?)</message3>', notify)[0] check = cache.get(message, 0, vip, table='rel_vip') control.dialog.ok(str(title), str(msg1), str(msg2), str(msg3)) except: pass infos = re.compile('<info>(.+?)</info>').findall(result) for info in infos: try: name = re.findall('<message>(.+?)</message>', info)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', info)[0] except: image = '0' addDirectoryItem(name, '0', '0', image, image, fanart, '0', '0', {}) except: pass popups = re.compile('<popup>(.+?)</popup>').findall(result) for popup in popups: try: name = re.findall('<name>(.+?)</name>', popup)[0] url = re.findall('<popImage>(.+?)</popImage>', popup)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', popup)[0] except: image = '0' try: audio = re.findall('<sound>(.+?)</sound>', popup)[0] except: audio = '0' addDirectoryItem(name, url, 'openDialog', image, image, fanart, audio, '0', {}) except: pass special = re.compile('<name>([^<]+)</name><link>([^<]+)</link><thumbnail>([^<]+)</thumbnail><date>([^<]+)</date>').findall(result) for name, url, image, date in special: if re.search(r'\d+', date): name += ' [COLOR red] Updated %s[/COLOR]' % date addDirectoryItem(name, url, 'ndmode', image, image, fanart, '0', '0', {}) special = re.compile('<name>([^<]+)</name><link>([^<]+)</link><thumbnail>([^<]+)</thumbnail><mode>([^<]+)</mode>').findall(result) for name, url, image, action in special: addDirectoryItem(name, url, action, image, image, fanart, '0', '0', {}) meta = False try: content = re.findall('<meta>(.+?)</meta>', result)[0] except: content = '0' try: tvshow = re.findall('<tvshow>(.+?)</tvshow>', result)[0] except: tvshow = '0' if content in ['seasons', 'episodes'] and tvshow == '0': content = '0' if content in ['movies', 'tvshows'] and control.setting('meta') == 'true': try: from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) meta = True except: meta = False elif content in ['seasons', 'episodes']: try: from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) #tvd = metaget.get_meta('tvshow', tvshow) tvd = cachemeta.get(metaget.get_meta, 24, 'tvshow', tvshow, '', '', '') except: tvd = {} dirs = re.compile('<dir>(.+?)</dir>').findall(result) totalItems = len(dirs) for dir in dirs: try: data = {} name = re.findall('<name>(.+?)</name>', dir)[0] url = re.findall('<link>(.+?)</link>', dir)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', dir)[0] except: image = '0' try: fanart2 = re.findall('<fanart>(.+?)</fanart>', dir)[0] except: fanart2 = fanart if meta == True and content =='tvshows': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': title} #data = metaget.get_meta('tvshow', title) data = cachemeta.get(metaget.get_meta, 24, 'tvshow', title, '', '', '') metafanart = data['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass elif content =='tvshows': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': title} except: pass elif content =='seasons': try: title = cleantitle(tvshow).encode('utf-8') data = {'title': title, 'tvshowtitle': title} data.update(tvd) metafanart = tvd['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass addDirectoryItem(name, url, 'ndmode', image, image, fanart2, '0', content, data, totalItems=totalItems) except: pass items = re.compile('<item>(.+?)</item>').findall(result) try: sort = re.findall('<sort>(.+?)</sort>', result)[0] except: sort = '' if sort == 'yes': items = sorted(items) totalItems = len(items) for item in items: try: data = {} name = re.findall('<title>(.+?)</title>', item)[0] url = re.findall('<link>(.+?)</link>', item)[0] try: image = image2 = re.findall('<thumbnail>(.+?)</thumbnail>', item)[0] except: image = image2 = '0' try: fanart2 = re.findall('<fanart>(.+?)</fanart>', item)[0] except: fanart2 = fanart if meta == True and content == 'movies': try: title = cleantitle(name).encode('utf-8') data = {'title': title} title, year = re.compile('(.+?)[(](\d{4})[)]').findall(name)[0] title = cleantitle(title).encode('utf-8') data = {'title': title, 'year': year} #data = metaget.get_meta('movie', title, year=year) data = cachemeta.get(metaget.get_meta, 24, 'movie', title, '', '', year) metaimage = data['cover_url'] if not metaimage == '': image = metaimage metafanart = data['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass elif content =='movies': try: title = cleantitle(name).encode('utf-8') data = {'title': title} title, year = re.compile('(.+?)[(](\d{4})[)]').findall(name)[0] title = cleantitle(title).encode('utf-8') data = {'title': title, 'year': year} except: pass elif content == 'episodes': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': tvshow} except: pass try: i = cleaneptitle(tvshow, title) title, season, episode = i[0].encode('utf-8'), i[1], i[2] data = {'title': title, 'tvshowtitle': tvshow, 'season': season, 'episode': episode} except: pass try: data.update({'year': tvd['year'], 'imdb_id' : tvd['imdb_id'], 'tvdb_id' : tvd['tvdb_id'], 'tvshowtitle': tvd['TVShowTitle'], 'genre' : tvd['genre'], 'studio': tvd['studio'], 'status': tvd['status'], 'duration' : tvd['duration'], 'rating': tvd['rating'], 'mpaa' : tvd['mpaa'], 'plot': tvd['plot'], 'cast': tvd['cast']}) metafanart = tvd['backdrop_url'] if not metafanart == '': image = fanart2 = metafanart except: pass if 'sublink' in url: addDirectoryItem(name, url, 'subDirectory', image, image2, fanart2, '0', content, data, tvshow=tvshow, totalItems=totalItems, isFolder=True) else: addDirectoryItem(name, url, 'resolveUrl', image, image2, fanart2, '0', content, data, totalItems=totalItems, isFolder=False) except: pass endDirectory(content, close)