コード例 #1
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
 def _set_folder_path():
     if _get_property(setting) not in ('', 'None'):
         list_items = [{'line1': item} for item in [ls(32682), ls(32683)]]
         kwargs = {
             'items': json.dumps(list_items),
             'heading': 'Fen',
             'enumerate': 'false',
             'multi_choice': 'false',
             'multi_line': 'false'
         }
         action = kodi_utils.select_dialog([1, 2], **kwargs)
         if action == None: _return(folder_info)
         if action == 1:
             _set_property(setting, 'None')
             _return(folder_info)
         else:
             folder = kodi_utils.dialog.browse(0, 'Fen', '')
             if not folder: folder = 'None'
             _set_property(setting, folder)
             _return(folder_info)
     else:
         folder = kodi_utils.dialog.browse(0, 'Fen', '')
         if not folder: folder = 'None'
         _set_property(setting, folder)
         _return(folder_info)
コード例 #2
0
	def _get_actor_details():
		from modules.history import add_to_search_history
		try: actors = tmdb_people_info(query)
		except: return None, None, None
		if len(actors) == 1:
			actors = actors[0]
			actor_id = actors['id']
			actor_name = actors['name']
			try: image_id = actors['profile_path']
			except: image_id = None
			if not image_id: actor_image = os.path.join(icon_directory, 'genre_family.png')
			else: actor_image = tmdb_image_url % image_id
		else:
			def _builder():
				for item in actors:
					known_for_list = [i.get('title', 'NA') for i in item['known_for']]
					known_for_list = [i for i in known_for_list if not i == 'NA']
					image = tmdb_image_url % item['profile_path'] if item['profile_path'] else os.path.join(icon_directory, 'genre_family.png')
					yield {'line1': item['name'], 'line2': ', '.join(known_for_list) if known_for_list else '', 'icon': image}
			list_items = list(_builder())
			kwargs = {'items': json.dumps(list_items), 'heading': 'Fen', 'enumerate': 'false', 'multi_choice': 'false', 'multi_line': 'false'}
			selection = select_dialog(actors, **kwargs)
			if selection == None: return None, None, None
			actor_id = int(selection['id'])
			actor_name = selection['name']
			actor_image = tmdb_image_url % selection['profile_path'] if selection['profile_path'] else os.path.join(icon_directory, 'genre_family.png')
		add_to_search_history(actor_name, 'people_queries')
		return actor_name, actor_image, actor_id
コード例 #3
0
    def multiselect_genres(self, genre_list):
        import json
        from modules.kodi_utils import select_dialog

        def _builder():
            for genre, value in sorted(genre_list.items()):
                append(value[0])
                yield {
                    'line1': genre,
                    'icon':
                    kodi_utils.translate_path(icon_directory % value[1])
                }

        function_list = []
        append = function_list.append
        icon_directory = 'special://home/addons/script.tikiart/resources/media/%s'
        genre_list = json.loads(genre_list)
        list_items = list(_builder())
        kwargs = {
            'items': json.dumps(list_items),
            'heading': genre_str,
            'enumerate': 'false',
            'multi_choice': 'true',
            'multi_line': 'false'
        }
        genre_ids = select_dialog(function_list, **kwargs)
        if genre_ids == None: return
        return ','.join(genre_ids)
コード例 #4
0
 def network(self):
     key = 'network'
     if self._action(key) in ('clear', None): return
     network_list = []
     append = network_list.append
     networks = sorted(meta_lists.networks, key=lambda k: k['name'])
     for item in networks:
         name = item['name']
         append({
             'line1': name,
             'icon': item['logo'],
             'name': name,
             'id': item['id']
         })
     heading = self.heading_base % ls(32480)
     kwargs = {
         'items': json.dumps(network_list),
         'heading': heading,
         'enumerate': 'false',
         'multi_choice': 'false',
         'multi_line': 'false'
     }
     choice = kodi_utils.select_dialog(network_list, **kwargs)
     if choice == None: return
     values = ('&with_networks=%s' % choice['id'], choice['name'])
     self._process(key, values)
