def __init__(self):
        # Parse parameters...
        params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
        self.current_page = int(params.get("page", "1"))
        self.action = params.get("action", None)
        # self.sort_method = params.get("sort", control.infoLabel("Container.SortMethod"))
        self.sort_method = urllib.unquote_plus(params.get("sort", "NONE"))
        self.blog_url = urllib.unquote_plus(params.get("blog-url", ""))
        self.browse_url = "%s/Browse/Blogs?sort=%s&page=%i&%s"

        utils.set_no_sort()

        if self.action is None or self.action == "browse-blogs":
            if self.sort_method == control.lang(30701):  # recent
                self.sort = "recent"
            elif self.sort_method == control.lang(30704):  # AtoZ
                self.sort = "atoz"
            else:
                self.show_sort()
                return
            self.browse()
        elif self.action == "list-blog" and self.blog_url != "":
            if self.sort_method == control.lang(30701):  # recent
                self.sort = "recent"
            elif self.sort_method == control.lang(30702):  # viewed
                self.sort = "viewed"
            elif self.sort_method == control.lang(30703):  # rating
                self.sort = "rating"
            else:
                self.show_list_sort()
                return
            self.list()
        print "fail: action=%s&blog-url=%s" % (self.action, self.blog_url)
        return
Beispiel #2
0
    def play_video(self):
        # Get current list item details...
        title = unicode(xbmc.getInfoLabel("ListItem.Title"), "utf-8")
        thumbnail = xbmc.getInfoImage("ListItem.Thumb")
        plot = unicode(xbmc.getInfoLabel("ListItem.Plot"), "utf-8")
        genre = unicode(xbmc.getInfoLabel("ListItem.Genre"), "utf-8")
        total_time = unicode(xbmc.getInfoLabel("ListItem.EndTime"), "utf-8")
        # Show wait dialog while parsing data...
        dialog_wait = xbmcgui.DialogProgress()
        dialog_wait.create(control.lang(30504), title)

        if self.video_url is None:
            # Close wait dialog...
            dialog_wait.close()
            del dialog_wait

            # Message...
            xbmcgui.Dialog().ok(control.lang(30000), control.lang(30505))
            return

        # Close wait dialog...
        dialog_wait.close()
        del dialog_wait

        player().run({
            "url": self.video_url,
            "thumb": thumbnail,
            "plot": plot,
            "genre": genre,
            "title": title,
            "endTime": total_time,
            "repeat": "Repeat One"
        })
        return
    def __init__(self):
        # Parse parameters...
        params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
        self.current_page = int(params.get("page", "1"))
        self.action = params.get("action", None)
        # self.sort_method = params.get("sort", control.infoLabel("Container.SortMethod"))
        self.sort_method = urllib.unquote_plus(params.get("sort", "NONE"))
        self.browse_url = "%sBrowse/Authors?direction=desc&sort=%s&page=%i&term=%s&%s"
        self.search_term = urllib.unquote_plus(params.get("query", ""))
        self.author_url = urllib.unquote_plus(params.get("author-url", ""))
        utils.set_no_sort()

        if self.action is None or self.action == "browse-authors":
            if self.sort_method == control.lang(30705):  # episodes
                self.sort = "episodes"
            elif self.sort_method == control.lang(30704):  # AtoZ
                self.sort = "atoz"
            else:
                self.show_sort()
                return
            self.browse()
            return
        elif self.action == "search-authors":
            self.sort = ""
            self.search()
            return
        elif self.action == "list-author" and self.author_url != "":
            self.list()
            return

        print "fail: action=%s&sort=%s&author-url=%s" % (self.action, self.sort_method, self.author_url)
        return
Beispiel #4
0
    def __init__(self):
        # Parse parameters...
        params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
        self.current_page = int(params.get("page", "1"))
        self.action = params.get("action", None)
        # self.sort_method = params.get("sort", control.infoLabel("Container.SortMethod"))
        self.sort_method = urllib.unquote_plus(params.get("sort", "NONE"))
        self.blog_url = urllib.unquote_plus(params.get("blog-url", ""))
        self.browse_url = "%s/Browse/Blogs?sort=%s&page=%i&%s"

        utils.set_no_sort()

        if self.action is None or self.action == "browse-blogs":
            if self.sort_method == control.lang(30701):  # recent
                self.sort = "recent"
            elif self.sort_method == control.lang(30704):  # AtoZ
                self.sort = "atoz"
            else:
                self.show_sort()
                return
            self.browse()
        elif self.action == "list-blog" and self.blog_url != "":
            if self.sort_method == control.lang(30701):  # recent
                self.sort = "recent"
            elif self.sort_method == control.lang(30702):  # viewed
                self.sort = "viewed"
            elif self.sort_method == control.lang(30703):  # rating
                self.sort = "rating"
            else:
                self.show_list_sort()
                return
            self.list()
        print "fail: action=%s&blog-url=%s" % (self.action, self.blog_url)
        return
def clear(table=None, withyes=True):
    try:
        control.idle()

        if table == None:
            table = ['rel_list', 'rel_lib']
        elif not type(table) == list:
            table = [table]

        if withyes:
            yes = control.yesnoDialog(control.lang(30401).encode('utf-8'), '', '')
            if not yes:
                return
        else:
            pass

        dbcon = database.connect(control.cacheFile)
        dbcur = dbcon.cursor()

        for t in table:
            try:
                dbcur.execute("DROP TABLE IF EXISTS %s" % t)
                dbcur.execute("VACUUM")
                dbcon.commit()
            except:
                pass

        control.infoDialog(control.lang(30402).encode('utf-8'))
    except:
        pass
