예제 #1
0
def display_list(items, content_type, pins=False):
    "display jen list in kodi"
    logging.warning('DISPLAY LIST')
    logging.warning(pins)
    if ADDON.getSetting("enable_cache") == "true" and pins:
        Items = fetch_from_db(pins)
        if Items:
            import xbmcplugin
            import sys
            display_code(items, content_type)
        elif not Items:
            import xbmcplugin
            import sys
            hook_result = run_hook("display_list", items, content_type, pins)
            if hook_result:
                return
            pins = pins.lower()
            save_to_db(items, pins)
            display_code(items, content_type)
    else:
        import xbmcplugin
        logging.warning('Else in')
        import sys
        hook_result = run_hook("display_list", items, content_type, pins)
        if hook_result:
            return
        display_code(items, content_type)
    logging.warning('DISPLAY LIST')
    if not pins:
        display_data(Items)
예제 #2
0
파일: default.py 프로젝트: bopopescu/repo-1
def clear_cache():
    import xbmcgui
    skip_prompt = xbmcaddon.Addon().getSetting("quiet_cache")
    dialog = xbmcgui.Dialog()
    if skip_prompt == 'false':
        if dialog.yesno(addon_name, _("Clear Metadata?")):
            koding.Remove_Table("meta")
            koding.Remove_Table("episode_meta")
        if dialog.yesno(addon_name, _("Clear Scraper Cache?")):
            import universalscrapers
            universalscrapers.clear_cache()
        if dialog.yesno(addon_name, _("Clear GIF Cache?")):
            dest_folder = os.path.join(
                xbmc.translatePath(xbmcaddon.Addon().getSetting("cache_folder")),
                "artcache")
            koding.Delete_Folders(dest_folder)
    else:
        koding.Remove_Table("meta")
        koding.Remove_Table("episode_meta")
        import universalscrapers
        universalscrapers.clear_cache()
        dest_folder = os.path.join(
            xbmc.translatePath(xbmcaddon.Addon().getSetting("cache_folder")),
            "artcache")
        koding.Delete_Folders(dest_folder)

    xbmc.log("running hook: clear cache", xbmc.LOGNOTICE)
    run_hook("clear_cache")
    xbmcgui.Dialog().notification('Clear Cache', 'Cache has been cleared',xbmcaddon.Addon().getAddonInfo("icon"), 4000)
예제 #3
0
def clear_cache():
    import xbmcgui
    skip_prompt = xbmcaddon.Addon().getSetting("quiet_cache")
    dialog = xbmcgui.Dialog()
    if skip_prompt == 'false':
        if dialog.yesno(addon_name, _("Clear Metadata?")):
            koding.Remove_Table("meta")
            koding.Remove_Table("episode_meta")
        if dialog.yesno(addon_name, _("Clear GIF Cache?")):
            dest_folder = os.path.join(
                xbmc.translatePath(
                    xbmcaddon.Addon().getSetting("cache_folder")), "artcache")
            koding.Delete_Folders(dest_folder)
        if dialog.yesno(addon_name, _("Clear Main Cache?")):
            res = koding.Get_All_From_Table("Table_names")
            for results in res:
                table_nm = results['name']
                print table_nm
                koding.Remove_Table(table_nm)
        if dialog.yesno(addon_name, _("Clear Plugin Cache?")):
            res = koding.Get_All_From_Table("Plugin_table_names")
            for results in res:
                table_nm = results['name']
                print table_nm
                koding.Remove_Table(table_nm)
    else:
        koding.Remove_Table("meta")
        koding.Remove_Table("episode_meta")
        dest_folder = os.path.join(
            xbmc.translatePath(xbmcaddon.Addon().getSetting("cache_folder")),
            "artcache")
        koding.Delete_Folders(dest_folder)
        res = koding.Get_All_From_Table("Table_names")
        for results in res:
            table_nm = results['name']
            print table_nm
            koding.Remove_Table(table_nm)
        res = koding.Get_All_From_Table("Plugin_table_names")
        for results in res:
            table_nm = results['name']
            print table_nm
            koding.Remove_Table(table_nm)

    db = sqlite3.connect('%s' % (database_loc))
    cursor = db.cursor()
    db.execute("vacuum")
    db.commit()
    db.close()
    xbmc.log("running hook: clear cache", xbmc.LOGNOTICE)
    run_hook("clear_cache")
    xbmcgui.Dialog().notification('Clear Cache', 'Cache has been cleared',
                                  xbmcaddon.Addon().getAddonInfo("icon"), 4000)
예제 #4
0
파일: default.py 프로젝트: Lestander/eggman
def clear_cache():
    import xbmcgui
    dialog = xbmcgui.Dialog()
    if dialog.yesno(addon_name, _("Clear Metadata?")):
        koding.Remove_Table("meta")
        koding.Remove_Table("episode_meta")
    if dialog.yesno(addon_name, _("Clear Scraper Cache?")):
        import nanscrapers
        nanscrapers.clear_cache()
    if dialog.yesno(addon_name, _("Clear GIF Cache?")):
        dest_folder = os.path.join(
            xbmc.translatePath(xbmcaddon.Addon().getSetting("cache_folder")),
            "artcache")
        koding.Delete_Folders(dest_folder)
    run_hook("clear_cache")
예제 #5
0
def clear_cache():
    import xbmcgui
    dialog = xbmcgui.Dialog()
    if dialog.yesno(addon_name, _("Clear Metadata?")):
        koding.Remove_Table("meta")
        koding.Remove_Table("episode_meta")
    if dialog.yesno(addon_name, _("Clear Scraper Cache?")):
        import universalscrapers
        universalscrapers.clear_cache()
    if dialog.yesno(addon_name, _("Clear GIF Cache?")):
        dest_folder = os.path.join(
            xbmc.translatePath(xbmcaddon.Addon().getSetting("cache_folder")),
            "artcache")
        koding.Delete_Folders(dest_folder)
    xbmc.log("running hook: clear cache", xbmc.LOGNOTICE)
    run_hook("clear_cache")
예제 #6
0
def display_list(items, content_type):
    "display jen list in kodi"
    import xbmcplugin
    import sys
    hook_result = run_hook("display_list", items, content_type)
    if hook_result:
        return
    for item in items:
        context_items = []
        if ADDON.getSetting("settings_context") == "true":
            context_items.append((_("Settings"),
                                 "RunPlugin({0})".format(
                                     get_addon_url("Settings"))))
        context_items.extend(item["context"])
        koding.Add_Dir(
            name=item["label"],
            url=item["url"],
            mode=item["mode"],
            folder=item["folder"],
            icon=item["icon"],
            fanart=item["fanart"],
            context_items=context_items,
            content_type="video",
            info_labels=item["info"],
            set_property=item.get("properties", {}),
            set_art={"poster": item["icon"]})
        # xbmcgui.Dialog().textviewer('info',str(item["info"]))
    xbmcplugin.setContent(int(sys.argv[1]), content_type)
