def search_add(): """Perform actions to add and execute a new research""" # Ask to user the type of research search_types_desc = [SEARCH_TYPES_DESC.get(stype, 'Unknown') for stype in SEARCH_TYPES] type_index = ui.show_dlg_select(common.get_local_string(30401), search_types_desc) if type_index == -1: # Cancelled return False # If needed ask to user other info, then save the research to the database search_type = SEARCH_TYPES[type_index] row_id = None if search_type == 'text': search_term = ui.ask_for_search_term() if search_term and search_term.strip(): row_id = G.LOCAL_DB.insert_search_item(SEARCH_TYPES[type_index], search_term.strip()) elif search_type == 'audio_lang': row_id = _search_add_bylang(SEARCH_TYPES[type_index], api.get_available_audio_languages()) elif search_type == 'subtitles_lang': row_id = _search_add_bylang(SEARCH_TYPES[type_index], api.get_available_subtitles_languages()) elif search_type == 'genre_id': genre_id = ui.show_dlg_input_numeric(search_types_desc[type_index], mask_input=False) if genre_id: row_id = _search_add_bygenreid(SEARCH_TYPES[type_index], genre_id) else: raise NotImplementedError('Search type index {} not implemented'.format(type_index)) # Execute the research if row_id is None: return False return search_query(row_id, None, False)
def search_add(): """Perform actions to add and execute a new research""" # Ask to user the type of research search_types_desc = [SEARCH_TYPES_DESC.get(stype, 'Unknown') for stype in SEARCH_TYPES] type_index = ui.show_dlg_select(common.get_local_string(30401), search_types_desc) if type_index == -1: # Cancelled return False # If needed ask to user other info, then save the research to the database search_type = SEARCH_TYPES[type_index] row_id = None if search_type == 'text': search_term = ui.ask_for_search_term() if search_term and search_term.strip(): row_id = G.LOCAL_DB.insert_search_item(SEARCH_TYPES[type_index], search_term.strip()) elif search_type == 'audio_lang': row_id = _search_add_bylang(SEARCH_TYPES[type_index], api.get_available_audio_languages()) elif search_type == 'subtitles_lang': row_id = _search_add_bylang(SEARCH_TYPES[type_index], api.get_available_subtitles_languages()) elif search_type == 'genre_id': genre_id = ui.show_dlg_input_numeric(search_types_desc[type_index], mask_input=False) if genre_id: row_id = _search_add_bygenreid(SEARCH_TYPES[type_index], genre_id) else: raise NotImplementedError('Search type index {} not implemented'.format(type_index)) # Execute the research if row_id is None: return False # Redirect to "search" endpoint (otherwise causes problems with Container.Refresh used by context menus) end_of_directory(False) url = common.build_url(['search', 'search', row_id], mode=G.MODE_DIRECTORY) common.container_update(url, False) return True
def _ask_search_term_and_redirect(): search_term = ui.ask_for_search_term() if search_term: url = common.build_url(['search', 'search', search_term], mode=g.MODE_DIRECTORY) xbmcplugin.endOfDirectory(g.PLUGIN_HANDLE, succeeded=True) xbmc.executebuiltin('Container.Update({})'.format(url)) else: xbmcplugin.endOfDirectory(g.PLUGIN_HANDLE, succeeded=False)
def _ask_search_term_and_redirect(): search_term = ui.ask_for_search_term() if search_term: url = common.build_url(['search', 'search', search_term], mode=g.MODE_DIRECTORY) xbmcplugin.endOfDirectory(g.PLUGIN_HANDLE, succeeded=True) xbmc.executebuiltin('Container.Update({})'.format(url)) else: url = common.build_url(pathitems=['home'], params={'profile_id': g.LOCAL_DB.get_active_profile_guid()}, mode=g.MODE_DIRECTORY) xbmcplugin.endOfDirectory(g.PLUGIN_HANDLE, succeeded=True) xbmc.executebuiltin('Container.Update({},replace)'.format(url)) # replace=reset history
def search_edit(row_id): """Edit a search item""" search_item = G.LOCAL_DB.get_search_item(row_id) search_type = search_item['Type'] ret = False if search_type == 'text': search_term = ui.ask_for_search_term(search_item['Value']) if search_term and search_term.strip(): G.LOCAL_DB.update_search_item_value(row_id, search_term.strip()) ret = True if not ret: return common.container_update(common.build_url(['search', 'search', row_id], mode=G.MODE_DIRECTORY))
def search_add(): """Perform actions to add and execute a new research""" # Ask to user the type of research search_types_desc = [ SEARCH_TYPES_DESC.get(stype, 'Unknown') for stype in SEARCH_TYPES ] type_index = ui.show_dlg_select(common.get_local_string(30401), search_types_desc) if type_index == -1: # Cancelled return False # If needed ask to user other info, then save the research to the database search_type = SEARCH_TYPES[type_index] row_id = None if search_type == 'text': search_term = ui.ask_for_search_term() if search_term and search_term.strip(): row_id = G.LOCAL_DB.insert_search_item(SEARCH_TYPES[type_index], search_term.strip()) elif search_type == 'audio_lang': row_id = _search_add_bylang(SEARCH_TYPES[type_index], api.get_available_audio_languages()) elif search_type == 'subtitles_lang': row_id = _search_add_bylang(SEARCH_TYPES[type_index], api.get_available_subtitles_languages()) elif search_type == 'genre_id': genre_id = ui.show_dlg_input_numeric(search_types_desc[type_index], mask_input=False) if genre_id: row_id = _search_add_bygenreid(SEARCH_TYPES[type_index], genre_id) else: raise NotImplementedError( 'Search type index {} not implemented'.format(type_index)) # Redirect to "search" endpoint (otherwise no results in JSON-RPC) # Rewrite path history using dir_update_listing + container_update # (otherwise will retrigger input dialog on Back or Container.Refresh) if row_id is not None and search_query(row_id, 0, False): url = common.build_url(['search', 'search', row_id], mode=G.MODE_DIRECTORY, params={'dir_update_listing': True}) common.container_update(url, False) return True return False
def search(self, pathitems): """Ask for a search term if none is given via path, query API and display search results""" if len(pathitems) == 2: # Show 'search term' window search_term = ui.ask_for_search_term() pathitems.append(search_term) else: # Do a research search_term = pathitems[2] if search_term: search_results = api.search(search_term, self.perpetual_range_start) if search_results.videos: listings.build_video_listing(search_results, g.MAIN_MENU_ITEMS['search'], pathitems) _handle_endofdirectory(self.dir_update_listing) else: ui.show_notification(common.get_local_string(30013)) xbmcplugin.endOfDirectory(g.PLUGIN_HANDLE, succeeded=False) else: xbmcplugin.endOfDirectory(g.PLUGIN_HANDLE, succeeded=False)