Beispiel #6
0
def torrent_cache_clear():
    confirmation = control.yesno_dialog(
        control.ADDON_NAME, "Are you sure you wish to clear the cache?")
    if not confirmation:
        return
    try:
        control.torrentScrapeCacheFile_lock.acquire()
        cursor = _get_connection_cursor(control.torrentScrapeCacheFile)
        for t in [cache_table, 'rel_list', 'rel_lib']:
            try:
                cursor.execute("DROP TABLE IF EXISTS %s" % t)
                cursor.execute("VACUUM")
                cursor.connection.commit()
            except:
                pass
    except:
        try:
            cursor.close()
        except:
            pass
        import traceback
        traceback.print_exc()
    finally:
        control.try_release_lock(control.torrentScrapeCacheFile_lock)

    control.showDialog.notification('{}: {}'.format(control.ADDON_NAME,
                                                    control.lang(30200)),
                                    control.lang(30202),
                                    time=5000)
    def __init__(self):
        # Parse parameters...
        params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
        self.current_page = int(params.get("page", "1"))
        self.action = params.get("action", None)
        # self.sort_method = params.get("sort", control.infoLabel("Container.SortMethod"))
        self.sort_method = urllib.unquote_plus(params.get("sort", "NONE"))
        self.browse_url = "%sBrowse/Authors?direction=desc&sort=%s&page=%i&term=%s&%s"
        self.search_term = urllib.unquote_plus(params.get("query", ""))
        self.author_url = urllib.unquote_plus(params.get("author-url", ""))
        utils.set_no_sort()

        if self.action is None or self.action == "browse-authors":
            if self.sort_method == control.lang(30705):  # episodes
                self.sort = "episodes"
            elif self.sort_method == control.lang(30704):  # AtoZ
                self.sort = "atoz"
            else:
                self.show_sort()
                return
            self.browse()
            return
        elif self.action == "search-authors":
            self.sort = ""
            self.search()
            return
        elif self.action == "list-author" and self.author_url != "":
            self.list()
            return

        print "fail: action=%s&sort=%s&author-url=%s" % (
            self.action, self.sort_method, self.author_url)
        return
    def __init__(self):
        # params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
        # self.action = params.get("action", None)
        utils.set_no_sort()

        meta = utils.get_course_meta()["sections"]
        for m in meta:
            header = m["header"]
            title = header
            if title in utils.ignore_sections:
                continue

            for sid in utils.section_ids:
                if title == control.lang(sid):
                    title = control.lang(sid + 100)
            icon = os.path.join(control.imagesPath, "%s.png" % header)
            utils.add_directory(title, icon, icon,
                                "%s?action=browse-section&section=%s" % (sys.argv[0], urllib.quote_plus(header)))

        utils.add_directory(utils.text_green % control.lang(30501), utils.icon_search, utils.icon_search,
                            "%s?action=search" % sys.argv[0])

        utils.add_directory(utils.text_green % control.lang(30502), utils.icon_settings, None,
                            "%s?action=settings" % (sys.argv[0]))

        control.directory_end()
        return
Beispiel #9
0
 def addDirectoryItem(self,
                      name,
                      query,
                      thumb,
                      icon,
                      context=None,
                      queue=False,
                      isAction=True,
                      isFolder=True):
     try:
         name = control.lang(name).encode('utf-8')
     except:
         pass
     url = '%s?action=%s' % (sysaddon, query) if isAction == True else query
     thumb = os.path.join(artPath, thumb) if not artPath == None else icon
     cm = []
     cm.append(('Settings',
                'RunPlugin(%s?action=openSettings&query=(0,0))' % sysaddon))
     if queue == True:
         cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon))
     if not context == None:
         cm.append((control.lang(context[0]).encode('utf-8'),
                    'RunPlugin(%s?action=%s)' % (sysaddon, context[1])))
     item = control.item(label=name)
     item.addContextMenuItems(cm)
     item.setArt({'icon': thumb, 'thumb': thumb})
     if not addonFanart == None:
         item.setProperty('Fanart_Image', addonFanart)
     control.addItem(handle=syshandle,
                     url=url,
                     listitem=item,
                     isFolder=isFolder)
 def show_sort(self):
     # recent
     utils.add_directory(control.lang(30701), utils.icon_folder, None, "%s?action=browse-series&page=%i&sort=%s" % (
         sys.argv[0], 1, urllib.quote_plus(control.lang(30701))))
     # A to Z
     utils.add_directory(control.lang(30704), utils.icon_folder, None, "%s?action=browse-series&page=%i&sort=%s" % (
         sys.argv[0], 1, urllib.quote_plus(control.lang(30704))))
     control.directory_end()
     return
 def show_sort(self):
     # recent
     utils.add_directory(control.lang(30701), utils.icon_folder, None, "%s?action=browse-events&page=%i&sort=%s" % (
         sys.argv[0], 1, urllib.quote_plus(control.lang(30701))))
     # A to Z
     utils.add_directory(control.lang(30704), utils.icon_folder, None, "%s?action=browse-events&page=%i&sort=%s" % (
         sys.argv[0], 1, urllib.quote_plus(control.lang(30704))))
     control.directory_end()
     return
Beispiel #12
0
 def clearCacheAll(self):
     control.idle()
     yes = control.yesnoDialog(control.lang(32056).encode('utf-8'), '', '')
     if not yes:
         return
     from resources.lib.modules import cache
     cache.cache_clear_all()
     control.infoDialog(control.lang(32057).encode('utf-8'),
                        sound=True,
                        icon='INFO')