예제 #7
0
def display_list(items, content_type):
    "display jen list in kodi"
    import xbmcplugin
    import sys
    hook_result = run_hook("display_list", items, content_type)
    if hook_result:
        return
    for item in items:
        context_items = []
        if ADDON.getSetting("settings_context") == "true":
            context_items.append(
                (_("Settings"),
                 "RunPlugin({0})".format(get_addon_url("Settings"))))
        context_items.extend(item["context"])
        koding.Add_Dir(name=item["label"],
                       url=item["url"],
                       mode=item["mode"],
                       folder=item["folder"],
                       icon=item["icon"],
                       fanart=item["fanart"],
                       context_items=context_items,
                       content_type="video",
                       info_labels=item["info"],
                       set_property=item.get("properties", {}),
                       set_art={"poster": item["icon"]})
    xbmcplugin.setContent(int(sys.argv[1]), content_type)
예제 #8
0
def clear_scraper_cache():
    import xbmcgui
    dialog = xbmcgui.Dialog()
    try:
        import universalscrapers
        universalscrapers.clear_cache()
    except:
        pass
    db = sqlite3.connect('%s' % (database_loc))
    cursor = db.cursor()
    db.execute("vacuum")
    db.commit()
    db.close()
    xbmc.log("running hook: clear cache", xbmc.LOGNOTICE)
    run_hook("clear_cache")
    xbmcgui.Dialog().notification('Clear Scraper Cache',
                                  'Scraper Cache has been cleared',
                                  xbmcaddon.Addon().getAddonInfo("icon"), 4000)
예제 #9
0
    def __init__(self, url, cached=True):
        if cached:
            xml = run_hook("get_xml", url)
        else:
            xml = run_hook("get_xml_uncached", url)
        if not xml:
            if url.endswith(".xml") or url.startswith("http"):
                try:
                    xml = requests.get(url).content
                except Exception as e:
                    xml = None
                    koding.dolog("error: " + repr(e))
                    koding.dolog("url: " + repr(url))
                    koding.dolog("#####################")
            else:
                xml = url
        if xml:
            self.xml = xml
            self.content = ""

            self.list = JenList.list_pattern.findall(xml)
            info = JenItem(xml.split('<item>')[0].split('<dir>')[0])
            intro = info.get("intro", "")
            if intro:
                import resources.lib.sources as sources
                sources.get_sources(intro)
            self.playlister = info.get('poster', '0')
            self.list_image = replace_url(info.get("animated_thumbnail", ""))
            if not self.list_image:
                self.list_image = replace_url(
                    info.get('thumbnail', ADDON.getAddonInfo('icon')))
            self.list_fanart = replace_url(info.get("animated_fanart", ""))
            if not self.list_fanart:
                self.list_fanart = replace_url(info.get('fanart', "0"))
            if self.list_fanart == "0":
                theme = xbmcaddon.Addon().getSetting('theme')
                if theme and theme != 'DEFAULT' and theme != 'none':
                    self.list_fanart = self.set_theme(theme)
                else:
                    self.list_fanart = xbmcaddon.Addon().getAddonInfo('fanart')
            self.metadata = {}
        else:
            self.list = []
예제 #10
0
 def __init__(self, url, cached=True):
     if cached:
         xml = run_hook("get_xml", url)
     else:
         xml = run_hook("get_xml_uncached", url)
     if not xml:
         if url.endswith(".xml") or url.startswith("http"):
             try:
                 xml = requests.get(url).content
             except Exception as e:
                 xml = None
                 koding.dolog("error: " + repr(e))
                 koding.dolog("url: " + repr(url))
                 koding.dolog("#####################")
         else:
             xml = url
     if xml:
         self.xml = xml
         self.content = ""
         self.list = JenList.list_pattern.findall(xml)
         info = JenItem(xml.split('<item>')[0].split('<dir>')[0])
         intro = info.get("intro", "")
         if intro:
             import resources.lib.sources as sources
             sources.get_sources(intro)
         self.playlister = info.get('poster', '0')
         self.list_image = replace_url(info.get("animated_thumbnail", ""))
         if not self.list_image:
             self.list_image = replace_url(
                 info.get('thumbnail', ADDON.getAddonInfo('icon')))
         self.list_fanart = replace_url(info.get("animated_fanart", ""))
         if not self.list_fanart:
             self.list_fanart = replace_url(info.get('fanart', "0"))
         if self.list_fanart == "0":
             theme = xbmcaddon.Addon().getSetting('theme')
             if theme and theme != 'DEFAULT' and theme != 'none':
                 self.list_fanart = self.set_theme(theme)
             else:
                 self.list_fanart = xbmcaddon.Addon().getAddonInfo('fanart')
         self.metadata = {}
     else:
         self.list = []
예제 #11
0
def get_info(items, dialog=None):
    from resources.lib.util.xml import JenItem
    result = run_hook("get_info", items, dialog)
    if result:
        return result
    koding.reset_db()
    info = []
    num_items = len(items)
    for index, item_xml in enumerate(items):
        if dialog:
            if dialog.iscanceled():
                dialog.close()
                break
            percent = ((index + 1) * 100) / num_items
            dialog.update(
                percent,
                _("[COLORred]processing list, please be patient.....[/COLOR]"),
                "%s of %s" % (index + 1, num_items))
        if type(item_xml) == dict:
            item = item_xml
        else:
            item = JenItem(item_xml)
        item_info = {}
        content = item.get("content", "")
        try:
            if content == "movie":
                item_info = get_movie_metadata(item["imdb"])
            elif content in ["tvshow", "season"]:
                item_info = get_show_metadata(item["imdb"])
            elif content == "episode":
                item_info = get_episode_metadata(item["imdb"], item["season"],
                                                 item["episode"])
            if type(item_info) == list:
                item_info = {}
            if not item_info.get("plotoutline", None):
                item_info["plotoutline"] = item_info.get("plot", "")
        except Exception as e:
            koding.dolog("info error: " + repr(e))
        summary = item.get("summary", False)
        if summary:
            if not item_info or type(item_info) != dict:
                item_info = {}
            item_info["plot"] = summary
            item_info["manual"] = True

        info.append(item_info)
    if dialog:
        dialog.close()
    tvdb.clear_cache()
    return info
