def run(self):
     logger('FEN', 'ReuseLanguageInvokerCheck Service Starting')
     addon_xml = translate_path(
         'special://home/addons/plugin.video.fen/addon.xml')
     tree = ET.parse(addon_xml)
     root = tree.getroot()
     current_addon_setting = get_setting('reuse_language_invoker', 'true')
     try:
         current_xml_setting = [
             str(i.text) for i in root.iter('reuselanguageinvoker')
         ][0]
     except:
         return logger('FEN', 'ReuseLanguageInvokerCheck Service Finished')
     if current_xml_setting == current_addon_setting:
         return logger('FEN', 'ReuseLanguageInvokerCheck Service Finished')
     for item in root.iter('reuselanguageinvoker'):
         item.text = current_addon_setting
         hash_start = gen_file_hash(addon_xml)
         tree.write(addon_xml)
         hash_end = gen_file_hash(addon_xml)
         logger('FEN', 'ReuseLanguageInvokerCheck Service Finished')
         if hash_start != hash_end:
             if not kodi_utils.confirm_dialog(text='%s\n%s' %
                                              (ls(33021), ls(33020))):
                 return
             current_profile = kodi_utils.get_infolabel(
                 'system.profilename')
             kodi_utils.execute_builtin('LoadProfile(%s)' % current_profile)
         else:
             kodi_utils.ok_dialog(text=32574, top_space=True)
Beispiel #2
0
 def export(self):
     try:
         db_type = self.discover_params['db_type']
         query = self.discover_params['final_string']
         name = self.discover_params['name']
         set_history(db_type, name, query)
         if db_type == 'movie':
             mode = 'build_movie_list'
             action = 'tmdb_movies_discover'
         else:
             mode = 'build_tvshow_list'
             action = 'tmdb_tv_discover'
         final_params = {
             'name': name,
             'mode': mode,
             'action': action,
             'query': query,
             'iconImage': 'discover.png'
         }
         url_params = {
             'mode': 'navigator.adjust_main_lists',
             'method': 'add_external',
             'list_name': name,
             'menu_item': json.dumps(final_params)
         }
         kodi_utils.execute_builtin('RunPlugin(%s)' %
                                    self._build_url(url_params))
     except:
         kodi_utils.notification(32574)
Beispiel #3
0
	def remove_from_favourites(self):
		dbcon = database.connect(self.fav_database)
		dbcon.execute("DELETE FROM favourites where db_type=? and tmdb_id=?", (self.db_type, str(self.tmdb_id)))
		dbcon.commit()
		dbcon.close()
		execute_builtin('Container.Refresh')
		notification(32576, 3500)
Beispiel #4
0
def get_search_term(params):
    kodi_utils.close_all_dialog()
    db_type = params.get('db_type', '')
    query = params.get('query')
    search_type = params.get('search_type', 'media_title')
    if not query:
        from urllib.parse import unquote
        query = kodi_utils.dialog.input('Fen')
        if not query: return
        query = unquote(query)
    if search_type == 'media_title':
        mode, action = ('build_movie_list',
                        'tmdb_movies_search') if db_type == 'movie' else (
                            'build_tvshow_list', 'tmdb_tv_search')
        url = {'mode': mode, 'action': action, 'query': query}
    elif search_type == 'imdb_keyword':
        url = {
            'mode': 'imdb_build_keyword_results',
            'db_type': db_type,
            'query': query
        }
    if kodi_utils.external_browse():
        return kodi_utils.execute_builtin('ActivateWindow(10025,%s,return)' %
                                          kodi_utils.build_url(url))
    return kodi_utils.execute_builtin('Container.Update(%s)' %
                                      kodi_utils.build_url(url))