Beispiel #13
0
    def getVideoInfo(self, content, name, imdb, tvdb):
        try:
            self.loadingTime = time.time()
            self.totalTime = 0
            self.currentTime = 0
            self.folderPath = control.infoLabel('Container.FolderPath')
            self.name = name
            self.content = content
            self.file = self.name + '.strm'
            self.file = self.file.translate(None, '\/:*?"<>|').strip('.')
            self.imdb = 'tt' + imdb if imdb.isdigit() else imdb
            self.tvdb = tvdb if not tvdb == None else '0'
        except:
            pass

        try:
            if self.content == 'movie':
                self.title, self.year = re.compile(
                    '(.+?) [(](\d{4})[)]$').findall(self.name)[0]
            elif self.content == 'episode':
                self.show, self.season, self.episode = re.compile(
                    '(.+?) S(\d*)E(\d*)$').findall(self.name)[0]
                self.season, self.episode = '%01d' % int(
                    self.season), '%01d' % int(self.episode)
        except:
            pass

        try:
            if control.setting('resume_playback') == 'true':
                self.offset = bookmarks.getBookmark(self.name, self.imdb)
                if self.offset == '0': raise Exception()

                minutes, seconds = divmod(float(self.offset), 60)
                hours, minutes = divmod(minutes, 60)
                yes = control.yesnoDialog(
                    '%s %02d:%02d:%02d' % (control.lang(30342).encode('utf-8'),
                                           hours, minutes, seconds), '', '',
                    self.name,
                    control.lang(30343).encode('utf-8'),
                    control.lang(30344).encode('utf-8'))

                if yes: self.offset = '0'
        except:
            pass

        try:
            if self.content == 'movie':
                control.window.setProperty('script.trakt.ids',
                                           json.dumps({'imdb': self.imdb}))
            elif self.content == 'episode':
                control.window.setProperty('script.trakt.ids',
                                           json.dumps({'tvdb': self.tvdb}))
        except:
            pass
 def show_sort(self):
     # search
     utils.add_directory(control.lang(30409), utils.icon_search, None,
                         "%s?action=search-authors" % (sys.argv[0]))
     # episodes
     utils.add_directory(control.lang(30705), utils.icon_folder, None,
                         "%s?action=browse-authors&page=%i&sort=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30705))))
     # A to Z
     utils.add_directory(control.lang(30704), utils.icon_folder, None,
                         "%s?action=browse-authors&page=%i&sort=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30704))))
     control.directory_end()
     return
    def play_video(self):
        # Get current list item details...
        title = unicode(xbmc.getInfoLabel("ListItem.Title"), "utf-8")
        thumbnail = xbmc.getInfoImage("ListItem.Thumb")
        studio = unicode(xbmc.getInfoLabel("ListItem.Studio"), "utf-8")
        plot = unicode(xbmc.getInfoLabel("ListItem.Plot"), "utf-8")
        genre = unicode(xbmc.getInfoLabel("ListItem.Genre"), "utf-8")
        total_time = unicode(xbmc.getInfoLabel("ListItem.EndTime"), "utf-8")
        dbid = unicode(xbmc.getInfoLabel("ListItem.DBID"), "utf-8")

        # Show wait dialog while parsing data...
        dialog_wait = xbmcgui.DialogProgress()
        dialog_wait.create(control.lang(30504), title)

        if self.video_url is None:
            # Close wait dialog...
            dialog_wait.close()
            del dialog_wait

            # Message...
            xbmcgui.Dialog().ok(control.lang(30000), control.lang(30505))
            return

        # Play video...
        # playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        # playlist.clear()

        # list_item = xbmcgui.ListItem(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
        # list_item.setInfo("video", {"Title": title, "Studio": studio, "Plot": plot, "Genre": genre})
        # playlist.add(self.video_url, list_item)

        # Close wait dialog...
        dialog_wait.close()
        del dialog_wait

        # Play video...
        # xbmc_player = xbmc.Player()

        player().run({
            "url": self.video_url,
            "thumb": thumbnail,
            "plot": plot,
            "genre": genre,
            "title": title,
            "endTime": total_time,
            "dbid": dbid
        })
        # xbmc_player.play(playlist)
        return
Beispiel #16
0
    def display_section_choice(self, close_directory=True):
        epoch_time = int(time.time())

        utils.add_directory(
            utils.text_blue % control.lang(30601), utils.icon_folder, None,
            "%s%s?action=gallery&section=hot" % (sys.argv[0], epoch_time))
        utils.add_directory(
            utils.text_blue % control.lang(30602), utils.icon_folder, None,
            "%s%s?action=gallery&section=top" % (sys.argv[0], epoch_time))
        utils.add_directory(
            utils.text_blue % control.lang(30603), utils.icon_folder, None,
            "%s%s?action=gallery&section=user" % (sys.argv[0], epoch_time))
        if close_directory:
            control.directory_end(force_thumb=False)
        return
Beispiel #17
0
def authTrakt():
    try:
        if getTraktCredentialsInfo() == True:
            if control.yesnoDialog(control.lang(32511).encode('utf-8'), control.lang(32512).encode('utf-8'), '', 'Trakt'):
                control.setSetting(id='trakt.user', value='')
                control.setSetting(id='trakt.token', value='')
                control.setSetting(id='trakt.refresh', value='')
            raise Exception()

        result = getTraktAsJson('/oauth/device/code', {'client_id': V2_API_KEY})
        verification_url = (control.lang(32513) % result['verification_url']).encode('utf-8')
        user_code = (control.lang(32514) % result['user_code']).encode('utf-8')
        expires_in = int(result['expires_in'])
        device_code = result['device_code']
        interval = result['interval']

        progressDialog = control.progressDialog
        progressDialog.create('Trakt', verification_url, user_code)

        for i in range(0, expires_in):
            try:
                if progressDialog.iscanceled(): break
                time.sleep(1)
                if not float(i) % interval == 0: raise Exception()
                r = getTraktAsJson('/oauth/device/token', {'client_id': V2_API_KEY, 'client_secret': CLIENT_SECRET, 'code': device_code})
                if 'access_token' in r: break
            except:
                pass

        try: progressDialog.close()
        except: pass

        token, refresh = r['access_token'], r['refresh_token']

        headers = {'Content-Type': 'application/json', 'trakt-api-key': V2_API_KEY, 'trakt-api-version': 2, 'Authorization': 'Bearer %s' % token}


        result = client.request(urlparse.urljoin(BASE_URL, '/users/me'), headers=headers)
        result = utils.json_loads_as_str(result)

        user = result['username']

        control.setSetting(id='trakt.user', value=user)
        control.setSetting(id='trakt.token', value=token)
        control.setSetting(id='trakt.refresh', value=refresh)
        raise Exception()
    except:
        control.openSettings('4.1')
    def re_build_database(self, silent=False):
        if not silent:
            confirm = control.yesno_dialog(control.ADDON_NAME, control.lang(30203))
            if confirm == 0:
                return

        control.anilistSyncDB_lock.acquire()
        cursor = self._get_cursor()
        cursor.execute('DROP TABLE IF EXISTS shows')
        cursor.execute('DROP TABLE IF EXISTS seasons')
        cursor.execute('DROP TABLE IF EXISTS episodes')
        cursor.execute('DROP TABLE IF EXISTS activities')
        try:
            cursor.execute("VACCUM")
        except:
            pass
        cursor.connection.commit()
        cursor.close()

        control.try_release_lock(control.anilistSyncDB_lock)

        self._build_show_table()
        self._build_episode_table()
        self._build_sync_activities()
        self._build_season_table()

        self._set_base_activites()
        self._refresh_activites()
 def show_sort(self):
     # search
     utils.add_directory(control.lang(30409), utils.icon_search, None,
                         "%s?action=search-authors" % (sys.argv[0]))
     # episodes
     utils.add_directory(
         control.lang(30705), utils.icon_folder, None,
         "%s?action=browse-authors&page=%i&sort=%s" %
         (sys.argv[0], 1, urllib.quote_plus(control.lang(30705))))
     # A to Z
     utils.add_directory(
         control.lang(30704), utils.icon_folder, None,
         "%s?action=browse-authors&page=%i&sort=%s" %
         (sys.argv[0], 1, urllib.quote_plus(control.lang(30704))))
     control.directory_end()
     return
Beispiel #20
0
def add_subreddit(subreddit):
    _init_subreddits_file()
    exists = False
    fh = open(subreddits_file, 'r')
    content = fh.readlines()
    fh.close()
    if subreddit:
        for line in content:
            if line.lower() == subreddit.lower():
                exists = True
        if not exists:
            fh = open(subreddits_file, 'a')
            fh.write(subreddit + '\n')
            fh.close()
    else:
        keyboard = xbmc.Keyboard('', control.lang(30508))
        keyboard.doModal()
        if keyboard.isConfirmed() and keyboard.getText():
            subreddit = keyboard.getText()
            for line in content:
                if line.lower() == subreddit.lower() + "\n":
                    exists = True
            if not exists:
                fh = open(subreddits_file, 'a')
                fh.write(subreddit + '\n')
                fh.close()
Beispiel #21
0
    def display_sort_choice(self, close_directory=True):
        epoch_time = int(time.time())

        utils.add_directory(
            utils.text_blue % control.lang(30604), utils.icon_folder, None,
            "%s%s?action=meme&sort=viral" % (sys.argv[0], epoch_time))
        utils.add_directory(
            utils.text_blue % control.lang(30605), utils.icon_folder, None,
            "%s%s?action=meme&sort=top" % (sys.argv[0], epoch_time))
        utils.add_directory(
            utils.text_blue % control.lang(30606), utils.icon_folder, None,
            "%s%s?action=meme&sort=time" % (sys.argv[0], epoch_time))

        if close_directory:
            control.directory_end(force_thumb=False)
        return
Beispiel #22
0
    def render_reddit_list(self):
        utils.set_no_sort()
        epoch_time = int(time.time())
        utils.add_directory(utils.text_green % control.lang(30502), utils.icon_settings, None,
                            "%s?action=settings" % (sys.argv[0]))

        utils.add_directory(utils.text_heading % (control.lang(30508)), utils.icon_folder, None,
                            "%s?action=reddit_add" % (sys.argv[0]))

        reddits = utils.get_subreddits()
        for sr in reddits:
            utils.add_directory(sr.title(), utils.icon_folder, None,
                                "%s%s?action=gallery&section=%s&type=reddit" % (
                                    sys.argv[0], epoch_time, urllib.quote_plus(sr.title())))
        control.directory_end(force_thumb=False)
        return
    def search(self):

        if self.search_term is None or self.search_term == '':
            t = control.lang(30201).encode('utf-8')
            k = control.keyboard('', t)
            k.doModal()
            self.search_term = k.getText() if k.isConfirmed() else None

        if self.search_term is None or self.search_term == '':
            return

        skip = (self.current_page-1) * self.per_page
        take = self.per_page
        select_filter = utils.create_filter_criteria(self.section, self.group, self.search_term)
        results_count = utils.get_course_meta(select_filter)["totalResultCount"]
        courses = utils.get_course_data(select_filter, skip, take)

        for course in courses:
            name = course["courseName"].encode('utf-8')
            thumb = course["courseImage"]
            if thumb is None or thumb == '':
                thumb = self.icon
            cid = course["id"]
            utils.add_directory(name, thumb, thumb,
                                "%s?action=view-course&id=%s&url=%s" % (sys.argv[0], cid, utils.url_course % cid))
        has_more = (results_count - (skip+self.per_page)) > 0
        if has_more:
            next_url = "%s?action=search&group=%s&section=%s&page=%i&query=%s" % (
                sys.argv[0], urllib.quote_plus(self.group, safe=':/'), urllib.quote_plus(self.section, safe=':/'),
                self.current_page + 1, self.search_term)
            utils.add_next_page(next_url, self.current_page + 1)
        control.directory_end(False)
        return
Beispiel #24
0
 def accountCheck(self):
     if traktCredentials == False and imdbCredentials == False:
         control.idle()
         control.infoDialog(control.lang(32042).encode('utf-8'),
                            sound=True,
                            icon='WARNING')
         sys.exit()
Beispiel #25
0
    def __init__(self):
        utils.set_no_sort()

        utils.add_directory(utils.text_green % control.lang(30502),
                            utils.icon_settings, None,
                            "%s?action=settings" % (sys.argv[0]))

        boards = utils.get_boards()["boards"]
        nsfw = control.setting("enable_nsfw") == 'true'
        for b in boards:
            is_nsfw = b["ws_board"] == 0
            if not nsfw and is_nsfw:
                continue
            if is_nsfw:
                title = utils.text_board_nsfw % (b["board"], b["title"])
            else:
                title = utils.text_board % (b["board"], b["title"])

            utils.add_directory(
                title, utils.icon_board, utils.icon_board,
                "%s?action=board&board=%s&total_pages=%s" %
                (sys.argv[0], urllib.quote_plus(b["board"]), b["pages"]))

        control.directory_end(force_thumb=False)
        return
    def search(self):
        if self.search_query is None or self.search_query == '':
            t = control.lang(30201).encode('utf-8')
            k = control.keyboard('', t)
            k.doModal()
            self.search_query = k.getText() if k.isConfirmed() else None

        if self.search_query is None or self.search_query == '':
            return

        base_url = "https://c9search.azurewebsites.net/content/search?text=%s&$top=100&$skip=0&$inlinecount=allpages" \
                   % (urllib.quote_plus(self.search_query))
        data = http_request.get(base_url)
        start_index = data.index('"documents":') + 12
        if start_index <= 12:
            return

        json_data = data[start_index:-3]
        json_media = json.loads(json_data)

        for media in json_media:
            title = media["title"]
            url = media["permalink"]
            genre = media["published"]
            thumbnail = media["previewImage"]
            plot = media["summaryBody"]

            list_item = control.item(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
            list_item.setInfo("video", {"Title": title, "Studio": "Microsoft Channel 9", "Plot": plot, "Genre": genre})
            plugin_play_url = '%s?action=play&video_page_url=%s' % (sys.argv[0], urllib.quote_plus(url))
            control.addItem(handle=int(sys.argv[1]), url=plugin_play_url, listitem=list_item, isFolder=False)

        # End of directory...
        control.directory_end()
        return
    def browse_group(self):

        skip = (self.current_page - 1) * self.per_page
        take = self.per_page
        select_filter = utils.create_filter_criteria(self.section, self.group)
        results_count = utils.get_course_meta(select_filter)["totalResultCount"]
        courses = utils.get_course_data(select_filter, skip, take)

        utils.add_directory(utils.text_green % control.lang(30501), utils.icon_search, utils.icon_search,
                            "%s?action=search&section=%s&group=%s" % (sys.argv[0], self.section, self.group))

        for course in courses:
            name = course["courseName"].encode('utf-8')
            thumb = course["courseImage"]
            if thumb is None or thumb == '':
                thumb = self.icon
            cid = course["id"]
            utils.add_directory(name, thumb, thumb,
                                "%s?action=view-course&id=%s&url=%s" % (sys.argv[0], cid, utils.url_course % cid))
        has_more = (results_count - (skip+self.per_page)) > 0
        if has_more:
            next_url = "%s?action=browse-group&group=%s&section=%s&page=%i" % (
                sys.argv[0], urllib.quote_plus(self.group, safe=':/'), urllib.quote_plus(self.section, safe=':/'),
                self.current_page + 1)
            utils.add_next_page(next_url, self.current_page + 1)
        control.directory_end(False)
        return
Beispiel #28
0
    def search_new(self):
        control.idle()

        t = control.lang(32010).encode('utf-8')
        k = control.keyboard('', t)
        k.doModal()
        q = k.getText() if k.isConfirmed() else None

        if (q == None or q == ''): return
        q = q.lower()
        try:
            from sqlite3 import dbapi2 as database
        except:
            from pysqlite2 import dbapi2 as database

        dbcon = database.connect(control.searchFile)
        dbcur = dbcon.cursor()
        dbcur.execute("DELETE FROM tvshow WHERE term = ?", (q, ))
        dbcur.execute("INSERT INTO tvshow VALUES (?,?)", (None, q))
        dbcon.commit()
        dbcur.close()
        url = self.search_link + urllib.quote_plus(q)
        if int(control.getKodiVersion()) >= 18:
            self.get(url)
        else:
            url = '%s?mode=6&url=%s' % (sys.argv[0], urllib.quote_plus(url))
            control.execute('Container.Update(%s)' % url)
Beispiel #29
0
def delete(dbfile=control.cacheFile, withyes=True):

    if withyes:

        yes = control.yesnoDialog(control.lang(30401).encode('utf-8'), '', '')

        if not yes:
            return

    else:

        pass

    control.deleteFile(dbfile)

    control.infoDialog(control.lang(30402).encode('utf-8'))
Beispiel #30
0
    def browse_group(self):

        skip = (self.current_page - 1) * self.per_page
        take = self.per_page
        select_filter = utils.create_filter_criteria(self.section, self.group)
        results_count = utils.get_course_meta(
            select_filter)["totalResultCount"]
        courses = utils.get_course_data(select_filter, skip, take)

        utils.add_directory(
            utils.text_green % control.lang(30501), utils.icon_search,
            utils.icon_search, "%s?action=search&section=%s&group=%s" %
            (sys.argv[0], self.section, self.group))

        for course in courses:
            name = course["courseName"].encode('utf-8')
            thumb = course["courseImage"]
            if thumb is None or thumb == '':
                thumb = self.icon
            cid = course["id"]
            utils.add_directory(
                name, thumb, thumb, "%s?action=view-course&id=%s&url=%s" %
                (sys.argv[0], cid, utils.url_course % cid))
        has_more = (results_count - (skip + self.per_page)) > 0
        if has_more:
            next_url = "%s?action=browse-group&group=%s&section=%s&page=%i" % (
                sys.argv[0], urllib.quote_plus(self.group, safe=':/'),
                urllib.quote_plus(self.section,
                                  safe=':/'), self.current_page + 1)
            utils.add_next_page(next_url, self.current_page + 1)
        control.directory_end(False)
        return
 def tags_alpha(self):
     tag_list = control.lang(30601)
     for tag in tag_list:
         utils.add_directory("[B][COLOR green][UPPERCASE]%s[/UPPERCASE][/COLOR][/B]" % tag,
                             "%s/%s.png" % (control.imagesPath, tag), None,
                             "%s?action=browse-tag-item&&tag=%s" % (sys.argv[0], tag))
     control.directory_end()
     return
Beispiel #32
0
def cache_version_check():
    if _find_cache_version():
        cache_clear()
        cache_clear_meta()
        cache_clear_providers()
        control.infoDialog(control.lang(32057).encode('utf-8'),
                           sound=True,
                           icon='INFO')
Beispiel #33
0
 def tags_alpha(self):
     tag_list = control.lang(30601)
     for tag in tag_list:
         utils.add_directory("[B][COLOR green][UPPERCASE]%s[/UPPERCASE][/COLOR][/B]" % tag,
                             "%s/%s.png" % (control.imagesPath, tag), None,
                             "%s?action=browse-tag-item&&tag=%s" % (sys.argv[0], tag))
     control.directory_end()
     return
Beispiel #34
0
 def infoCheck(self, version):
     try:
         control.infoDialog('',
                            control.lang(32074).encode('utf-8'),
                            time=5000,
                            sound=False)
         return '1'
     except:
         return '1'
Beispiel #35
0
def add_next_page(item_url, page):
    list_item = control.item(text_green % (control.lang(30500) % page),
                             iconImage=icon_next,
                             thumbnailImage=icon_next)
    control.addItem(handle=int(sys.argv[1]),
                    url=item_url,
                    listitem=list_item,
                    isFolder=True)
    return
def add_next_page(bs, item_url, page):
    ul_paging = bs.find("ul", {"class": "paging"})
    if ul_paging is not None:
        list_item = control.item(
            "[B][UPPERCASE][COLOR green]%s[/COLOR][/UPPERCASE][/B]" % control.lang(30503) % page,
            iconImage=icon_next,
            thumbnailImage=icon_next,
        )
        control.addItem(handle=int(sys.argv[1]), url=item_url, listitem=list_item, isFolder=True)
    return
Beispiel #37
0
        def onClick(self, control2):
            print 'onClick: %s' % (control2)
            if control2 == AUTH_BUTTON:
                if not self.__get_token():
                    control.infoDialog('Trakt PIN Authorization Failed.', 'Trakt ERROR')
                    return
                self.auth = True
                self.close()

            if control2 == LATER_BUTTON:
                control.infoDialog(control.lang(32157) + control.lang(32150))
                control.set_setting('last_reminder', str(int(time.time())))

            if control == NEVER_BUTTON:
                control.infoDialog(control.lang(32157) + control.lang(32151))
                control.set_setting('last_reminder', '-1')

            if control in [AUTH_BUTTON, LATER_BUTTON, NEVER_BUTTON]:
                self.close()
    def play_video(self):
        # Get current list item details...
        title = unicode(xbmc.getInfoLabel("ListItem.Title"), "utf-8")
        thumbnail = xbmc.getInfoImage("ListItem.Thumb")
        studio = unicode(xbmc.getInfoLabel("ListItem.Studio"), "utf-8")
        plot = unicode(xbmc.getInfoLabel("ListItem.Plot"), "utf-8")
        genre = unicode(xbmc.getInfoLabel("ListItem.Genre"), "utf-8")

        # Show wait dialog while parsing data...
        dialog_wait = xbmcgui.DialogProgress()
        dialog_wait.create(control.lang(30504), title)

        # Get video URL and subtitles ...
        video_url, subtitle_urls = self.get_video_url_and_subtitles(self.video_page_url)

        if video_url is None:
            # Close wait dialog...
            dialog_wait.close()
            del dialog_wait

            # Message...
            xbmcgui.Dialog().ok(control.lang(30000), control.lang(30505))
            return

        # Play video...
        playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        playlist.clear()

        list_item = xbmcgui.ListItem(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
        list_item.setInfo("video", {"Title": title, "Studio": studio, "Plot": plot, "Genre": genre})
        list_item.setSubtitles(subtitle_urls)

        playlist.add(video_url, list_item)

        # Close wait dialog...
        dialog_wait.close()
        del dialog_wait

        # Play video...
        xbmc_player = xbmc.Player()
        xbmc_player.play(playlist)
        return
    def play_video(self):
        # Get current list item details...
        title = unicode(xbmc.getInfoLabel("ListItem.Title"), "utf-8")
        thumbnail = xbmc.getInfoImage("ListItem.Thumb")
        studio = unicode(xbmc.getInfoLabel("ListItem.Studio"), "utf-8")
        plot = unicode(xbmc.getInfoLabel("ListItem.Plot"), "utf-8")
        genre = unicode(xbmc.getInfoLabel("ListItem.Genre"), "utf-8")
        total_time = unicode(xbmc.getInfoLabel("ListItem.EndTime"), "utf-8")
        dbid = unicode(xbmc.getInfoLabel("ListItem.DBID"), "utf-8")

        # Show wait dialog while parsing data...
        dialog_wait = xbmcgui.DialogProgress()
        dialog_wait.create(control.lang(30504), title)

        if self.video_url is None:
            # Close wait dialog...
            dialog_wait.close()
            del dialog_wait

            # Message...
            xbmcgui.Dialog().ok(control.lang(30000), control.lang(30505))
            return

        # Play video...
        # playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        # playlist.clear()

        # list_item = xbmcgui.ListItem(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
        # list_item.setInfo("video", {"Title": title, "Studio": studio, "Plot": plot, "Genre": genre})
        # playlist.add(self.video_url, list_item)

        # Close wait dialog...
        dialog_wait.close()
        del dialog_wait

        # Play video...
        # xbmc_player = xbmc.Player()

        player().run({"url": self.video_url, "thumb": thumbnail, "plot": plot, "genre": genre, "title": title,
                    "endTime": total_time, "dbid": dbid})
        # xbmc_player.play(playlist)
        return
    def onPlayBackStarted(self):
        for i in range(0, 200):
            if control.condVisibility('Window.IsActive(busydialog)') == 1:
                control.idle()
            else:
                break
            control.sleep(100)

        if control.setting('playback_info') == 'true':
            elapsedTime = '%s %s %s' % (control.lang(30464).encode('utf-8'), int((time.time() - self.loadingTime)),
                                        control.lang(30465).encode('utf-8'))
            control.infoDialog(elapsedTime, heading=self.title)

        try:
            if self.offset == '0':
                raise Exception()
            self.seekTime(float(self.offset))
        except Exception, e:
            print str(e)
            pass
Beispiel #41
0
def cache_clear():
    try:
        control.cacheFile_lock.acquire()
        cursor = _get_connection_cursor(control.cacheFile)

        for t in [cache_table, 'rel_list', 'rel_lib']:
            try:
                cursor.execute("DROP TABLE IF EXISTS %s" % t)
                cursor.execute("VACUUM")
                cursor.connection.commit()
            except:
                pass
        control.showDialog.notification('{}: {}'.format(
            control.ADDON_NAME, control.lang(30200)),
                                        control.lang(30201),
                                        time=5000)
    except:
        pass
    finally:
        control.try_release_lock(control.cacheFile_lock)
    def __init__(self):
        # Parse parameters...
        params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
        self.current_page = int(params.get("page", "1"))
        self.sort_method = urllib.unquote_plus(params.get("sort", "NONE"))
        self.url = "https://channel9.msdn.com/Browse/AllContent?sort=%s&page=%i&%s"

        utils.set_no_sort()

        if self.sort_method == control.lang(30701):  # recent
            self.sort = "recent"
            self.get_entries()
        elif self.sort_method == control.lang(30702):  # viewed
            self.sort = "viewed"
            self.get_entries()
        elif self.sort_method == control.lang(30703):  # rating
            self.sort = "rating"
            self.get_entries()
        else:
            self.browse()
        return
    def search(self):
        if self.search_term is None or self.search_term == '':
            t = control.lang(30201).encode('utf-8')
            k = control.keyboard('', t)
            k.doModal()
            self.search_term = k.getText() if k.isConfirmed() else None

        if self.search_term is None or self.search_term == '':
            return

        self.browse()
        return
def selected_languages():
    langs = ""
    setting_lang_items = control.lang(30602).split(",")
    for lang_item in setting_lang_items:
        lang_enabled = control.setting(lang_item)
        if lang_enabled == "true":
            langs += "lang=%s&" % lang_item

    if langs == "" or langs is None:
        return "lang=en"

    return langs[:-1]
    def play_video(self):
        # Get current list item details...
        title = unicode(xbmc.getInfoLabel("ListItem.Title"), "utf-8")
        thumbnail = xbmc.getInfoImage("ListItem.Thumb")
        studio = unicode(xbmc.getInfoLabel("ListItem.Studio"), "utf-8")
        plot = unicode(xbmc.getInfoLabel("ListItem.Plot"), "utf-8")
        genre = unicode(xbmc.getInfoLabel("ListItem.Genre"), "utf-8")

        # Show wait dialog while parsing data...
        dialog_wait = xbmcgui.DialogProgress()
        dialog_wait.create(control.lang(30504), title)

        # Get video URL...
        video_url = self.get_video_url(self.video_page_url)

        if video_url is None:
            # Close wait dialog...
            dialog_wait.close()
            del dialog_wait

            # Message...
            xbmcgui.Dialog().ok(control.lang(30000), control.lang(30505))
            return

        # Play video...
        playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        playlist.clear()

        list_item = xbmcgui.ListItem(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
        list_item.setInfo("video", {"Title": title, "Studio": studio, "Plot": plot, "Genre": genre})
        playlist.add(video_url, list_item)

        # Close wait dialog...
        dialog_wait.close()
        del dialog_wait

        # Play video...
        xbmc_player = xbmc.Player()
        xbmc_player.play(playlist)
        return
    def __init__(self):
        # Parse parameters...
        params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
        self.current_page = int(params.get("page", "1"))
        self.action = params.get("action", None)
        self.sort_method = urllib.unquote_plus(params.get("sort", "NONE"))
        self.event_url = urllib.unquote_plus(params.get("event-url", ""))
        self.browse_url = "%s/Browse/Events?sort=%s&page=%i&%s"

        utils.set_no_sort()

        if self.action is None or self.action == "browse-events":
            if self.sort_method == control.lang(30701):  # recent
                self.sort = "recent"
            elif self.sort_method == control.lang(30704):  # atoz
                self.sort = "atoz"
            else:
                self.show_sort()
                return
            self.browse()
            return
        elif self.action == "browse-live":
            self.sort = "current"
            self.live()
            return
        elif self.action == "list-event":
            if self.sort_method == control.lang(30701):  # recent
                self.sort = ""
            elif self.sort_method == control.lang(30702):  # viewed
                self.sort = "viewed"
            elif self.sort_method == control.lang(30703):  # rating
                self.sort = "rating"
                self.sort_dir = "asc"
            else:
                self.show_list_sort()
                return
            self.list()
            return
        print "fail: action=%s&event-url=%s" % (self.action, self.event_url)
        return
def language_filter():
    # {SelectOnField: "LCID", SelectTerm: "1045", SelectMatchOption: 2}
    result = []
    setting_lang_items = control.lang(30600).split(",")
    for lang_item in setting_lang_items:
        lang_enabled = control.setting(lang_item)
        if lang_enabled == "true":
            result.append({"SelectOnField": "LCID", "SelectTerm": "%s" % lang_item, "SelectMatchOption": 2})

    if not result:
        return default_lanugage

    return result
    def __init__(self):
        # Parse parameters...
        params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
        self.current_page = int(params.get("page", "1"))
        self.action = params.get("action", None)
        # self.sort_method = params.get("sort", control.infoLabel("Container.SortMethod"))
        self.sort_method = urllib.unquote_plus(params.get("sort", "NONE"))
        self.tag_url = urllib.unquote_plus(params.get("tag-url", ""))
        self.browse_url = "%s/Browse/Tags/firstLetter/%s/json"
        self.tag = urllib.unquote_plus(params.get("tag", ""))

        if self.tag == '#':
            self.tag = 'more'

        utils.set_no_sort()

        if self.action is None or self.action == "browse-tags":
            self.tags_alpha()
            return
        elif self.action == "browse-tag-item":
            self.browse()
            return
        elif self.action == "list-tag":
            if self.sort_method == control.lang(30701):  # recent
                self.sort = "recent"
            elif self.sort_method == control.lang(30702):  # viewed
                self.sort = "viewed"
            elif self.sort_method == control.lang(30703):  # rating
                self.sort = "rating"
            else:
                self.show_list_sort()
                return
            self.list()
            return
        print "fail: action=%s&tag-url=%s" % (self.action, self.tag_url)
        return
    def __init__(self):
        utils.set_no_sort()

        # All
        utils.add_directory(control.lang(30401), utils.icon_all, None,
                            "%s?action=list-all" % (sys.argv[0]))
        # Live
        utils.add_directory(control.lang(30407), utils.icon_event, None,
                            "%s?action=browse-live" % (sys.argv[0]))
        # Events
        utils.add_directory(control.lang(30405), utils.icon_event, None,
                            "%s?action=browse-events" % (sys.argv[0]))
        # Shows
        utils.add_directory(control.lang(30403), utils.icon_tv, None,
                            "%s?action=browse-shows" % (sys.argv[0]))
        # Series
        utils.add_directory(control.lang(30404), utils.icon_tv, None,
                            "%s?action=browse-series" % (sys.argv[0]))
        # Tags
        utils.add_directory(control.lang(30402), utils.icon_tag, None,
                            "%s?action=browse-tags" % (sys.argv[0]))
        # Blogs
        utils.add_directory(control.lang(30406), utils.icon_blog, None,
                            "%s?action=browse-blogs" % (sys.argv[0]))
        # Authors
        utils.add_directory(control.lang(30408), utils.icon_user, None,
                            "%s?action=browse-authors" % (sys.argv[0]))
        # Search
        utils.add_directory(control.lang(30409), utils.icon_search, None,
                            "%s?action=search" % (sys.argv[0]))
        # Search
        utils.add_directory("[B][COLOR green]%s[/COLOR][/B]" % control.lang(30410), utils.icon_cog, None,
                            "%s?action=settings" % (sys.argv[0]))

        control.directory_end()
        return
Beispiel #50
0
    def onPlayBackStarted(self):
        if control.setting('playback_info') == 'true':
            elapsedTime = '%s %s seconds' % (control.lang(30309).encode('utf-8'), int((time.time() - self.loadingTime)))
            control.infoDialog(elapsedTime, heading=self.name)

        try:
            if self.offset == '0': raise Exception()
            self.seekTime(float(self.offset))
        except:
            pass
        try:
            if not control.setting('subtitles') == 'true': raise Exception()
            try: subtitle = subtitles.get(self.name, self.imdb, self.season, self.episode)
            except: subtitle = subtitles.get(self.name, self.imdb, '', '')
        except:
            pass
    def browse_section(self):
        meta = utils.get_course_meta()
        utils.add_directory(utils.text_green % control.lang(30501), utils.icon_search, utils.icon_search,
                            "%s?action=search&section=%s" % (sys.argv[0], self.section))

        for m in meta["sections"]:
            header = m["header"]
            if header == self.section:
                infos = m["narrowByInfos"]
                for info in infos:
                    count = info["count"]
                    name = info["name"].encode('utf-8')
                    utils.add_directory("%s (%i)" % (name, count), self.icon, self.icon,
                                        "%s?action=browse-group&group=%s&section=%s&page=1" % (
                                            sys.argv[0], urllib.quote_plus(name, safe=':/'),
                                            urllib.quote_plus(self.section, safe=':/')))
        control.directory_end(False)
        return
    def browse(self):
        # recent
        utils.add_directory(control.lang(30701), utils.icon_folder, None, "%s?action=list-all&page=%i&sort=%s" % (
            sys.argv[0], 1, urllib.quote_plus(control.lang(30701))))
        # viewed
        utils.add_directory(control.lang(30702), utils.icon_folder, None, "%s?action=list-all&page=%i&sort=%s" % (
            sys.argv[0], 1, urllib.quote_plus(control.lang(30702))))
        # rating
        utils.add_directory(control.lang(30703), utils.icon_folder, None, "%s?action=list-all&page=%i&sort=%s" % (
            sys.argv[0], 1, urllib.quote_plus(control.lang(30703))))

        control.directory_end()
        return
Beispiel #53
0
    def getVideoInfo(self, content, name, imdb, tvdb):
        try:
            self.loadingTime = time.time()
            self.totalTime = 0 ; self.currentTime = 0
            self.folderPath = control.infoLabel('Container.FolderPath')
            self.name = name ; self.content = content
            self.file = self.name + '.strm'
            self.file = self.file.translate(None, '\/:*?"<>|').strip('.')
            self.imdb = 'tt' + imdb if imdb.isdigit() else imdb
            self.tvdb = tvdb if not tvdb == None else '0'
        except:
            pass

        try:
            if self.content == 'movie':
                self.title, self.year = re.compile('(.+?) [(](\d{4})[)]$').findall(self.name)[0]
            elif self.content == 'episode':
                self.show, self.season, self.episode = re.compile('(.+?) S(\d*)E(\d*)$').findall(self.name)[0]
                self.season, self.episode = '%01d' % int(self.season), '%01d' % int(self.episode)
        except:
            pass

        try:
            if control.setting('resume_playback') == 'true':
                self.offset = bookmarks.getBookmark(self.name, self.imdb)
                if self.offset == '0': raise Exception()

                minutes, seconds = divmod(float(self.offset), 60) ; hours, minutes = divmod(minutes, 60)
                yes = control.yesnoDialog('%s %02d:%02d:%02d' % (control.lang(30342).encode('utf-8'), hours, minutes, seconds), '', '', self.name, control.lang(30343).encode('utf-8'), control.lang(30344).encode('utf-8'))

                if yes: self.offset = '0'
        except:
            pass

        try:
            if self.content == 'movie':
                control.window.setProperty('script.trakt.ids', json.dumps({'imdb': self.imdb}))
            elif self.content == 'episode':
                control.window.setProperty('script.trakt.ids', json.dumps({'tvdb': self.tvdb}))
        except:
            pass
 def show_list_sort(self):
     # sequential
     utils.add_directory(control.lang(30706), utils.icon_folder, None,
                         "%s?action=list-series&page=%i&sort=%s&series-url=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30706)),
                             urllib.quote_plus(self.series_url)))
     # recent
     utils.add_directory(control.lang(30701), utils.icon_folder, None,
                         "%s?action=list-series&page=%i&sort=%s&series-url=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30701)),
                             urllib.quote_plus(self.series_url)))
     # viewed
     utils.add_directory(control.lang(30702), utils.icon_folder, None,
                         "%s?action=list-series&page=%i&sort=%s&series-url=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30702)),
                             urllib.quote_plus(self.series_url)))
     # rating
     utils.add_directory(control.lang(30703), utils.icon_folder, None,
                         "%s?action=list-series&page=%i&sort=%s&series-url=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30703)),
                             urllib.quote_plus(self.series_url)))
     control.directory_end()
     return
 def show_list_sort(self):
     # recent
     utils.add_directory(control.lang(30701), utils.icon_folder, None,
                         "%s?action=list-event&page=%i&sort=%s&event-url=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30701)),
                             urllib.quote_plus(self.event_url)))
     # rating
     utils.add_directory(control.lang(30703), utils.icon_folder, None,
                         "%s?action=list-event&page=%i&sort=%s&event-url=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30703)),
                             urllib.quote_plus(self.event_url)))
     # Most Viewed
     utils.add_directory(control.lang(30702), utils.icon_folder, None,
                         "%s?action=list-event&page=%i&sort=%s&event-url=%s" % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30702)),
                             urllib.quote_plus(self.event_url)))
     control.directory_end()
     return
 def show_list_sort(self):
     # recent
     utils.add_directory(control.lang(30701), utils.icon_folder, None,
                         utils.action_list_blog % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30701)),
                         urllib.quote_plus(self.blog_url)))
     # viewed
     utils.add_directory(control.lang(30702), utils.icon_folder, None,
                         utils.action_list_blog % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30702)),
                         urllib.quote_plus(self.blog_url)))
     # rating
     utils.add_directory(control.lang(30703), utils.icon_folder, None,
                         utils.action_list_blog % (
                             sys.argv[0], 1, urllib.quote_plus(control.lang(30703)),
                         urllib.quote_plus(self.blog_url)))
     control.directory_end()
     return