예제 #12
0
def display_list(items, content_type, pins):
    "display jen list in kodi"
    if ADDON.getSetting("enable_cache") == "true":
        Items = fetch_from_db(pins)
        if Items:
            import xbmcplugin
            import sys
            display_code(Items, content_type)
        elif not Items:
            import xbmcplugin
            import sys
            hook_result = run_hook("display_list", items, content_type, pins)
            if hook_result:
                return
            save_to_db(items, pins)
            display_code(items, content_type)
    else:
        import xbmcplugin
        import sys
        hook_result = run_hook("display_list", items, content_type, pins)
        if hook_result:
            return
        display_code(items, content_type)
예제 #13
0
def get_link_message():
    """
    helper function to get a random message when selecting links
    """
    import random
    messages = run_hook("get_link_message")
    if not messages:
        messages = [{'HD': '', 'SD': ''}]

    if xbmcaddon.Addon().getSetting('disable_messages') == 'true':
        message = {'HD': '', 'SD': ''}
    else:
        message = random.choice(messages)
    return message
예제 #14
0
파일: url.py 프로젝트: vphuc81/MyRepository
def replace_url(url, replace_gif=True):
    """ replace url with correct one
    replace url to point to correct jen server
    Keyword Arguments:
    url         -- url to replace
    replace_gif -- whether to place gifs into cache to enable motion
                   (default True)
    """
    result = run_hook("replace_url", url)
    if result:
        url = result
    enable_gifs = xbmcaddon.Addon().getSetting('enable_gifs') == "true"
    if enable_gifs and replace_gif:
        return __replace_gif(url)
    return url
예제 #15
0
파일: url.py 프로젝트: KingPug75/repo
def replace_url(url, replace_gif=True):
    """ replace url with correct one
    replace url to point to correct jen server
    Keyword Arguments:
    url         -- url to replace
    replace_gif -- whether to place gifs into cache to enable motion
                   (default True)
    """
    result = run_hook("replace_url", url)
    if result:
        url = result
    enable_gifs = xbmcaddon.Addon().getSetting('enable_gifs') == "true"
    if enable_gifs and replace_gif:
        return __replace_gif(url)
    return url
예제 #16
0
def get_info(items, dialog=None):
    from resources.lib.util.xml import JenItem
    result = run_hook("get_info", items, dialog)
    if result:
        return result
    koding.reset_db()
    info = []
    num_items = len(items)
    for index, item_xml in enumerate(items):
        if dialog:
            if dialog.iscanceled():
                dialog.close()
                break
            percent = ((index + 1) * 100) / num_items
            dialog.update(percent, _("processing metadata"),
                          "%s of %s" % (index + 1, num_items))
        if type(item_xml) == dict:
            item = item_xml
        else:
            item = JenItem(item_xml)
        item_info = {}
        content = item.get("content", "")
        try:
            if content == "movie":
                item_info = get_movie_metadata(item["imdb"])
            elif content in ["tvshow", "season"]:
                item_info = get_show_metadata(item["imdb"])
            elif content == "episode":
                item_info = get_episode_metadata(item["imdb"], item["season"],
                                                 item["episode"])
            if type(item_info) == list:
                item_info = {}
            if not item_info.get("plotoutline", None):
                item_info["plotoutline"] = item_info.get("plot", "")
        except Exception as e:
            koding.dolog("info error: " + repr(e))
        summary = item.get("summary", False)
        if summary:
            if not item_info or type(item_info) != dict:
                item_info = {}
            item_info["plot"] = summary
            item_info["manual"] = True

        info.append(item_info)
    if dialog:
        dialog.close()
    tvdb.clear_cache()
    return info
예제 #17
0
def get_searching_message(preset):
    """
    helper function to select a message for video items
    Args:
        preset: search quality preset ("HD", "SD" or None)
    Returns:
        random message for video items
    """
    messages = run_hook("get_searching_message", preset)
    if not messages:
        if xbmcaddon.Addon().getSetting('disable_messages') == "true":
            return ' '
        messages = [
            '',
        ]
    return random.choice(messages)
예제 #18
0
def get_searching_message(preset):
    """
    helper function to select a message for video items
    Args:
        preset: search quality preset ("HD", "SD" or None)
    Returns:
        random message for video items
    """
    messages = run_hook("get_searching_message", preset)
    if not messages:
        if xbmcaddon.Addon().getSetting('disable_messages') == "true":
            return ' '
        messages = [
            '',
        ]
    return random.choice(messages)
예제 #19
0
    def set_theme(theme):
        """set jen theme"""
        import random
        theme_list = run_hook("get_theme_list")

        if theme.lower() == "user":
            user_theme_folder = os.path.join(
                xbmc.translatePath(
                    xbmcaddon.Addon().getSetting("cache_folder")), "theme")
            if os.path.isdir(user_theme_folder):
                user_files = []
                for ufile in os.listdir(user_theme_folder):
                    if os.path.isfile(os.path.join(user_theme_folder, ufile)):
                        user_files.append(
                            os.path.join(user_theme_folder, ufile))
                theme_list["user"] = user_files
            else:
                koding.dolog("huh?: " + repr(theme))
                return xbmcaddon.Addon().getAddonInfo('fanart')
        return replace_url(random.choice(theme_list[theme.lower()]))
예제 #20
0
    def set_theme(theme):
        """set jen theme"""
        import random
        theme_list = run_hook("get_theme_list")

        if theme.lower() == "user":
            user_theme_folder = os.path.join(
                xbmc.translatePath(
                    xbmcaddon.Addon().getSetting("cache_folder")),
                "theme")
            if os.path.isdir(user_theme_folder):
                user_files = []
                for ufile in os.listdir(user_theme_folder):
                    if os.path.isfile(os.path.join(user_theme_folder, ufile)):
                        user_files.append(
                            os.path.join(user_theme_folder, ufile))
                theme_list["user"] = user_files
            else:
                koding.dolog("huh?: " + repr(theme))
                return xbmcaddon.Addon().getAddonInfo('fanart')
        return replace_url(random.choice(theme_list[theme.lower()]))
예제 #21
0
def get_link_message():
    """
    helper function to get a random message when selecting links
    """
    import random
    messages = run_hook("get_link_message")
    if not messages:
        messages = [
            {
                'HD': '',
                'SD': ''
            }
        ]

    if xbmcaddon.Addon().getSetting('disable_messages') == 'true':
        message = {
            'HD': '',
            'SD': ''
        }
    else:
        message = random.choice(messages)
    return message
