def __init__(self, entity_design_base_path: str, entity_design_key_name: str, entity_design_description_property_name: str, cache_name: str = None, sorted_key_function: Callable[[dict, dict], str] = None, fix_data_delegate: Callable[[str], str] = None): self.__cache_name: str = cache_name or '' self.__base_path: str = entity_design_base_path self.__key_name: str = entity_design_key_name or None self.__description_property_name: str = entity_design_description_property_name self.__sorted_key_function: Callable[[dict, dict], str] = sorted_key_function self.__fix_data_delegate: Callable[[str], str] = fix_data_delegate self.__cache = PssCache(self.__base_path, self.__cache_name, key_name=self.__key_name)
return lines def _get_key_for_room_sort(room_info: dict, room_designs_data: dict) -> str: result = '' parent_infos = _get_parents(room_info, room_designs_data) if parent_infos: for parent_info in parent_infos: result += parent_info[ROOM_DESIGN_KEY_NAME].zfill(4) result += room_info[ROOM_DESIGN_KEY_NAME].zfill(4) return result # ---------- Initilization ---------- __room_designs_cache = PssCache(ROOM_DESIGN_BASE_PATH, 'RoomDesigns', ROOM_DESIGN_KEY_NAME) __room_design_purchases_cache = PssCache(ROOM_DESIGN_BASE_PATH, 'RoomDesignPurchases', ROOM_DESIGN_KEY_NAME, update_interval=60) def __get_allowed_room_short_names(): result = [] room_designs_data = __room_designs_cache.get_data_dict3() for room_design_data in room_designs_data.values(): if room_design_data[ROOM_DESIGN_DESCRIPTION_PROPERTY_NAME_2]: room_short_name = room_design_data[ ROOM_DESIGN_DESCRIPTION_PROPERTY_NAME_2].split(':')[0] if room_short_name not in result:
# ---------- Constants ---------- SHIP_DESIGN_BASE_PATH = 'ShipService/ListAllShipDesigns2?languageKey=en' SHIP_DESIGN_KEY_NAME = 'ShipDesignId' SHIP_DESIGN_DESCRIPTION_PROPERTY_NAME = 'ShipDesignName' # ---------- Initilization ---------- ships_designs_retriever = entity.EntityRetriever( SHIP_DESIGN_BASE_PATH, SHIP_DESIGN_KEY_NAME, SHIP_DESIGN_DESCRIPTION_PROPERTY_NAME, cache_name='ShipDesigns') __ship_designs_cache = PssCache(SHIP_DESIGN_BASE_PATH, 'ShipDesigns', SHIP_DESIGN_KEY_NAME, update_interval=60) # ---------- Helper functions ---------- async def get_inspect_ship_for_user(user_id: str) -> (dict, dict): inspect_ship_path = await _get_inspect_ship_base_path(user_id) inspect_ship_data = await core.get_data_from_path(inspect_ship_path) result = core.xmltree_to_dict2(inspect_ship_data) return result.get('User', None), result.get('Ship', None) async def get_ship_level(ship_info: dict, ship_design_data: dict = None) -> str: if not ship_info: return None
def __create_prestige_to_cache(char_design_id: str) -> PssCache: url = f'{__PRESTIGE_TO_BASE_PATH}{char_design_id}' name = f'PrestigeTo{char_design_id}' result = PssCache(url, name, None) return result
import pss_lookups as lookups import utility as util # TODO: Create allowed values dictionary upon start. # Get all item designs, split each ones name on ' ' and add each combination of 2 characters found to ALLOWED_ITEM_NAMES # ---------- Constants ---------- ITEM_DESIGN_BASE_PATH = 'ItemService/ListItemDesigns2?languageKey=en' ITEM_DESIGN_KEY_NAME = 'ItemDesignId' ITEM_DESIGN_DESCRIPTION_PROPERTY_NAME = 'ItemDesignName' ALLOWED_ITEM_NAMES = ['U'] # ---------- Initilization ---------- __item_designs_cache = PssCache(ITEM_DESIGN_BASE_PATH, 'ItemDesigns', ITEM_DESIGN_KEY_NAME) # ---------- Helper functions ---------- def get_item_details_from_id_as_text(item_id: str, item_designs_data: dict = None) -> list: if not item_designs_data: item_designs_data = __item_designs_cache.get_data_dict3() item_info = item_designs_data[item_id] return get_item_details_from_data_as_text(item_info) def get_item_details_from_data_as_text(item_info: dict) -> list: bonus_type = item_info[
def _create_prestige_from_cache(char_design_id) -> PssCache: url = f'{__PRESTIGE_FROM_BASE_PATH}{char_design_id}' name = f'PrestigeFrom{char_design_id}' result = PssCache(url, name, None) return result
CHARACTER_DESIGN_BASE_PATH = 'CharacterService/ListAllCharacterDesigns2?languageKey=en' CHARACTER_DESIGN_KEY_NAME = 'CharacterDesignId' CHARACTER_DESIGN_DESCRIPTION_PROPERTY_NAME = 'CharacterDesignName' COLLECTION_DESIGN_BASE_PATH = 'CollectionService/ListAllCollectionDesigns?languageKey=en' COLLECTION_DESIGN_KEY_NAME = 'CollectionDesignId' COLLECTION_DESIGN_DESCRIPTION_PROPERTY_NAME = 'CollectionName' __PRESTIGE_FROM_BASE_PATH = f'CharacterService/PrestigeCharacterFrom?languagekey=en&characterDesignId=' __PRESTIGE_TO_BASE_PATH = f'CharacterService/PrestigeCharacterTo?languagekey=en&characterDesignId=' # ---------- Initilization ---------- __character_designs_cache = PssCache(CHARACTER_DESIGN_BASE_PATH, 'CharacterDesigns', CHARACTER_DESIGN_KEY_NAME) __collection_designs_cache = PssCache(COLLECTION_DESIGN_BASE_PATH, 'CollectionDesigns', COLLECTION_DESIGN_KEY_NAME) __prestige_from_cache_dict = {} __prestige_to_cache_dict = {} # ---------- Helper functions ---------- def get_ability_name(char_id: str, char_designs_data: dict = None) -> str: if char_id: if not char_designs_data:
# ---------- Constants ---------- RESEARCH_DESIGN_BASE_PATH = 'ResearchService/ListAllResearchDesigns2?languageKey=en' RESEARCH_DESIGN_KEY_NAME = 'ResearchDesignId' RESEARCH_DESIGN_DESCRIPTION_PROPERTY_NAME = 'ResearchName' # ---------- Initilization ---------- __research_designs_cache = PssCache( RESEARCH_DESIGN_BASE_PATH, 'ResearchDesigns', RESEARCH_DESIGN_KEY_NAME) # ---------- Helper functions ---------- def get_research_details_from_id_as_text(research_id: str, research_designs_data: dict = None) -> list: if not research_designs_data: research_designs_data = __research_designs_cache.get_data_dict3() research_info = research_designs_data[research_id] return get_research_details_from_data_as_text(research_info, research_designs_data)
class EntityDesignsRetriever: def __init__(self, entity_design_base_path: str, entity_design_key_name: str, entity_design_description_property_name: str, cache_name: str = None, sorted_key_function: Callable[[dict, dict], str] = None, fix_data_delegate: Callable[[str], str] = None): self.__cache_name: str = cache_name or '' self.__base_path: str = entity_design_base_path self.__key_name: str = entity_design_key_name or None self.__description_property_name: str = entity_design_description_property_name self.__sorted_key_function: Callable[[dict, dict], str] = sorted_key_function self.__fix_data_delegate: Callable[[str], str] = fix_data_delegate self.__cache = PssCache(self.__base_path, self.__cache_name, key_name=self.__key_name) def get_data_dict3(self) -> Dict[str, Dict[str, object]]: return self.__cache.get_data_dict3() def get_entity_design_info_by_id( self, entity_design_id: str, entity_designs_data: Dict[str, Dict[str, object]] = None ) -> Dict[str, object]: entity_designs_data = entity_designs_data or self.get_data_dict3() if entity_design_id in entity_designs_data.keys(): return entity_designs_data[entity_design_id] else: return None def get_entity_design_info_by_name( self, entity_name: str, entity_designs_data: Dict[str, Dict[str, object]] = None ) -> Dict[str, object]: entity_designs_data = entity_designs_data or self.get_data_dict3() entity_design_id = self.get_entity_design_id_by_name( entity_name, entity_designs_data=entity_designs_data) if entity_design_id and entity_design_id in entity_designs_data.keys(): return entity_designs_data[entity_design_id] else: return None def get_entity_design_infos_by_name( self, entity_name: str, entity_designs_data: Dict[str, Dict[str, object]] = None, sorted_key_function: Callable[[dict, dict], str] = None ) -> List[Dict[str, object]]: entity_designs_data = entity_designs_data or self.get_data_dict3() sorted_key_function = sorted_key_function or self.__sorted_key_function entity_design_ids = self.get_entity_design_ids_by_name( entity_name, entity_designs_data=entity_designs_data) entity_designs_data_keys = entity_designs_data.keys() result = [ entity_designs_data[entity_design_id] for entity_design_id in entity_design_ids if entity_design_id in entity_designs_data_keys ] if sorted_key_function is not None: result = sorted( result, key=lambda entity_info: (sorted_key_function(entity_info, entity_designs_data))) return result def get_entity_design_id_by_name( self, entity_name: str, entity_designs_data: Dict[str, Dict[str, object]] = None) -> str: results = self.get_entity_design_ids_by_name(entity_name, entity_designs_data) if len(results) > 0: return results[0] else: return None def get_entity_design_ids_by_name( self, entity_name: str, entity_designs_data: Dict[str, Dict[str, object]] = None) -> List[str]: entity_designs_data = entity_designs_data or self.get_data_dict3() results = core.get_ids_from_property_value( entity_designs_data, self.__description_property_name, entity_name, fix_data_delegate=self.__fix_data_delegate) return results def update_cache(self) -> None: self.__cache.update_data()