コード例 #5
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def set_language_filter_choice(filter_setting):
    from modules.meta_lists import language_choices
    lang_choices = language_choices
    lang_choices.pop('None')
    dl = list(lang_choices.keys())
    fl = list(lang_choices.values())
    try:
        preselect = [
            fl.index(i) for i in get_setting(filter_setting).split(', ')
        ]
    except:
        preselect = []
    list_items = [{'line1': item} for item in dl]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'true',
        'multi_line': 'false',
        'preselect': preselect
    }
    choice = kodi_utils.select_dialog(fl, **kwargs)
    if choice == None: return
    if choice == []:
        return set_setting(filter_setting, 'eng')
    set_setting(filter_setting, ', '.join(choice))
コード例 #6
0
 def furkPacks(self, name, file_id, highlight=None, download=False):
     from apis.furk_api import FurkAPI
     kodi_utils.show_busy_dialog()
     t_files = FurkAPI().t_files(file_id)
     t_files = [i for i in t_files if 'video' in i['ct'] and 'bitrate' in i]
     t_files.sort(key=lambda k: k['name'].lower())
     kodi_utils.hide_busy_dialog()
     if download: return t_files
     default_furk_icon = kodi_utils.translate_path(
         'special://home/addons/script.tikiart/resources/media/furk.png')
     list_items = [{
         'line1':
         '%.2f GB | %s' % (float(item['size']) / 1073741824,
                           clean_file_name(item['name']).upper()),
         'icon':
         default_furk_icon
     } for item in t_files]
     kwargs = {
         'items': json.dumps(list_items),
         'heading': name,
         'highlight': highlight,
         'enumerate': 'true',
         'multi_choice': 'false',
         'multi_line': 'false'
     }
     chosen_result = kodi_utils.select_dialog(t_files, **kwargs)
     if chosen_result is None: return None
     link = chosen_result['url_dl']
     name = chosen_result['name']
     return FenPlayer().run(link, 'video')
コード例 #7
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def set_quality_choice(quality_setting):
    include = ls(32188)
    dl = [
        '%s SD' % include,
        '%s 720p' % include,
        '%s 1080p' % include,
        '%s 4K' % include
    ]
    fl = ['SD', '720p', '1080p', '4K']
    try:
        preselect = [
            fl.index(i) for i in get_setting(quality_setting).split(', ')
        ]
    except:
        preselect = []
    list_items = [{'line1': item} for item in dl]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'true',
        'multi_line': 'false',
        'preselect': preselect
    }
    choice = kodi_utils.select_dialog(fl, **kwargs)
    if choice is None: return
    if choice == []:
        kodi_utils.ok_dialog(text=32574, top_space=True)
        return set_quality_choice(quality_setting)
    set_setting(quality_setting, ', '.join(choice))
コード例 #8
0
 def cast(self):
     key = 'cast'
     if self._action(key) in ('clear', None): return
     from apis.tmdb_api import get_tmdb
     from caches.main_cache import cache_object
     result = None
     actor_id = None
     search_name = None
     search_name = kodi_utils.dialog.input(self.heading_base % ls(32664))
     if not search_name: return
     string = '%s_%s' % ('tmdb_movies_people_search_actor_data',
                         search_name)
     url = 'https://api.themoviedb.org/3/search/person?api_key=%s&language=en-US&query=%s' % (
         self.tmdb_api, search_name)
     result = cache_object(get_tmdb, string, url, 4)
     result = result['results']
     if not result: return
     actor_list = []
     append = actor_list.append
     if len(result) > 1:
         for item in result:
             name = item['name']
             known_for_list = [
                 i.get('title', 'NA') for i in item['known_for']
             ]
             known_for_list = [i for i in known_for_list if not i == 'NA']
             known_for = ', '.join(known_for_list) if known_for_list else ''
             if item.get('profile_path'):
                 icon = 'https://image.tmdb.org/t/p/h632/%s' % item[
                     'profile_path']
             else:
                 icon = kodi_utils.translate_path(
                     'special://home/addons/script.tikiart/resources/media/genre_family.png'
                 )
             append({
                 'line1': name,
                 'line2': known_for,
                 'icon': icon,
                 'name': name,
                 'id': item['id']
             })
         heading = self.heading_base % ls(32664)
         kwargs = {
             'items': json.dumps(actor_list),
             'heading': heading,
             'enumerate': 'false',
             'multi_choice': 'false',
             'multi_line': 'true'
         }
         choice = kodi_utils.select_dialog(actor_list, **kwargs)
         if choice == None: return self._set_property()
         actor_id = choice['id']
         actor_name = choice['name']
     else:
         actor_id = [item['id'] for item in result][0]
         actor_name = [item['name'] for item in result][0]
     if actor_id:
         values = ('&with_cast=%s' % str(actor_id),
                   to_utf8(safe_string(remove_accents(actor_name))))
         self._process(key, values)