Beispiel #5
0
def toggle_language_invoker():
    import xml.etree.ElementTree as ET
    from modules.utils import gen_file_hash
    kodi_utils.close_all_dialog()
    kodi_utils.sleep(100)
    addon_dir = kodi_utils.translate_path(
        'special://home/addons/plugin.video.fen')
    addon_xml = os.path.join(addon_dir, 'addon.xml')
    tree = ET.parse(addon_xml)
    root = tree.getroot()
    try:
        current_value = [
            str(i.text) for i in root.iter('reuselanguageinvoker')
        ][0]
    except:
        return
    current_setting = get_setting('reuse_language_invoker')
    new_value = 'false' if current_value == 'true' else 'true'
    if not kodi_utils.confirm_dialog(
            text=ls(33018) % (current_value.upper(), new_value.upper())):
        return
    if new_value == 'true':
        if not kodi_utils.confirm_dialog(text=33019, top_space=True): return
    for item in root.iter('reuselanguageinvoker'):
        item.text = new_value
        hash_start = gen_file_hash(addon_xml)
        tree.write(addon_xml)
        hash_end = gen_file_hash(addon_xml)
        if hash_start != hash_end:
            set_setting('reuse_language_invoker', new_value)
        else:
            return kodi_utils.ok_dialog(text=32574, top_space=True)
    kodi_utils.ok_dialog(text=33020, top_space=True)
    kodi_utils.execute_builtin('LoadProfile(%s)' %
                               kodi_utils.get_infolabel('system.profilename'))
Beispiel #6
0
def toggle_jump_to():
    from modules.settings import nav_jump_use_alphabet
    (setting,
     new_action) = ('0', ls(32022)) if nav_jump_use_alphabet() else ('1',
                                                                     ls(32023))
    set_setting('nav_jump', setting)
    kodi_utils.execute_builtin('Container.Refresh')
    kodi_utils.notification(ls(32851) % new_action)
Beispiel #7
0
def hide_unhide_trakt_items(action, db_type, media_id, list_type):
    db_type = 'movies' if db_type in ['movie', 'movies'] else 'shows'
    key = 'tmdb' if db_type == 'movies' else 'imdb'
    url = 'users/hidden/%s' % list_type if action == 'hide' else 'users/hidden/%s/remove' % list_type
    data = {db_type: [{'ids': {key: media_id}}]}
    call_trakt(url, data=data)
    trakt_sync_activities()
    kodi_utils.execute_builtin('Container.Refresh')
Beispiel #8
0
def pm_delete(file_type, file_id):
    if not kodi_utils.confirm_dialog(): return
    result = Premiumize.delete_object(file_type, file_id)
    if result == 'success':
        Premiumize.clear_cache()
        kodi_utils.execute_builtin('Container.Refresh')
    else:
        return kodi_utils.ok_dialog(text=32574, top_space=True)
 def run(self):
     try:
         logger('FEN', 'AutoRun Service Starting')
         if settings.auto_start_fen():
             kodi_utils.execute_builtin('RunAddon(plugin.video.fen)')
         logger('FEN', 'AutoRun Service Finished')
         return
     except:
         return
Beispiel #10
0
def delete_trakt_list(params):
    user = params['user']
    list_slug = params['list_slug']
    if not kodi_utils.confirm_dialog(): return
    url = 'users/%s/lists/%s' % (user, list_slug)
    call_trakt(url, is_delete=True)
    trakt_sync_activities()
    kodi_utils.notification(32576, 3000)
    kodi_utils.execute_builtin('Container.Refresh')
Beispiel #11
0
def remove_from_collection(data):
    result = call_trakt('/sync/collection/remove', data=data)
    if result['deleted']['movies'] > 0: db_type = 'movie'
    elif result['deleted']['episodes'] > 0: db_type = 'tvshow'
    else: return kodi_utils.notification(32574, 3000)
    kodi_utils.notification(32576, 3000)
    trakt_sync_activities()
    kodi_utils.execute_builtin('Container.Refresh')
    return result
Beispiel #12
0
def remove_from_files(item_id):
    if not kodi_utils.confirm_dialog(): return
    response = Furk.file_unlink(item_id)
    if Furk.check_status(response):
        kodi_utils.notification(32576, 3500)
        kodi_utils.execute_builtin('Container.Refresh')
    else:
        kodi_utils.notification(32574, 3500)
    return (None, None)
Beispiel #13
0
def rd_delete(file_id, cache_type):
    if not kodi_utils.confirm_dialog(): return
    if cache_type == 'torrent': result = RealDebrid.delete_torrent(file_id)
    else:
        result = RealDebrid.delete_download(file_id)  # cache_type: 'download'
    if result.status_code in (401, 403, 404):
        return kodi_utils.notification(32574)
    RealDebrid.clear_cache()
    kodi_utils.execute_builtin('Container.Refresh')