예제 #22
0
def do_search(term=None):
    import os
    import xbmc
    import xbmcgui
    import time
    import datetime
    import urllib2
    import shutil

    search_term = term.lower()

    result = run_hook("do_search", search_term)
    if result:
        display_list(result, "videos")
        return
    jenlist = JenList("")
    jenlist.list_image = xbmcaddon.Addon().getAddonInfo('icon')
    theme = xbmcaddon.Addon().getSetting('theme')
    if theme and theme != 'DEFAULT' and theme != 'none':
        jenlist.list_fanart = jenlist.set_theme(theme)
    else:
        jenlist.list_fanart = xbmcaddon.Addon().getAddonInfo('fanart')
    result_list = []
    exact_result_list = []
    item_xml_result_list = []
    exact_item_xml_result_list = []
    dest_file = os.path.join(
        xbmc.translatePath(xbmcaddon.Addon().getSetting("cache_folder")),
        "search.db")

    url = __builtin__.search_db_location
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    try:
        changed = response.headers["Last-Modified"]
        changed_struct = time.strptime(changed, "%a, %d %b %Y %H:%M:%S GMT")
        epoch_changed = int(time.mktime(changed_struct))
        if not os.path.exists(dest_file) or \
           int(os.path.getmtime(dest_file)) < epoch_changed:
            dp = xbmcgui.DialogProgress()
            dp.create(_('Loading database file'), _('Please Wait'))
            if response.getcode() == 200:
                with open(dest_file, 'wb') as out_file:
                    shutil.copyfileobj(response, out_file)
                if os.path.getsize(dest_file) == 0:
                    koding.dolog("0 size db: " + repr(dest_file))
                    os.remove(dest_file)
            dp.close()
    except:  # server down
        if not os.path.exists(dest_file):
            import xbmcgui
            addon_name = xbmcaddon.Addon().getAddonInfo('name')
            xbmcgui.Dialog().ok(
                addon_name, _("no local file found, and server seems down"))
            dp.close()
    response.close()

    results = koding.DB_Query(
        dest_file,
        'SELECT * from search where item like "%%%s%%"' % search_term)
    for result in results:
        item = jenlist.process_item(result["item"])
        playlister = result["poster"]
        title = item["label"].lower()
        if search_term in title:
            item["info"] = {}
            try:
                item['label'] = '{0} - {1}'.format(playlister, item["label"])
            except:
                import xbmc
                koding.dolog("playlister: " + repr(playlister))
                koding.dolog("label:" + repr(item["lable"]))
                koding.dolog("item: " + repr(item))
                raise Exception()
            if title.startswith(search_term + " "):
                exact_result_list.append(item)
                exact_item_xml_result_list.append(result["item"])
                continue
            result_list.append(item)
            item_xml_result_list.append(result["item"])
    meta = xbmcaddon.Addon().getSetting("metadata") == "true"
    if meta:
        # TODO find way to get it all in single cal
        info = get_info(exact_item_xml_result_list)
        if info:
            for index, item in enumerate(exact_result_list):
                item["info"].update(info[index])

        info = get_info(item_xml_result_list)
        if info:
            for index, item in enumerate(result_list):
                item["info"].update(info[index])
    exact_result_list = sorted(exact_result_list, key=lambda item: title)
    exact_result_list.extend(sorted(result_list, key=lambda item: title))
    display_list(exact_result_list, "videos")
예제 #23
0
파일: xml.py 프로젝트: vphuc81/MyRepository
# -*- coding: utf-8 -*-
예제 #24
0
def get_context_items(item):
    """generate context menu for item
    Keyword Arguments:
    item -- JenItem to generate menu for
    """
    context = []
    content = item["content"]
    # cache
    if content == "":
        context.append((_("Try Uncached"),
                        "Container.Update({0})".format(
                            get_addon_url("get_list_uncached", item["link"]))))
    # information
    context.append((xbmcaddon.Addon().getLocalizedString(30708),
                    "XBMC.Action(Info)"))

    # view modes
    if content == "movie":
        context.append((_("Set Movie View"),
                        "RunPlugin({0})".format(
                            get_addon_url("save_view_mode", "movies"))))
    elif content == "tvshow":
        context.append((_("Set TV Show View"),
                        "RunPlugin({0})".format(
                            get_addon_url("save_view_mode", "tvshows"))))
    elif content == "season":
        context.append((_("Set Season View"),
                        "RunPlugin({0})".format(
                            get_addon_url("save_view_mode", "seasons"))))
    elif content == "episode":
        context.append((_("Set Episode View"),
                        "RunPlugin({0})".format(
                            get_addon_url("save_view_mode", "episodes"))))
    else:
        context.append((_("Set View"),
                        "RunPlugin({0})".format(
                            get_addon_url("save_view_mode", "other"))))

    # extended info mod/qlickplay
    if xbmc.getCondVisibility("system.hasaddon(script.qlickplay)") or \
       xbmc.getCondVisibility("system.hasaddon(script.extendedinfo)"):
        if content == "movie":
            context.append((_("Extended info"),
                            "RunPlugin({0})".format(
                                get_addon_url("movie_extended_info",
                                              item["imdb"]))))
        elif content == "tvshow":
            context.append((_("Extended info"),
                            "RunPlugin({0})".format(
                                get_addon_url("tvshow_extended_info",
                                              item["imdb"]))))
        elif content == "season":
            url = "{'imdb': '%s', 'season': %s}" %\
                  (item["imdb"], item["season"])
            context.append((_("Extended info"),
                            "RunPlugin({0})".format(
                                get_addon_url("season_extended_info",
                                              url))))
        elif content == "episode":
            url = "{'imdb': '%s', 'season': %s, 'episode': %s}" %\
                  (item["imdb"], item["season"], item["episode"])
            context.append((_("Extended info"),
                            "RunPlugin({0})".format(
                                get_addon_url("episode_extended_info",
                                              url))))

    # queue
    playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
    if playlist.size() > 0:
        context.append((_("Play Queue"),
                        "RunPlugin({0})".format(
                            get_addon_url("play_queue"))))
        context.append((_('Show Queue'),
                        'Action("Playlist")'))
        context.append((_("Clear Queue"),
                        "RunPlugin({0})".format(
                            get_addon_url("clear_queue"))))
    try:
        if content == "movie":
            context.append((_("Queue Movie"),
                            "RunPlugin({0})".format(
                                get_addon_url("queue",
                                              item.item_string))))
        elif content == "tvshow":
            context.append((_("Queue TV Show"),
                            "RunPlugin({0})".format(
                                get_addon_url("queue",
                                              item.item_string))))
        elif content == "season":
            context.append((_("Queue Season"),
                            "RunPlugin({0})".format(
                                get_addon_url("queue",
                                              item.item_string))))
        elif content == "episode":
            context.append((_("Queue Episode"),
                            "RunPlugin({0})".format(
                                get_addon_url("queue",
                                              item.item_string))))
        else:
            context.append((_("Queue Item"),
                            "RunPlugin({0})".format(
                                get_addon_url("queue",
                                              item.item_string))))
    except:
        pass

    hook_result = run_hook("get_context_items", item, context)
    if hook_result:
        return hook_result

    return context
