def list_discoverdir_router(self, **kwargs):
        if kwargs.get('clear_cache') != 'True' and kwargs.get(
                'method') not in ['delete', 'rename']:
            return self.list_discoverdir(**kwargs)

        params = kwargs.copy()
        params.pop('clear_cache', None)
        params.pop('method', None)
        params.pop('idx', None)
        self.container_update = '{},replace'.format(
            encode_url(PLUGINPATH, **params))

        if kwargs.get('clear_cache') == 'True':
            set_search_history('discover', clear_cache=True)

        elif kwargs.get('method') == 'delete':
            idx = try_int(kwargs.get('idx', -1))
            if idx == -1:
                return
            set_search_history('discover', replace=idx)

        elif kwargs.get('method') == 'rename':
            idx = try_int(kwargs.get('idx', -1))
            if idx == -1:
                return
            history = get_search_history('discover')
            try:
                item = history[idx]
            except IndexError:
                return
            if not item:
                return
            item['label'] = xbmcgui.Dialog().input(
                'Rename', defaultt=item.get('label')) or item.get('label')
            set_search_history('discover', item, replace=idx)
    def list_searchdir(self, tmdb_type, clear_cache_item=True, append_type=False, **kwargs):
        base_item = {
            'label': u'{} {}'.format(xbmc.getLocalizedString(137), convert_type(tmdb_type, 'plural')),
            'art': {'thumb': u'{}/resources/icons/tmdb/search.png'.format(ADDONPATH)},
            'infoproperties': {'specialsort': 'top'},
            'params': merge_two_dicts(kwargs, {'info': 'search', 'tmdb_type': tmdb_type})}
        items = []
        items.append(base_item)

        history = get_search_history(tmdb_type)
        history.reverse()
        for i in history:
            item = {
                'label': u'{} ({})'.format(i, tmdb_type) if append_type else i,
                'art': base_item.get('art'),
                'params': merge_two_dicts(base_item.get('params', {}), {'query': i})}
            items.append(item)
        if history and clear_cache_item:
            item = {
                'label': ADDON.getLocalizedString(32121),
                'art': base_item.get('art'),
                'infoproperties': {'specialsort': 'bottom'},
                'params': merge_two_dicts(base_item.get('params', {}), {'info': 'dir_search', 'clear_cache': 'True'})}
            items.append(item)
        return items
    def list_discoverdir(self, **kwargs):
        items = []
        params = merge_two_dicts(kwargs, {'info': 'user_discover'})
        artwork = {'thumb': u'{}/resources/poster.png'.format(ADDONPATH)}
        for i in ['movie', 'tv']:
            item = {
                'label': u'{} {}'.format(ADDON.getLocalizedString(32174), convert_type(i, 'plural')),
                'params': merge_two_dicts(params, {'tmdb_type': i}),
                'infoproperties': {'specialsort': 'top'},
                'art': artwork}
            items.append(item)

        history = get_search_history('discover')
        history.reverse()
        for x, i in enumerate(history):
            item_params = merge_two_dicts(kwargs, i.get('params', {}))
            edit_params = {'info': 'user_discover', 'tmdb_type': item_params.get('tmdb_type'), 'method': 'edit', 'idx': x}
            name_params = {'info': 'dir_discover', 'tmdb_type': item_params.get('tmdb_type'), 'method': 'rename', 'idx': x}
            dele_params = {'info': 'dir_discover', 'tmdb_type': item_params.get('tmdb_type'), 'method': 'delete', 'idx': x}
            item = {
                'label': i.get('label'),
                'params': item_params,
                'art': artwork,
                'context_menu': [
                    (xbmc.getLocalizedString(21435), u'Container.Update({})'.format(encode_url(PLUGINPATH, **edit_params))),
                    (xbmc.getLocalizedString(118), u'Container.Update({})'.format(encode_url(PLUGINPATH, **name_params))),
                    (xbmc.getLocalizedString(117), u'Container.Update({})'.format(encode_url(PLUGINPATH, **dele_params)))]}
            items.append(item)
        if history:
            item = {
                'label': ADDON.getLocalizedString(32237),
                'art': artwork,
                'params': merge_two_dicts(params, {'info': 'dir_discover', 'clear_cache': 'True'})}
            items.append(item)
        return items
def _edit_rules(idx=-1):
    """ Need to setup window properties if editing """
    if idx == -1:
        return
    history = get_search_history('discover')
    history.reverse()
    try:
        item = history[idx]
    except IndexError:
        return
    _win_prop('save_index', set_property='{}'.format(len(history) - 1 - idx))
    _win_prop('save_label', set_property='{}'.format(item.get('label')))
    for k, v in viewitems(item.get('params', {})):
        if k in ['info', 'tmdb_type']:
            continue
        _win_prop(k, set_property=v)
        _win_prop(k, 'Label', set_property=item.get('labels', {}).get(k, v))