Beispiel #57
0
def download(name, image, url, image2):

    import control

    if url == None:
        return control.infoDialog(control.lang(30501).encode('utf-8'))

    try: headers = dict(urlparse.parse_qsl(url.rsplit('|', 1)[1]))
    except: headers = dict('')

    url = url.split('|')[0]

    content = re.compile('(.+?)\sS(\d*)E\d*$').findall(name)
    p=re.compile("(\[[A-Za-z0-9-_\ \.]+\])")  
    transname = p.match(name.encode("utf-8")).group(1).replace("[", "").replace("]", "")
    levels =['../../../..', '../../..', '../..', '..']

    dest = addon.getSetting('download_path')
    dest = control.transPath(dest)
    for level in levels:
        try: control.makeFile(os.path.abspath(os.path.join(dest, level)))
        except: pass
    control.makeFile(dest)
    dest = os.path.join(dest, transname)
    control.makeFile(dest)
    """ if "/" in dest:
        fo = codecs.open(dest+"/"+transname+".nfo", "a", "utf-8")
    else:
        fo = codecs.open(dest+"\"+transname+".nfo", "a", "utf-8")
    fo.write(u'<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>\n<movie>\n<title>'+name+'</title>\n<genre>JAV</genre>\n</movie>');

    # Close opend file
    fo.close()"""
    
    f =xbmcvfs.File (dest+"/"+transname+".nfo", 'w')
    f.write('<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>\n<movie>\n<title>'+name.encode('utf-8')+'</title>\n<genre>JAV</genre>\n</movie>'.encode('utf-8'))
    f.close()
    
    #f = open(dest+"/fanart.jpg",'wb')
    f =xbmcvfs.File (dest+"/fanart.jpg", 'w')
    f.write(getIMAGE(image2).read())
    f.close()
    
    f =xbmcvfs.File (dest+"/poster.jpg", 'w')
    #f = open(dest+"/poster.jpg",'wb')
    f.write(getIMAGE(image).read())
    f.close()

    ext = os.path.splitext(urlparse.urlparse(url).path)[1][1:]
    if not ext in ['mp4', 'mkv', 'flv', 'avi', 'mpg']: ext = 'mp4'
    dest = os.path.join(dest, transname.decode('utf-8') + '.' + ext)

    sysheaders = urllib.quote_plus(json.dumps(headers))

    sysurl = urllib.quote_plus(url)

    systitle = urllib.quote_plus(name.encode('utf-8'))

    sysimage = urllib.quote_plus(image)

    sysdest = urllib.quote_plus(dest)

    script = inspect.getfile(inspect.currentframe())
    cmd = 'RunScript(%s, %s, %s, %s, %s, %s)' % (script, sysurl, sysdest, systitle, sysimage, sysheaders)

    xbmc.executebuiltin(cmd)