コード例 #9
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def imdb_videos_choice(videos, poster, media=True):
    try:
        videos = json.loads(videos)
    except:
        pass
    videos.sort(key=lambda x: x['quality_rank'])
    if media:
        items = [{'line': i['quality'], 'function': i['url']} for i in videos]
        choice = open_window(['windows.extras', 'ShowSelectMedia'],
                             'select_media.xml',
                             items=items,
                             poster=poster)
    else:
        dl = [i['quality'] for i in videos]
        fl = [i['url'] for i in videos]
        list_items = [{'line1': item, 'icon': poster} for item in dl]
        kwargs = {
            'items': json.dumps(list_items),
            'heading': 'Fen',
            'enumerate': 'false',
            'multi_choice': 'false',
            'multi_line': 'false'
        }
        choice = kodi_utils.select_dialog(fl, **kwargs)
    return choice
コード例 #10
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def set_subtitle_choice():
    choices = ((ls(32192), '0'), (ls(32193), '1'), (ls(32027), '2'))
    list_items = [{'line1': item[0]} for item in choices]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'false'
    }
    choice = kodi_utils.select_dialog([i[1] for i in choices], **kwargs)
    if choice: return set_setting('subtitles.subs_action', choice)
コード例 #11
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def results_highlights_choice():
    choices = ((ls(32240), '0'), (ls(32583), '1'), (ls(32241), '2'))
    list_items = [{'line1': item[0]} for item in choices]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'false'
    }
    choice = kodi_utils.select_dialog([i[1] for i in choices], **kwargs)
    if choice: return set_setting('highlight.type', choice)
コード例 #12
0
 def debridPacks(self,
                 debrid_provider,
                 name,
                 magnet_url,
                 info_hash,
                 highlight=None,
                 download=False):
     if debrid_provider == 'Real-Debrid':
         from apis.real_debrid_api import RealDebridAPI as debrid_function
         icon = 'realdebrid.png'
     elif debrid_provider == 'Premiumize.me':
         from apis.premiumize_api import PremiumizeAPI as debrid_function
         icon = 'premiumize.png'
     elif debrid_provider == 'AllDebrid':
         from apis.alldebrid_api import AllDebridAPI as debrid_function
         icon = 'alldebrid.png'
     kodi_utils.show_busy_dialog()
     try:
         debrid_files = debrid_function().display_magnet_pack(
             magnet_url, info_hash)
     except:
         debrid_files = None
     kodi_utils.hide_busy_dialog()
     if not debrid_files: return kodi_utils.notification(32574)
     debrid_files.sort(key=lambda k: k['filename'].lower())
     if download: return debrid_files, debrid_function
     default_debrid_icon = kodi_utils.translate_path(
         'special://home/addons/script.tikiart/resources/media/%s' % icon)
     list_items = [{
         'line1':
         '%.2f GB | %s' % (float(item['size']) / 1073741824,
                           clean_file_name(item['filename']).upper()),
         'icon':
         default_debrid_icon
     } for item in debrid_files]
     kwargs = {
         'items': json.dumps(list_items),
         'heading': name,
         'highlight': highlight,
         'enumerate': 'true',
         'multi_choice': 'false',
         'multi_line': 'false'
     }
     chosen_result = kodi_utils.select_dialog(debrid_files, **kwargs)
     if chosen_result is None: return None
     url_dl = chosen_result['link']
     if debrid_provider in ('Real-Debrid', 'AllDebrid'):
         link = debrid_function().unrestrict_link(url_dl)
     elif debrid_provider == 'Premiumize.me':
         link = debrid_function().add_headers_to_url(url_dl)
     name = chosen_result['filename']
     return FenPlayer().run(link, 'video')