Beispiel #14
0
def pm_rename(file_type, file_id, current_name):
    new_name = kodi_utils.dialog.input('Fen', defaultt=current_name)
    if not new_name: return
    result = Premiumize.rename_cache_item(file_type, file_id, new_name)
    if result == 'success':
        Premiumize.clear_cache()
        kodi_utils.execute_builtin('Container.Refresh')
    else:
        return kodi_utils.ok_dialog(text=32574, top_space=True)
Beispiel #15
0
 def _process(self, key=None, values=None, index=None):
     if key:
         index = self._listitem_position(key)
         self.discover_params['search_string'][key] = values[0]
         self.discover_params['search_name'][key] = values[1]
     self._build_string()
     self._build_name()
     self._set_property()
     kodi_utils.execute_builtin('Container.Refresh')
     if index: kodi_utils.focus_index(index, 500)
Beispiel #16
0
def remove_from_history(params):
    cache_file = kodi_utils.translate_path(
        'special://profile/addon_data/plugin.video.fen/maincache.db')
    dbcon = database.connect(cache_file)
    dbcur = dbcon.cursor()
    dbcur.execute("DELETE FROM maincache WHERE id=?", (params['data_id'], ))
    dbcon.commit()
    kodi_utils.clear_property(params['data_id'])
    kodi_utils.execute_builtin('Container.Refresh')
    if not params['silent']: kodi_utils.notification(32576)
Beispiel #17
0
def remove_from_list(user, slug, data):
    result = call_trakt('/users/%s/lists/%s/items/remove' % (user, slug),
                        data=data)
    if result['deleted']['shows'] > 0 or result['deleted']['movies'] > 0:
        kodi_utils.notification(32576, 3000)
        trakt_sync_activities()
        kodi_utils.execute_builtin('Container.Refresh')
    else:
        kodi_utils.notification(32574, 3000)
    return result
Beispiel #18
0
def myfiles_protect_unprotect(action, name, item_id):
    is_protected = '1' if action == 'protect' else '0'
    try:
        response = Furk.file_protect(item_id, is_protected)
        if Furk.check_status(response):
            kodi_utils.execute_builtin('Container.Refresh')
            return kodi_utils.notification(32576)
        else:
            kodi_utils.notification(32574)
    except:
        return
Beispiel #19
0
def make_new_trakt_list(params):
    from urllib.parse import unquote
    mode = params['mode']
    list_title = kodi_utils.dialog.input('Fen')
    if not list_title: return
    list_name = unquote(list_title)
    data = {'name': list_name, 'privacy': 'private', 'allow_comments': False}
    call_trakt('users/me/lists', data=data)
    trakt_sync_activities()
    kodi_utils.notification(32576, 3000)
    kodi_utils.execute_builtin('Container.Refresh')
Beispiel #20
0
def trakt_unlike_a_list(params):
    user = params['user']
    list_slug = params['list_slug']
    try:
        call_trakt('/users/%s/lists/%s/like' % (user, list_slug),
                   method='delete')
        kodi_utils.notification(32576, 3000)
        trakt_sync_activities()
        kodi_utils.execute_builtin('Container.Refresh')
    except:
        kodi_utils.notification(32574, 3000)
Beispiel #21
0
def remove_from_search_history(params):
    try:
        result = main_cache.get(params['setting_id'])
        result.remove(params.get('query'))
        main_cache.set(params['setting_id'],
                       result,
                       expiration=EXPIRES_365_DAYS)
        kodi_utils.notification(32576, 3500)
        kodi_utils.execute_builtin('Container.Refresh')
    except:
        return