예제 #25
0
def get_sources(item):
    """
    get video_link and try to play it
    Keyword Arguments:
    item -- JenItem to try playing
    """
    result = run_hook("get_sources", item)
    if result:
        return
    if item.startswith("<plugin>"):
        # link to plugin
        link = JenItem(item)["link"]
        sublinks = JenItem(link).getAll("sublink")
        if sublinks:
            if len(sublinks) > 1:
                link = choose_quality(link)
            else:
                link = sublinks[0]
        link = link.replace("&amp;", "&")
        xbmc.executebuiltin("Container.update(" + link + ")")
        return
    item = JenItem(item)

    link = item["link"]
    if not link or link.replace("\t", "") == "":
        return
    meta = JenItem(item["meta"])
    title = meta["title"]
    year = meta.get("year", "").split("-")[0].strip()
    imdb = meta.get("imdb", "")
    tvdb = meta.get("tvdb", "")
    season = meta.get("season", "")
    episode = meta.get("episode", "")
    tvshowtitle = meta.get("tvshowtitle", None)
    premiered = meta.get("premiered", "")
    try:
        premiered = premiered.split("-")[0].strip()
    except:
        if len(premiered) == 4:
            pass
        elif not premiered:
            pass
        else:
            koding.dolog("wrong premiered format")
    busy_dialog = xbmcgui.DialogProgress()
    dialog = xbmcgui.Dialog()
    icon = ADDON.getAddonInfo("icon")

    jenplayer = JenPlayer(resume=False)
    try:
        spec = {"identifier": imdb, "season": season or "0", "episode": episode or "0"}
        match = koding.Get_From_Table("watched", spec)
        if match:
            match = match[0]
            if match["currentTime"] and not match["currentTime"] == "0":
                if dialog.yesno(
                    ADDON.getAddonInfo("name"),
                    _("Previous playback detected"),
                    yeslabel=_("Resume"),
                    nolabel=_("Restart"),
                ):
                    jenplayer = JenPlayer(resume=True)
    except:
        pass

    jenplayer.setItem(item)

    busy_dialog.create(xbmcaddon.Addon().getAddonInfo("name"), _("Processing Link"))
    preset = choose_quality(link)
    message = get_searching_message(preset)
    played = False
    infolabels = {}
    if preset:
        preset = preset.replace("&amp;", "&")
        busy_dialog.update(0, message)
        listitem = None
        fetch_meta = ADDON.getSetting("metadata") == "true"
        listitem = xbmcgui.ListItem(
            path=link,
            iconImage=item.get("thumbnail", icon),
            thumbnailImage=item.get("thumbnail", icon),
        )
        infolabels = {}
        if fetch_meta and imdb != "0":  # only try valid items with imdb
            try:
                info, created = get_info([item.item_string])
                if info and type(info) == dict:
                    infolabels = info
            except:
                pass
        else:
            infolabels["title"] = title
            infolabels["name"] = title
        if "plotoutline" not in infolabels:
            infolabels["plotoutline"] = infolabels.get("plot", "")
        if item.get("content", "") == "song":
            listitem.setInfo(
                type="Music",
                infoLabels={
                    "title": meta.get("title", ""),
                    "artist": meta.get("artist", ""),
                },
            )
        else:
            listitem.setInfo(type="video", infoLabels=infolabels)
            listitem.setLabel(item.get("title", item.get("name", "")))

        if "search" in preset:
            exclude_scrapers_content = item.get("exclude_scrapers", "")
            if exclude_scrapers_content:
                exclude_scrapers = exclude_scrapers_content.split(";")
            else:
                exclude_scrapers = None
            # nanscraper link
            if item.get("content", "") == "song":
                artist = item.get("artist", "")
                played = Sources.get_music_sources(
                    title,
                    artist,
                    preset=preset,
                    dialog=busy_dialog,
                    exclude=exclude_scrapers,
                    listitem=listitem,
                    player=jenplayer,
                )
            else:
                played = Sources.get_sources(
                    title,
                    year,
                    imdb,
                    tvdb,
                    season,
                    episode,
                    tvshowtitle,
                    premiered,
                    preset=preset,
                    dialog=busy_dialog,
                    listitem=listitem,
                    exclude=exclude_scrapers,
                    player=jenplayer,
                )
        elif preset.startswith("http") or preset.startswith("plugin") or preset.endswith('.torrent') or preset.startswith('magnet'):
            # direct link
            if "/playlist" in preset and "youtube" in preset:
                busy_dialog.close()
                xbmc.executebuiltin("Container.update(" + preset + ")")
                return
            elif "plugin://plugin.video.youtube/play/?video_id=" in preset:
                xbmc.executebuiltin("PlayMedia(%s)" % preset)
                played = True
            elif item["content"] == "image":
                busy_dialog.close()
                xbmc.executebuiltin("ShowPicture(%s)" % preset)
                played = True
            else:
                played = koding.Play_Video(
                    preset,
                    showbusy=False,
                    ignore_dp=True,
                    item=listitem,
                    player=jenplayer,
                    resolver=resolveurl,
                )      
                
        else:
            # who knows
            busy_dialog.close()
            koding.dolog("unknown link type: " + repr(preset))
            raise Exception()
    busy_dialog.close()
    if played:
        jenplayer.keep_alive()