コード例 #13
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))
コード例 #14
0
 def _selection_dialog(self, dialog_list, function_list, string):
     list_items = [{
         'line1': item,
         'icon': default_icon
     } for item in dialog_list]
     kwargs = {
         'items': json.dumps(list_items),
         'heading': string,
         'enumerate': 'false',
         'multi_choice': 'false',
         'multi_line': 'false'
     }
     return kodi_utils.select_dialog(function_list, **kwargs)
コード例 #15
0
 def similar_recommended(self):
     key = self.key
     if self._action(key) in ('clear', None): return
     title = kodi_utils.dialog.input(self.heading_base % ls(32228))
     if not title: return
     if self.db_type == 'movie':
         from apis.tmdb_api import tmdb_movies_title_year as function
     else:
         from apis.tmdb_api import tmdb_tv_title_year as function
     year = kodi_utils.dialog.input(self.heading_base %
                                    ('%s (%s)' % (ls(32543), ls(32669))),
                                    type=kodi_utils.numeric_input)
     results = function(title, year)['results']
     if len(results) == 0: return kodi_utils.notification(32490)
     choice_list = []
     append = choice_list.append
     for item in results:
         title = item['title'] if self.db_type == 'movie' else item['name']
         try:
             year = item['release_date'].split(
                 '-')[0] if self.db_type == 'movie' else item[
                     'first_air_date'].split('-')[0]
         except:
             year = ''
         if year: rootname = '%s (%s)' % (title, year)
         else: rootname = title
         if item.get('poster_path'):
             icon = 'https://image.tmdb.org/t/p/w780%s' % item['poster_path']
         else:
             icon = kodi_utils.translate_path(
                 'special://home/addons/script.tikiart/resources/media/box_office.png'
             )
         append({
             'line1': rootname,
             'line2': item['overview'],
             'icon': icon,
             'rootname': rootname,
             'tmdb_id': str(item['id'])
         })
     heading = self.heading_base % ('%s %s' % (ls(32193), ls(32228)))
     kwargs = {
         'items': json.dumps(choice_list),
         'heading': heading,
         'enumerate': 'false',
         'multi_choice': 'false',
         'multi_line': 'true'
     }
     values = kodi_utils.select_dialog([(i['tmdb_id'], i['rootname'])
                                        for i in choice_list], **kwargs)
     if values == None: return
     self._process(key, values)
コード例 #16
0
	def clear_favourites(self):
		favorites = ls(32453)
		fl = [('%s %s' % (ls(32028), ls(32453)), 'movie'), ('%s %s' % (ls(32029), ls(32453)), 'tvshow')]
		list_items = [{'line1': item[0]} for item in fl]
		kwargs = {'items': json.dumps(list_items), 'heading': 'Fen', 'enumerate': 'false', 'multi_choice': 'false', 'multi_line': 'false'}
		self.db_type = select_dialog([item[1] for item in fl], **kwargs)
		if self.db_type == None: return
		if not confirm_dialog(): return
		dbcon = database.connect(self.fav_database)
		dbcon.execute("DELETE FROM favourites WHERE db_type=?", (self.db_type,))
		dbcon.commit()
		dbcon.execute('VACUUM')
		dbcon.close()
		notification(32576, 3000)
コード例 #17
0
ファイル: downloader.py プロジェクト: CYBERxNUKE/xbmc-addon
def select_pack_item(pack_choices, highlight, icon):
    list_items = [{'line1': '%.2f GB | %s' % (float(item['pack_files']['size'])/1073741824, clean_file_name(item['pack_files']['filename']).upper()), 'icon': icon} \
       for item in pack_choices]
    heading = '%s - %s' % (
        ls(32031),
        clean_file_name(json.loads(pack_choices[0].get('source')).get('name')))
    kwargs = {
        'items': json.dumps(list_items),
        'heading': heading,
        'highlight': highlight,
        'enumerate': 'true',
        'multi_choice': 'true',
        'multi_line': 'false'
    }
    return kodi_utils.select_dialog(pack_choices, **kwargs)
コード例 #18
0
 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
コード例 #19
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def meta_language_choice():
    from modules.meta_lists import meta_languages
    langs = meta_languages
    list_items = [{'line1': i['name']} for i in langs]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': ls(32145),
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'false'
    }
    list_choose = kodi_utils.select_dialog(langs, **kwargs)
    if list_choose == None: return None
    from caches.meta_cache import delete_meta_cache
    chosen_language = list_choose['iso']
    chosen_language_display = list_choose['name']
    set_setting('meta_language', chosen_language)
    set_setting('meta_language_display', chosen_language_display)
    delete_meta_cache(silent=True)
