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
Beispiel #2
0
    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
Beispiel #3
0
    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()
Beispiel #4
0
    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()
Beispiel #5
0
    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
Beispiel #8
0
    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()
Beispiel #9
0
    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()
Beispiel #10
0
    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()
Beispiel #11
0
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
Beispiel #12
0
    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
Beispiel #13
0
    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()
Beispiel #14
0
    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
Beispiel #15
0
    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
Beispiel #16
0
    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
Beispiel #17
0
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')
Beispiel #18
0
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('&nbsp;', '')

    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)
Beispiel #19
0
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)
Beispiel #21
0
 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 getCredentials():
    user = control.setting('premiumize_user') 
    password = control.setting('premiumize_password')
    if (user == '' or password == ''): return False
    return (user, password)
Beispiel #23
0
    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
Beispiel #24
0
def getTraktCredentials():
    user = control.setting('trakt_user')
    password = control.setting('trakt_password')
    if (user == '' or password == ''): return False
    return (user, password)
Beispiel #25
0
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')
Beispiel #26
0
    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
Beispiel #27
0
    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
Beispiel #28
0
def getCredentials():
    user = control.setting('realdedrid_user')
    password = control.setting('realdedrid_password')
    if (user == '' or password == ''): return False
    return (user, password)
Beispiel #29
0
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 __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')
Beispiel #31
0
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('&nbsp;','')

    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 getCredentials():
    user = control.setting('realdedrid_user') 
    password = control.setting('realdedrid_password')
    if (user == '' or password == ''): return False
    return (user, password)