Beispiel #22
0
def build_navigate_to_page(params):
    import json
    from modules.settings import nav_jump_use_alphabet
    use_alphabet = nav_jump_use_alphabet()
    icon = kodi_utils.translate_path(
        'special://home/addons/script.tikiart/resources/media/item_jump.png')
    fanart = kodi_utils.translate_path(
        'special://home/addons/plugin.video.fen/fanart.png')
    db_type = params.get('db_type')

    def _builder(use_alphabet):
        for i in start_list:
            if use_alphabet:
                line1, line2 = i.upper(), ls(32821) % (db_type, i.upper())
            else:
                line1, line2 = '%s %s' % (ls(32022), i), ls(32822) % i
            yield {'line1': line1, 'line2': line2, 'icon': icon}

    if use_alphabet:
        start_list = [chr(i) for i in range(97, 123)]
    else:
        start_list = [
            str(i) for i in range(1,
                                  int(params.get('total_pages')) + 1)
        ]
        start_list.remove(params.get('current_page'))
    list_items = list(_builder(use_alphabet))
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'false'
    }
    new_start = kodi_utils.select_dialog(start_list, **kwargs)
    kodi_utils.sleep(100)
    if new_start == None: return
    if use_alphabet: new_page, new_letter = '', new_start
    else: new_page, new_letter = new_start, None
    url_params = {
        'mode': params.get('transfer_mode', ''),
        'action': params.get('transfer_action', ''),
        'new_page': new_page,
        'new_letter': new_letter,
        'media_type': params.get('media_type', ''),
        'query': params.get('query', ''),
        'actor_id': params.get('actor_id', ''),
        'user': params.get('user', ''),
        'slug': params.get('slug', '')
    }
    kodi_utils.execute_builtin('Container.Update(%s)' %
                               kodi_utils.build_url(url_params))
Beispiel #23
0
def refresh_cached_data(db_type, id_type, media_id, tvdb_id, meta_language):
    from caches.meta_cache import metacache
    try:
        metacache.delete(db_type,
                         id_type,
                         media_id,
                         tvdb_id=tvdb_id,
                         meta_language=meta_language)
        if db_type == 'tvshow':
            metacache.delete_all_seasons_memory_cache(media_id)
        kodi_utils.notification(32576)
        kodi_utils.execute_builtin('Container.Refresh')
    except:
        kodi_utils.notification(32574)
Beispiel #24
0
def open_settings(query, addon='plugin.video.fen'):
    kodi_utils.sleep(250)
    if query:
        try:
            button, control = 100, 80
            kodi_utils.hide_busy_dialog()
            menu, function = query.split('.')
            kodi_utils.execute_builtin('Addon.OpenSettings(%s)' % addon)
            kodi_utils.execute_builtin('SetFocus(%i)' % (int(menu) - button))
            kodi_utils.execute_builtin('SetFocus(%i)' %
                                       (int(function) - control))
        except:
            kodi_utils.execute_builtin('Addon.OpenSettings(%s)' % addon)
    else:
        kodi_utils.execute_builtin('Addon.OpenSettings(%s)' % addon)
Beispiel #25
0
def refresh_artwork():
    if not kodi_utils.confirm_dialog(): return
    import sqlite3 as database
    for item in ('icon.png', 'fanart.png'):
        try:
            icon_path = kodi_utils.translate_path(
                'special://home/addons/plugin.video.fen/%s' % item)
            thumbs_folder = kodi_utils.translate_path('special://thumbnails')
            TEXTURE_DB = kodi_utils.translate_path(
                'special://database/Textures13.db')
            dbcon = database.connect(TEXTURE_DB)
            dbcur = dbcon.cursor()
            dbcur.execute("SELECT cachedurl FROM texture WHERE url = ?",
                          (icon_path, ))
            image = dbcur.fetchone()[0]
            dbcon.close()
            removal_path = os.path.join(thumbs_folder, image)
            kodi_utils.delete_file(removal_path)
        except:
            pass
    kodi_utils.sleep(200)
    kodi_utils.execute_builtin('ReloadSkin()')
    kodi_utils.sleep(500)
    kodi_utils.notification(32576)
Beispiel #26
0
def play_fetch_random(tmdb_id):
    meta_user_info = metadata.retrieve_user_info()
    meta = metadata.tvshow_meta('tmdb_id', tmdb_id, meta_user_info)
    adjust_hours = date_offset()
    current_date = get_datetime()
    episodes_data = metadata.all_episodes_meta(meta, meta_user_info)
    episodes_data = [
        i for i in episodes_data if not i['season'] == 0 and
        adjust_premiered_date(i['premiered'], adjust_hours)[0] <= current_date
    ]
    if not episodes_data: return {'pass': True}
    chosen_episode = choice(episodes_data)
    title = meta['title']
    season = int(chosen_episode['season'])
    episode = int(chosen_episode['episode'])
    query = title + ' S%.2dE%.2d' % (season, episode)
    display_name = '%s - %dx%.2d' % (title, season, episode)
    ep_name = chosen_episode['title']
    plot = chosen_episode['plot']
    try:
        premiered = adjust_premiered_date(chosen_episode['premiered'],
                                          adjust_hours)[1]
    except:
        premiered = chosen_episode['premiered']
    meta.update({
        'vid_type': 'episode',
        'rootname': display_name,
        'season': season,
        'episode': episode,
        'premiered': premiered,
        'ep_name': ep_name,
        'plot': plot,
        'random': 'true'
    })
    url_params = {
        'mode': 'play_media',
        'vid_type': 'episode',
        'tmdb_id': meta['tmdb_id'],
        'query': query,
        'tvshowtitle': meta['rootname'],
        'season': season,
        'episode': episode,
        'autoplay': 'True'
    }
    return execute_builtin('RunPlugin(%s)' % build_url(url_params))