コード例 #20
0
def get_trakt_list_selection(list_choice='none'):
    my_lists = [{'name': item['name'], 'display': ls(32778) % item['name'].upper(), 'user': item['user']['ids']['slug'], 'slug': item['ids']['slug']} \
                              for item in trakt_get_lists('my_lists')]
    my_lists.sort(key=lambda k: k['name'])
    if list_choice == 'nav_edit':
        liked_lists = [{
            'name': item['list']['name'],
            'display': ls(32779) % item['list']['name'].upper(),
            'user': item['list']['user']['ids']['slug'],
            'slug': item['list']['ids']['slug']
        } for item in trakt_get_lists('liked_lists')]
        liked_lists.sort(key=lambda k: (k['display']))
        my_lists.extend(liked_lists)
    else:
        my_lists.insert(
            0, {
                'name': 'Collection',
                'display': '[B][I]%s [/I][/B]' % ls(32499).upper(),
                'user': '******',
                'slug': 'Collection'
            })
        my_lists.insert(
            0, {
                'name': 'Watchlist',
                'display': '[B][I]%s [/I][/B]' % ls(32500).upper(),
                'user': '******',
                'slug': 'Watchlist'
            })
    list_items = [{
        'line1': item['display'],
        'icon': trakt_icon
    } for item in my_lists]
    index_list = [list_items.index(i) for i in list_items]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Select list',
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'false'
    }
    selection = kodi_utils.select_dialog(my_lists, **kwargs)
    if selection == None: return None
    return selection
コード例 #21
0
 def _multiselect_dialog(self,
                         string,
                         dialog_list,
                         function_list=None,
                         preselect=[]):
     if not function_list: function_list = dialog_list
     list_items = [{
         'line1': item,
         'icon': default_icon
     } for item in dialog_list]
     kwargs = {
         'items': json.dumps(list_items),
         'heading': string,
         'enumerate': 'false',
         'multi_choice': 'true',
         'multi_line': 'false',
         'preselect': preselect
     }
     return kodi_utils.select_dialog(function_list, **kwargs)
コード例 #22
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def results_sorting_choice():
    quality, provider, size = ls(32241), ls(32583), ls(32584)
    choices = [('%s, %s, %s' % (quality, provider, size), '0'),
               ('%s, %s, %s' % (quality, size, provider), '1'),
               ('%s, %s, %s' % (provider, quality, size), '2'),
               ('%s, %s, %s' % (provider, size, quality), '3'),
               ('%s, %s, %s' % (size, quality, provider), '4'),
               ('%s, %s, %s' % (size, provider, quality), '5')]
    list_items = [{'line1': item[0]} for item in choices]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'false'
    }
    choice = kodi_utils.select_dialog(choices, **kwargs)
    if choice:
        set_setting('results.sort_order_display', choice[0])
        set_setting('results.sort_order', choice[1])
コード例 #23
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def color_chooser(msg_dialog, no_color=False):
    from modules.meta_lists import meta_colors
    color_chart = meta_colors
    color_display = [
        '[COLOR=%s]%s[/COLOR]' % (i, i.capitalize()) for i in color_chart
    ]
    if no_color:
        color_chart.insert(0, 'No Color')
        color_display.insert(0, 'No Color')
    list_items = [{'line1': item} for item in color_display]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'false'
    }
    choice = kodi_utils.select_dialog(color_chart, **kwargs)
    if choice == None: return
    return choice