예제 #26
0
    def process_item(self, item_xml):
        hook_result = run_hook("process_item", item_xml)
        if hook_result:
            if hook_result.get("content", ""):
                self.content = hook_result["content"]
            return hook_result
        try:
            is_widget = __builtin__.JEN_WIDGET
        except:
            is_widget = False
        item = JenItem(item_xml)
        enable_gifs = xbmcaddon.Addon().getSetting('enable_gifs') == "true"
        if item.item_string.startswith("<item>"):
            title = item["title"]
            if title == "":
                title = item["name"]
                koding.dolog("depricated: <name>")
                koding.dolog("name: " + repr(title))
                koding.dolog("Use <title> instead of <name> in your xml")
                koding.dolog("#####################")
            try:
                title = xbmcaddon.Addon().getLocalizedString(int(title))
            except ValueError:
                pass
            is_playable = True
            mode = "get_sources"
            link = item_xml
        elif item.item_string.startswith("<dir>"):
            title = item["name"]
            if title == "":
                title = item["title"]
            try:
                title = xbmcaddon.Addon().getLocalizedString(int(title))
            except ValueError:
                pass
            if item["link"].startswith("message"):
                is_playable = True
                mode = "message"
                link = item["link"].replace("message(", "")[:-1]
                if link.startswith("http"):
                    text = requests.request("GET", replace_url(link), verify=False).content
                    link = text
            else:
                is_playable = False
                mode = "get_list"
                link = item["link"]
        elif item.item_string.startswith("<plugin>"):
            link = item["link"]
            title = item["name"]
            if title == "":
                title = item["title"]
            try:
                title = xbmcaddon.Addon().getLocalizedString(int(title))
            except ValueError:
                pass
            if link.endswith("openSettings"):
                is_playable = True
                link = ""
                mode = "Settings"
            elif link.endswith("developer"):
                import os
                is_playable = False
                link = '{"file_name":"testings.xml"}'
                mode = "Testings"
                path = xbmcaddon.Addon().getAddonInfo('profile')
                profile_path = xbmc.translatePath(path).decode('utf-8')
                test_file = os.path.join(profile_path, "testings.xml")
                if not os.path.exists(test_file):
                    return
            elif link.endswith("search"):
                is_playable = False
                link = ""
                mode = "Search"
            else:
                if "youtube" in link and ("user" in link or "playlist" in link):
                    is_playable = True
                    mode = 'get_sources'
                    link = item_xml
                else:
                    is_playable = True
                    mode = 'get_sources'
                    link = item_xml
        else:
            koding.dolog("other: " + repr(item), xbmc.LOGDEBUG)
            raise Exception()

        # filter out "unreleased"
        if title == "" or " /title" in title or "/ title" in title:
            return

        if is_widget:
            if mode == "message":
                return

        context = get_context_items(item)

        content = item["content"]
        if content == "boxset":
            content = "set"
        if content != '':
            self.content = content
        imdb = item["imdb"]
        season = item["season"] or '0'
        episode = item["episode"] or '0'
        year = item["year"] or '0'
        fanart = None
        if enable_gifs:
            fan_url = item.get("animated_fanart", "")
            if fan_url and fan_url != "0":
                fanart = replace_url(fan_url)
        if not fanart:
            fanart = replace_url(
                item.get("fanart", self.list_fanart), replace_gif=False)
        thumbnail = None
        if enable_gifs:
            thumb_url = item.get("animated_thumbnail", "")
            if thumb_url and thumb_url != "0":
                thumbnail = replace_url(thumb_url)
        if not thumbnail:
            thumbnail = replace_url(
                item.get("thumbnail", self.list_image), replace_gif=False)

        premiered = item.get("premiered", "")
        if premiered:
            try:
                today_tt = datetime.date.today().timetuple()
                premiered_tt = time.strptime(premiered, "%Y-%m-%d")
                if today_tt < premiered_tt:
                    title = "[COLORyellow]" + title + "[/COLOR]"
            except:
                koding.dolog("wrong premiered format")
                pass
        result_item = {
            'label': title,
            'icon': thumbnail,
            'fanart': fanart,
            'mode': mode,
            'url': link,
            'folder': not is_playable,
            'imdb': imdb,
            'content': content,
            'season': season,
            'episode': episode,
            'info': {},
            'year': year,
            'context': context,
            'plot': item.get("summary", None),
            "summary": item.get("summary", None)
        }
        if fanart:
            result_item["properties"] = {'fanart_image': fanart}
            result_item['fanart_small'] = fanart

        if content in ['movie', 'episode']:
            # only add watched data for applicable items
            result_item['info']['watched'] = 0
        return result_item
예제 #27
0
    def process_item(self, item_xml):
        hook_result = run_hook("process_item", item_xml)
        if hook_result:
            if hook_result.get("content", ""):
                self.content = hook_result["content"]
            return hook_result
        try:
            is_widget = __builtin__.JEN_WIDGET
        except:
            is_widget = False
        item = JenItem(item_xml)
        enable_gifs = xbmcaddon.Addon().getSetting('enable_gifs') == "true"
        if item.item_string.startswith("<item>"):
            title = item["title"]
            if title == "":
                title = item["name"]
            try:
                title = xbmcaddon.Addon().getLocalizedString(int(title))
            except ValueError:
                pass
            is_playable = True
            mode = "get_sources"
            link = item_xml
        elif item.item_string.startswith("<dir>"):
            title = item["name"]
            if title == "":
                title = item["title"]
            try:
                title = xbmcaddon.Addon().getLocalizedString(int(title))
            except ValueError:
                pass
            if item["link"].startswith("message"):
                is_playable = True
                mode = "message"
                link = item["link"].replace("message(", "")[:-1]
                if link.startswith("http"):
                    text = requests.request("GET",
                                            replace_url(link),
                                            verify=False).content
                    link = text
            else:
                is_playable = False
                mode = "get_list"
                link = item["link"]
        elif item.item_string.startswith("<plugin>"):
            link = item["link"]
            title = item["name"]
            if title == "":
                title = item["title"]
            try:
                title = xbmcaddon.Addon().getLocalizedString(int(title))
            except ValueError:
                pass
            if link.endswith("openSettings"):
                is_playable = True
                link = ""
                mode = "Settings"
            elif link.endswith("developer"):
                import os
                is_playable = False
                link = '{"file_name":"testings.xml"}'
                mode = "Testings"
                path = xbmcaddon.Addon().getAddonInfo('profile')
                profile_path = xbmc.translatePath(path).decode('utf-8')
                test_file = os.path.join(profile_path, "testings.xml")
                if not os.path.exists(test_file):
                    return
            elif link.endswith("search"):
                is_playable = False
                link = ""
                mode = "Search"
            else:
                if "youtube" in link and ("user" in link
                                          or "playlist" in link):
                    is_playable = True
                    mode = 'get_sources'
                    link = item_xml
                else:
                    is_playable = True
                    mode = 'get_sources'
                    link = item_xml
        else:
            koding.dolog("other: " + repr(item), xbmc.LOGDEBUG)
            raise Exception()

        # filter out "unreleased"
        if title == "" or " /title" in title or "/ title" in title:
            return

        if is_widget:
            if mode == "message":
                return

        context = get_context_items(item)

        content = item["content"]
        if content == "boxset":
            content = "set"
        if content != '':
            self.content = content
        imdb = item["imdb"]
        season = item["season"] or '0'
        episode = item["episode"] or '0'
        year = item["year"] or '0'
        fanart = None
        if enable_gifs:
            fan_url = item.get("animated_fanart", "")
            if fan_url and fan_url != "0":
                fanart = replace_url(fan_url)
        if not fanart:
            fanart = replace_url(item.get("fanart", self.list_fanart),
                                 replace_gif=False)
        thumbnail = None
        if enable_gifs:
            thumb_url = item.get("animated_thumbnail", "")
            if thumb_url and thumb_url != "0":
                thumbnail = replace_url(thumb_url)
        if not thumbnail:
            thumbnail = replace_url(item.get("thumbnail", self.list_image),
                                    replace_gif=False)

        premiered = item.get("premiered", "")
        if premiered:
            try:
                today_tt = datetime.date.today().timetuple()
                premiered_tt = time.strptime(premiered, "%Y-%m-%d")
                if today_tt < premiered_tt:
                    title = "[COLORyellow]" + title + "[/COLOR]"
            except:
                koding.dolog("wrong premiered format")
                pass
        result_item = {
            'label': title,
            'icon': thumbnail,
            'fanart': fanart,
            'mode': mode,
            'url': link,
            'folder': not is_playable,
            'imdb': imdb,
            'content': content,
            'season': season,
            'episode': episode,
            'info': {},
            'year': year,
            'context': context,
            "summary": item.get("summary", None)
        }
        if fanart:
            result_item["properties"] = {'fanart_image': fanart}
            result_item['fanart_small'] = fanart

        if content in ['movie', 'episode']:
            # only add watched data for applicable items
            result_item['info']['watched'] = 0
        return result_item