Beispiel #27
0
 def _clear_property(self):
     kodi_utils.clear_property(self.window_id)
     self.discover_params = {}
     kodi_utils.execute_builtin('Container.Refresh')
Beispiel #28
0
def options_menu(params, meta=None):
    def _builder():
        for item in listing:
            line1 = item[0]
            line2 = item[1]
            if line2 == '': line2 = line1
            yield {'line1': line1, 'line2': line2}

    content = params.get('content', None)
    if not content: content = kodi_utils.container_content()[:-1]
    season = params.get('season', None)
    episode = params.get('episode', None)
    if not meta:
        function = metadata.movie_meta if content == 'movie' else metadata.tvshow_meta
        meta_user_info = metadata.retrieve_user_info()
        meta = function('tmdb_id', params['tmdb_id'], meta_user_info)
    watched_indicators = settings.watched_indicators()
    on_str, off_str, currently_str, open_str, settings_str = ls(32090), ls(
        32027), ls(32598), ls(32641), ls(32247)
    autoplay_status, autoplay_toggle, quality_setting = (on_str, 'false', 'autoplay_quality_%s' % content) if settings.auto_play(content) \
                else (off_str, 'true', 'results_quality_%s' % content)
    quality_filter_setting = 'autoplay_quality_%s' % content if autoplay_status == on_str else 'results_quality_%s' % content
    autoplay_next_status, autoplay_next_toggle = (
        on_str, 'false') if settings.autoplay_next_episode() else (off_str,
                                                                   'true')
    results_xml_style_status = get_setting('results.xml_style', 'Default')
    results_filter_ignore_status, results_filter_ignore_toggle = (
        on_str, 'false') if settings.ignore_results_filter() else (off_str,
                                                                   'true')
    results_sorting_status = get_setting('results.sort_order_display').replace(
        '$ADDON[plugin.video.fen 32582]', ls(32582))
    current_results_highlights_action = get_setting('highlight.type')
    results_highlights_status = ls(
        32240) if current_results_highlights_action == '0' else ls(
            32583) if current_results_highlights_action == '1' else ls(32241)
    current_subs_action = get_setting('subtitles.subs_action')
    current_subs_action_status = 'Auto' if current_subs_action == '0' else ls(
        32193) if current_subs_action == '1' else off_str
    active_internal_scrapers = [
        i.replace('_', '') for i in settings.active_internal_scrapers()
    ]
    current_scrapers_status = ', '.join([
        i for i in active_internal_scrapers
    ]) if len(active_internal_scrapers) > 0 else 'N/A'
    current_quality_status = ', '.join(
        settings.quality_filter(quality_setting))
    uncached_torrents_status, uncached_torrents_toggle = (
        on_str, 'false') if settings.display_uncached_torrents() else (off_str,
                                                                       'true')
    listing = []
    base_str1 = '%s%s'
    base_str2 = '%s: [B]%s[/B]' % (currently_str, '%s')
    if content in ('movie', 'episode'):
        multi_line = 'true'
        listing += [(ls(32014), '', 'clear_and_rescrape')]
        listing += [(ls(32006), '', 'rescrape_with_disabled')]
        listing += [(ls(32135), '', 'scrape_with_custom_values')]
        listing += [(base_str1 % (ls(32175), ' (%s)' % content),
                     base_str2 % autoplay_status, 'toggle_autoplay')]
        if autoplay_status == on_str and content == 'episode':
            listing += [
                (base_str1 % (ls(32178), ''), base_str2 % autoplay_next_status,
                 'toggle_autoplay_next')
            ]
        listing += [(base_str1 % (ls(32105), ' (%s)' % content),
                     base_str2 % current_quality_status, 'set_quality')]
        listing += [(base_str1 % ('', '%s %s' % (ls(32055), ls(32533))),
                     base_str2 % current_scrapers_status, 'enable_scrapers')]
        if autoplay_status == off_str:
            listing += [(base_str1 % ('', ls(32140)),
                         base_str2 % results_xml_style_status,
                         'set_results_xml_display')]
            listing += [
                (base_str1 % ('', ls(32151)),
                 base_str2 % results_sorting_status, 'set_results_sorting')
            ]
            listing += [(base_str1 % ('', ls(32138)),
                         base_str2 % results_highlights_status,
                         'set_results_highlights')]
        listing += [(base_str1 % ('', ls(32686)),
                     base_str2 % results_filter_ignore_status,
                     'set_results_filter_ignore')]
        listing += [(base_str1 % ('', ls(32183)),
                     base_str2 % current_subs_action_status, 'set_subs_action')
                    ]
        if 'external' in active_internal_scrapers:
            listing += [(base_str1 % ('', ls(32160)),
                         base_str2 % uncached_torrents_status,
                         'toggle_torrents_display_uncached')]
    else:
        multi_line = 'false'
    listing += [(ls(32046), '', 'extras_lists_choice')]
    if content in ('movie', 'tvshow') and meta:
        listing += [
            (ls(32604) %
             (ls(32028) if meta['mediatype'] == 'movie' else ls(32029)), '',
             'clear_media_cache')
        ]
    if watched_indicators == 1:
        listing += [(ls(32497) % ls(32037), '', 'clear_trakt_cache')]
    if content in ('movie', 'episode'):
        listing += [(ls(32637), '', 'clear_scrapers_cache')]
    listing += [('%s %s' % (ls(32118), ls(32513)), '',
                 'open_external_scrapers_manager')]
    listing += [('%s %s %s' % (open_str, ls(32522), settings_str), '',
                 'open_scraper_settings')]
    listing += [('%s %s %s' % (open_str, ls(32036), settings_str), '',
                 'open_fen_settings')]
    listing += [(ls(32640), '', 'save_and_exit')]
    list_items = list(_builder())
    heading = ls(32646).replace('[B]', '').replace('[/B]', '')
    kwargs = {
        'items': json.dumps(list_items),
        'heading': heading,
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': multi_line
    }
    choice = kodi_utils.select_dialog([i[2] for i in listing], **kwargs)
    if choice in (None, 'save_and_exit'): return
    elif choice == 'clear_and_rescrape':
        return clear_and_rescrape(content, meta, season, episode)
    elif choice == 'rescrape_with_disabled':
        return rescrape_with_disabled(content, meta, season, episode)
    elif choice == 'scrape_with_custom_values':
        return scrape_with_custom_values(content, meta, season, episode)
    elif choice == 'toggle_autoplay':
        set_setting('auto_play_%s' % content, autoplay_toggle)
    elif choice == 'toggle_autoplay_next':
        set_setting('autoplay_next_episode', autoplay_next_toggle)
    elif choice == 'enable_scrapers':
        enable_scrapers_choice()
    elif choice == 'set_results_xml_display':
        results_layout_choice()
    elif choice == 'set_results_sorting':
        results_sorting_choice()
    elif choice == 'set_results_filter_ignore':
        set_setting('ignore_results_filter', results_filter_ignore_toggle)
    elif choice == 'set_results_highlights':
        results_highlights_choice()
    elif choice == 'set_quality':
        set_quality_choice(quality_filter_setting)
    elif choice == 'set_subs_action':
        set_subtitle_choice()
    elif choice == 'extras_lists_choice':
        extras_lists_choice()
    elif choice == 'clear_media_cache':
        return refresh_cached_data(meta['mediatype'], 'tmdb_id',
                                   meta['tmdb_id'], meta['tvdb_id'],
                                   settings.get_language())
    elif choice == 'toggle_torrents_display_uncached':
        set_setting('torrent.display.uncached', uncached_torrents_toggle)
    elif choice == 'clear_trakt_cache':
        return clear_cache('trakt')
    elif choice == 'clear_scrapers_cache':
        return clear_scrapers_cache()
    elif choice == 'open_external_scrapers_manager':
        return external_scrapers_manager()
    elif choice == 'open_scraper_settings':
        return kodi_utils.execute_builtin(
            'Addon.OpenSettings(script.module.fenomscrapers)')
    elif choice == 'open_fen_settings':
        return open_settings('0.0')
    if choice == 'clear_trakt_cache' and content in ('movie', 'tvshow',
                                                     'season', 'episode'):
        kodi_utils.execute_builtin('Container.Refresh')
    kodi_utils.show_busy_dialog()
    kodi_utils.sleep(200)
    kodi_utils.hide_busy_dialog()
    options_menu(params, meta=meta)