コード例 #24
0
def clear_search_history():
    delete_str, search_str, hist_str, vid_str, mov_str, key_str = ls(
        32785), ls(32450), ls(32486), ls(32491), ls(32028), ls(32092)
    tv_str, aud_str, furk_str, easy_str, peop_str, imdb_str = ls(32029), ls(
        32492), ls(32069), ls(32070), ls(32507), ls(32064)
    choice_list = [
        ('%s %s %s %s' % (delete_str, mov_str, search_str, hist_str),
         'movie_queries'),
        ('%s %s %s %s' % (delete_str, tv_str, search_str, hist_str),
         'tvshow_queries'),
        ('%s %s %s %s' % (delete_str, peop_str, search_str, hist_str),
         'people_queries'),
        ('%s %s %s %s %s' % (delete_str, imdb_str, key_str, mov_str, hist_str),
         'imdb_keyword_movie_queries'),
        ('%s %s %s %s %s' % (delete_str, imdb_str, key_str, tv_str, hist_str),
         'imdb_keyword_tvshow_queries'),
        ('%s %s %s %s %s' %
         (delete_str, furk_str, vid_str, search_str, hist_str),
         'furk_video_queries'),
        ('%s %s %s %s %s' %
         (delete_str, furk_str, aud_str, search_str, hist_str),
         'furk_audio_queries'),
        ('%s %s %s %s' % (delete_str, easy_str, search_str, hist_str),
         'easynews_video_queries')
    ]
    try:
        list_items = [{'line1': item[0], 'icon': icon} for item in choice_list]
        kwargs = {
            'items': json.dumps(list_items),
            'heading': 'Fen',
            'enumerate': 'false',
            'multi_choice': 'false',
            'multi_line': 'false'
        }
        setting = kodi_utils.select_dialog([item[1] for item in choice_list],
                                           **kwargs)
        if setting == None: return
        main_cache.set(setting, '', expiration=EXPIRES_365_DAYS)
        kodi_utils.notification(32576, 3500)
    except:
        return
コード例 #25
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def trakt_manager_choice(params):
    if not get_setting('trakt_user', ''):
        return kodi_utils.notification(32760, 3500)
    icon = kodi_utils.translate_path(
        'special://home/addons/script.tikiart/resources/media/trakt.png')
    choices = [('%s %s...' % (ls(32602), ls(32199)), 'Add'),
               ('%s %s...' % (ls(32603), ls(32199)), 'Remove')]
    list_items = [{'line1': item[0], 'icon': icon} for item in choices]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': ls(32198).replace('[B]', '').replace('[/B]', ''),
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'false'
    }
    choice = kodi_utils.select_dialog([i[1] for i in choices], **kwargs)
    if choice == None: return
    if choice == 'Add':
        from apis.trakt_api import trakt_add_to_list
        trakt_add_to_list(params)
    else:
        from apis.trakt_api import trakt_remove_from_list
        trakt_remove_from_list(params)
コード例 #26
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def enable_scrapers_choice():
    scrapers = [
        'external', 'furk', 'easynews', 'rd_cloud', 'pm_cloud', 'ad_cloud',
        'folders'
    ]
    cloud_scrapers = {
        'rd_cloud': 'rd.enabled',
        'pm_cloud': 'pm.enabled',
        'ad_cloud': 'ad.enabled'
    }
    scraper_names = [
        ls(32118).upper(),
        ls(32069).upper(),
        ls(32070).upper(),
        ls(32098).upper(),
        ls(32097).upper(),
        ls(32099).upper(),
        ls(32108).upper()
    ]
    preselect = [
        scrapers.index(i) for i in settings.active_internal_scrapers()
    ]
    list_items = [{'line1': item} for item in scraper_names]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'true',
        'multi_line': 'false',
        'preselect': preselect
    }
    choice = kodi_utils.select_dialog(scrapers, **kwargs)
    if choice is None: return
    for i in scrapers:
        set_setting('provider.%s' % i, ('true' if i in choice else 'false'))
        if i in cloud_scrapers and i in choice:
            set_setting(cloud_scrapers[i], 'true')
コード例 #27
0
ファイル: source_utils.py プロジェクト: CYBERxNUKE/xbmc-addon
def enable_disable(folder):
    try:
        icon = kodi_utils.ext_addon(
            'script.module.fenomscrapers').getAddonInfo('icon')
        enabled, disabled = scrapers_status(folder)
        all_sources = sorted(enabled + disabled)
        preselect = [all_sources.index(i) for i in enabled]
        list_items = [{'line1': i.upper(), 'icon': icon} for i in all_sources]
        kwargs = {
            'items': json.dumps(list_items),
            'heading': 'Fen',
            'enumerate': 'false',
            'multi_choice': 'true',
            'multi_line': 'false',
            'preselect': preselect
        }
        chosen = kodi_utils.select_dialog(all_sources, **kwargs)
        if chosen == None: return
        for i in all_sources:
            if i in chosen: fenom_setSetting('provider.' + i, 'true')
            else: fenom_setSetting('provider.' + i, 'false')
        return _ext_scrapers_notice(32576)
    except:
        return _ext_scrapers_notice(32574)