예제 #28
0
def first_run_wizard():
    result = run_hook("first_run_wizard")
    if result:
        return
예제 #29
0
def get_sources(item):
    """
    get video_link and try to play it
    Keyword Arguments:
    item -- JenItem to try playing
    """
    result = run_hook("get_sources", item)
    if result:
        return
    if item.startswith("<plugin>"):
        # link to plugin
        link = JenItem(item)["link"]
        sublinks = JenItem(link).getAll("sublink")
        if sublinks:
            if len(sublinks) > 1:
                link = choose_quality(link)
            else:
                link = sublinks[0]
        link = link.replace("&amp;", "&")
        xbmc.executebuiltin('Container.update(' + link + ')')
        return
    item = JenItem(item)

    link = item["link"]
    if not link or link.replace("\t", "") == "":
        return
    meta = JenItem(item["meta"])
    title = meta["title"]
    year = meta.get("year", '').split("-")[0].strip()
    imdb = meta.get("imdb", "")
    tvdb = meta.get("tvdb", "")
    season = meta.get("season", "")
    episode = meta.get("episode", "")
    tvshowtitle = meta.get("tvshowtitle", None)
    premiered = meta.get("premiered", "")
    try:
        premiered = premiered.split("-")[0].strip()
    except:
        if len(premiered) == 4:
            pass
        elif not premiered:
            pass
        else:
            koding.dolog("wrong premiered format")
    busy_dialog = xbmcgui.DialogProgress()
    dialog = xbmcgui.Dialog()
    icon = ADDON.getAddonInfo('icon')

    jenplayer = JenPlayer(resume=False)
    try:
        spec = {
            "identifier": imdb,
            "season": season or "0",
            "episode": episode or "0"
        }
        match = koding.Get_From_Table("watched", spec)
        if match:
            match = match[0]
            if match["currentTime"] and not match["currentTime"] == "0":
                if dialog.yesno(ADDON.getAddonInfo("name"),
                                _("Previous playback detected"),
                                yeslabel=_("Resume"),
                                nolabel=_("Restart")):
                    jenplayer = JenPlayer(resume=True)
    except:
        pass

    jenplayer.setItem(item)

    busy_dialog.create(xbmcaddon.Addon().getAddonInfo('name'),
                       _("Processing Link"))
    preset = choose_quality(link)
    message = get_searching_message(preset)
    played = False
    infolabels = {}
    if preset:
        preset = preset.replace("&amp;", "&")
        busy_dialog.update(0, message)
        listitem = None
        fetch_meta = ADDON.getSetting("metadata") == "true"
        listitem = xbmcgui.ListItem(
            path=link,
            iconImage=item.get("thumbnail", icon),
            thumbnailImage=item.get("thumbnail", icon))
        infolabels = {}
        if fetch_meta and imdb != "0":  # only try valid items with imdb
            try:
                info, created = get_info([item.item_string])
                if info and type(info) == dict:
                    infolabels = info
            except:
                pass
        else:
            infolabels["title"] = title
            infolabels["name"] = title
        if "plotoutline" not in infolabels:
            infolabels["plotoutline"] = infolabels.get("plot", "")
        if item.get("content", "") == "song":
            listitem.setInfo(type='Music',
                             infoLabels={'title': meta.get("title", ""),
                                         'artist': meta.get("artist", "")})
        else:
            listitem.setInfo(type="video", infoLabels=infolabels)
            listitem.setLabel(item.get("title", item.get("name", "")))

        if "search" in preset:
            exclude_scrapers_content = item.get("exclude_scrapers", "")
            if exclude_scrapers_content:
                exclude_scrapers = exclude_scrapers_content.split(";")
            else:
                exclude_scrapers = None
            # nanscraper link
            if item.get("content", "") == "song":
                artist = item.get("artist", "")
                played = Sources.get_music_sources(title, artist,
                                                   preset=preset,
                                                   dialog=busy_dialog,
                                                   exclude=exclude_scrapers,
                                                   listitem=listitem,
                                                   player=jenplayer)
            else:
                played = Sources.get_sources(
                    title,
                    year,
                    imdb,
                    tvdb,
                    season,
                    episode,
                    tvshowtitle,
                    premiered,
                    preset=preset,
                    dialog=busy_dialog,
                    listitem=listitem,
                    exclude=exclude_scrapers,
                    player=jenplayer)
        elif preset.startswith("http") or preset.startswith("plugin"):
            # direct link
            if "/playlist" in preset and "youtube" in preset:
                busy_dialog.close()
                xbmc.executebuiltin('Container.update(' + preset + ')')
                return
            elif "plugin://plugin.video.youtube/play/?video_id=" in preset:
                xbmc.executebuiltin("PlayMedia(%s)" % preset)
                played = True
            elif item["content"] == "image":
                busy_dialog.close()
                xbmc.executebuiltin("ShowPicture(%s)" % preset)
                played = True
            else:
                played = koding.Play_Video(
                    preset,
                    showbusy=False,
                    ignore_dp=True,
                    item=listitem,
                    player=jenplayer,
                    resolver=resolveurl)
        else:
            # who knows
            busy_dialog.close()
            koding.dolog("unknown link type: " + repr(preset))
            raise Exception()
    busy_dialog.close()
    if played:
        jenplayer.keep_alive()
예제 #30
0
def first_run_wizard():
    result = run_hook("first_run_wizard")
    if result:
        return