Beispiel #29
0
def refresh_container(refresh='true'):
    if refresh == 'true': kodi_utils.execute_builtin('Container.Refresh')
Beispiel #30
0
def link_folders(service, folder_name, action):
    import json
    from caches.main_cache import main_cache

    def _get_media_type():
        media_type_list = [('movie', ls(32028), 'movies.png'),
                           ('tvshow', ls(32029), 'tv.png')]
        list_items = [{
            'line1': item[1],
            'line2': ls(32693) % item[1],
            'icon': os.path.join(theme_folder, item[2])
        } for item in media_type_list]
        kwargs = {
            'items': json.dumps(list_items),
            'heading': 'Fen',
            'enumerate': 'false',
            'multi_choice': 'false',
            'multi_line': 'true'
        }
        chosen_media_type = kodi_utils.select_dialog(
            [i[0] for i in media_type_list], **kwargs)
        return chosen_media_type

    theme_folder = kodi_utils.translate_path(
        'special://home/addons/script.tikiart/resources/media')
    string = 'FEN_%s_%s' % (service, folder_name)
    current_link = main_cache.get(string)
    if action == 'remove':
        if not current_link: return
        if not kodi_utils.confirm_dialog(text=ls(32694) % current_link,
                                         top_space=True):
            return
        import sqlite3 as database
        cache_file = kodi_utils.translate_path(
            'special://profile/addon_data/plugin.video.fen/maincache.db')
        dbcon = database.connect(cache_file)
        dbcur = dbcon.cursor()
        dbcur.execute("DELETE FROM maincache WHERE id=?", (string, ))
        dbcon.commit()
        dbcon.close()
        kodi_utils.clear_property(string)
        if service == 'FOLDER': clear_cache('folders', silent=True)
        kodi_utils.execute_builtin('Container.Refresh')
        return kodi_utils.ok_dialog(text=32576, top_space=True)
    if current_link:
        if not kodi_utils.confirm_dialog(text='%s[CR][B]%s[/B][CR]%s' %
                                         (ls(32695), current_link, ls(32696))):
            return
    media_type = _get_media_type()
    if media_type == None: return
    title = kodi_utils.dialog.input(ls(32228)).lower()
    if not title: return
    from apis.tmdb_api import tmdb_movies_title_year, tmdb_tv_title_year
    year = kodi_utils.dialog.input('%s (%s)' % (ls(32543), ls(32669)),
                                   type=kodi_utils.numeric_input)
    function = tmdb_movies_title_year if media_type == 'movie' else tmdb_tv_title_year
    results = function(title, year)['results']
    if len(results) == 0:
        return kodi_utils.ok_dialog(text=32490, top_space=True)
    name_key = 'title' if media_type == 'movie' else 'name'
    released_key = 'release_date' if media_type == 'movie' else 'first_air_date'
    function_list = []
    function_list_append = function_list.append

    def _builder():
        for item in results:
            title = item[name_key]
            try:
                year = item[released_key].split('-')[0]
            except:
                year = ''
            if year: rootname = '%s (%s)' % (title, year)
            else: rootname = title
            icon = 'https://image.tmdb.org/t/p/w780%s' % item['poster_path'] if item.get('poster_path') \
                            else kodi_utils.translate_path('special://home/addons/plugin.video.fen/icon.png')
            function_list_append(rootname)
            yield {'line1': rootname, 'line2': item['overview'], 'icon': icon}

    list_items = list(_builder())
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'true'
    }
    rootname = kodi_utils.select_dialog(function_list, **kwargs)
    if rootname == None: return
    from datetime import timedelta
    main_cache.set(string, rootname, expiration=timedelta(days=365))
    if service == 'FOLDER': clear_cache('folders', silent=True)
    kodi_utils.execute_builtin('Container.Refresh')
    return kodi_utils.ok_dialog(text=32576, top_space=True)