コード例 #28
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
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)
コード例 #29
0
ファイル: dialogs.py プロジェクト: CYBERxNUKE/xbmc-addon
def external_scrapers_manager():
    icon = kodi_utils.ext_addon('script.module.fenomscrapers').getAddonInfo(
        'icon')
    all_color, hosters_color, torrent_color = 'mediumvioletred', get_setting(
        'hoster.identify'), get_setting('torrent.identify')
    enable_string, disable_string, specific_string, all_string = ls(32055), ls(
        32024), ls(32536), ls(32525)
    scrapers_string, hosters_string, torrent_string = ls(32533), ls(33031), ls(
        32535)
    fs_default_string = ls(32137)
    all_scrapers_string = '%s %s' % (all_string, scrapers_string)
    hosters_scrapers_string = '%s %s' % (hosters_string, scrapers_string)
    torrent_scrapers_string = '%s %s' % (torrent_string, scrapers_string)
    enable_string_base = '%s %s %s %s' % (enable_string, all_string, '%s',
                                          scrapers_string)
    disable_string_base = '%s %s %s %s' % (disable_string, all_string, '%s',
                                           scrapers_string)
    enable_disable_string_base = '%s/%s %s %s %s' % (
        enable_string, disable_string, specific_string, '%s', scrapers_string)
    all_scrapers_base = '[COLOR %s]%s [/COLOR]' % (all_color,
                                                   all_scrapers_string.upper())
    debrid_scrapers_base = '[COLOR %s]%s [/COLOR]' % (
        hosters_color, hosters_scrapers_string.upper())
    torrent_scrapers_base = '[COLOR %s]%s [/COLOR]' % (
        torrent_color, torrent_scrapers_string.upper())
    tools_menu = \
     [(all_scrapers_base, fs_default_string, {'mode': 'set_default_scrapers'}),
     (all_scrapers_base, enable_string_base % '', {'mode': 'toggle_all', 'folder': 'all', 'setting': 'true'}),
     (all_scrapers_base, disable_string_base % '', {'mode': 'toggle_all', 'folder': 'all', 'setting': 'false'}),
     (all_scrapers_base, enable_disable_string_base % '', {'mode': 'enable_disable', 'folder': 'all'}),
     (debrid_scrapers_base, enable_string_base % hosters_string, {'mode': 'toggle_all', 'folder': 'hosters', 'setting': 'true'}),
     (debrid_scrapers_base, disable_string_base % hosters_string, {'mode': 'toggle_all', 'folder': 'hosters', 'setting': 'false'}),
     (debrid_scrapers_base, enable_disable_string_base % hosters_string, {'mode': 'enable_disable', 'folder': 'hosters'}),
     (torrent_scrapers_base, enable_string_base % torrent_string, {'mode': 'toggle_all', 'folder': 'torrents', 'setting': 'true'}),
     (torrent_scrapers_base, disable_string_base % torrent_string, {'mode': 'toggle_all', 'folder': 'torrents', 'setting': 'false'}),
     (torrent_scrapers_base, enable_disable_string_base % torrent_string, {'mode': 'enable_disable', 'folder': 'torrents'})]
    list_items = [{
        'line1': item[0],
        'line2': item[1],
        'icon': icon
    } for item in tools_menu]
    kwargs = {
        'items': json.dumps(list_items),
        'heading': 'Fen',
        'enumerate': 'false',
        'multi_choice': 'false',
        'multi_line': 'true'
    }
    chosen_tool = kodi_utils.select_dialog(tools_menu, **kwargs)
    if chosen_tool == None: return
    from modules import source_utils
    params = chosen_tool[2]
    mode = params['mode']
    if mode == 'toggle_all':
        source_utils.toggle_all(params['folder'], params['setting'])
    elif mode == 'enable_disable':
        source_utils.enable_disable(params['folder'])
    elif mode == 'set_default_scrapers':
        source_utils.set_default_scrapers()
    kodi_utils.sleep(350)
    return external_scrapers_manager()
コード例 #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)