예제 #31
0
def do_search(term=None):
    import os
    import xbmc
    import xbmcgui
    import time
    import datetime
    import urllib2
    import shutil

    search_term = term.lower()

    result = run_hook("do_search", search_term)
    if result:
        display_list(result, "videos")
        return
    jenlist = JenList("")
    jenlist.list_image = xbmcaddon.Addon().getAddonInfo('icon')
    theme = xbmcaddon.Addon().getSetting('theme')
    if theme and theme != 'DEFAULT' and theme != 'none':
        jenlist.list_fanart = jenlist.set_theme(theme)
    else:
        jenlist.list_fanart = xbmcaddon.Addon().getAddonInfo('fanart')
    result_list = []
    exact_result_list = []
    item_xml_result_list = []
    exact_item_xml_result_list = []
    dest_file = os.path.join(xbmc.translatePath(
        xbmcaddon.Addon().getSetting("cache_folder")), "search.db")

    url = __builtin__.search_db_location
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    try:
        changed = response.headers["Last-Modified"]
        changed_struct = time.strptime(changed, "%a, %d %b %Y %H:%M:%S GMT")
        epoch_changed = int(time.mktime(changed_struct))
        if not os.path.exists(dest_file) or \
           int(os.path.getmtime(dest_file)) < epoch_changed:
            dp = xbmcgui.DialogProgress()
            dp.create(_('Loading database file'), _('Please Wait'))
            if response.getcode() == 200:
                with open(dest_file, 'wb') as out_file:
                    shutil.copyfileobj(response, out_file)
                if os.path.getsize(dest_file) == 0:
                    koding.dolog("0 size db: " + repr(dest_file))
                    os.remove(dest_file)
            dp.close()
    except:  # server down
        if not os.path.exists(dest_file):
            import xbmcgui
            addon_name = xbmcaddon.Addon().getAddonInfo('name')
            xbmcgui.Dialog().ok(addon_name, _("no local file found, and server seems down"))
            dp.close()
    response.close()

    results = koding.DB_Query(dest_file, 'SELECT * from search where item like "%%%s%%"' % search_term)
    for result in results:
        item = jenlist.process_item(result["item"])
        playlister = result["poster"]
        title = item["label"].lower()
        if search_term in title:
            item["info"] = {}
            try:
                item['label'] = '{0} - {1}'.format(playlister,
                                                   item["label"])
            except:
                import xbmc
                koding.dolog("playlister: " + repr(playlister))
                koding.dolog("label:" + repr(item["lable"]))
                koding.dolog("item: " + repr(item))
                raise Exception()
            if title.startswith(search_term + " "):
                exact_result_list.append(item)
                exact_item_xml_result_list.append(result["item"])
                continue
            result_list.append(item)
            item_xml_result_list.append(result["item"])
    meta = xbmcaddon.Addon().getSetting("metadata") == "true"
    if meta:
        # TODO find way to get it all in single cal
        info = get_info(exact_item_xml_result_list)
        if info:
            for index, item in enumerate(exact_result_list):
                item["info"].update(info[index])

        info = get_info(item_xml_result_list)
        if info:
            for index, item in enumerate(result_list):
                item["info"].update(info[index])
    exact_result_list = sorted(exact_result_list,
                               key=lambda item: title)
    exact_result_list.extend(sorted(result_list,
                                    key=lambda item: title))
    display_list(exact_result_list, "videos")
예제 #32
0
def get_context_items(item):
    """generate context menu for item
    Keyword Arguments:
    item -- JenItem to generate menu for
    """
    context = []
    content = item["content"]
    # cache
    if content == "":
        context.append((_("Try Uncached"), "Container.Update({0})".format(
            get_addon_url("get_list_uncached", item["link"]))))
    # information
    context.append(
        (xbmcaddon.Addon().getLocalizedString(30708), "XBMC.Action(Info)"))

    # view modes
    if content == "movie":
        context.append(
            (_("Set Movie View"),
             "RunPlugin({0})".format(get_addon_url("save_view_mode",
                                                   "movies"))))
    elif content == "tvshow":
        context.append(
            (_("Set TV Show View"),
             "RunPlugin({0})".format(get_addon_url("save_view_mode",
                                                   "tvshows"))))
    elif content == "season":
        context.append(
            (_("Set Season View"),
             "RunPlugin({0})".format(get_addon_url("save_view_mode",
                                                   "seasons"))))
    elif content == "episode":
        context.append((_("Set Episode View"), "RunPlugin({0})".format(
            get_addon_url("save_view_mode", "episodes"))))
    else:
        context.append(
            (_("Set View"),
             "RunPlugin({0})".format(get_addon_url("save_view_mode",
                                                   "other"))))

    # extended info mod/qlickplay
    if xbmc.getCondVisibility("system.hasaddon(script.qlickplay)") or \
       xbmc.getCondVisibility("system.hasaddon(script.extendedinfo)"):
        if content == "movie":
            context.append((_("Extended info"), "RunPlugin({0})".format(
                get_addon_url("movie_extended_info", item["imdb"]))))
        elif content == "tvshow":
            context.append((_("Extended info"), "RunPlugin({0})".format(
                get_addon_url("tvshow_extended_info", item["imdb"]))))
        elif content == "season":
            url = "{'imdb': '%s', 'season': %s}" %\
                  (item["imdb"], item["season"])
            context.append((_("Extended info"), "RunPlugin({0})".format(
                get_addon_url("season_extended_info", url))))
        elif content == "episode":
            url = "{'imdb': '%s', 'season': %s, 'episode': %s}" %\
                  (item["imdb"], item["season"], item["episode"])
            context.append((_("Extended info"), "RunPlugin({0})".format(
                get_addon_url("episode_extended_info", url))))

    # queue
    playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
    if playlist.size() > 0:
        context.append((_("Play Queue"),
                        "RunPlugin({0})".format(get_addon_url("play_queue"))))
        context.append((_('Show Queue'), 'Action("Playlist")'))
        context.append((_("Clear Queue"),
                        "RunPlugin({0})".format(get_addon_url("clear_queue"))))
    try:
        if content == "movie":
            context.append((_("Queue Movie"), "RunPlugin({0})".format(
                get_addon_url("queue", item.item_string))))
        elif content == "tvshow":
            context.append((_("Queue TV Show"), "RunPlugin({0})".format(
                get_addon_url("queue", item.item_string))))
        elif content == "season":
            context.append((_("Queue Season"), "RunPlugin({0})".format(
                get_addon_url("queue", item.item_string))))
        elif content == "episode":
            context.append((_("Queue Episode"), "RunPlugin({0})".format(
                get_addon_url("queue", item.item_string))))
        else:
            context.append((_("Queue Item"), "RunPlugin({0})".format(
                get_addon_url("queue", item.item_string))))
    except:
        pass

    hook_result = run_hook("get_context_items", item, context)
    if hook_result:
        return hook_result

    return context
예제 #33
0
파일: xml.py 프로젝트: uguer30/Project
# -*- coding: utf-8 -*-