Example #1
0
def request_id2item():
    url = base_url + 'ItemService/ListItemDesigns2?languageKey=en'
    raw_text = core.get_data_from_url(url)
    id2item = core.xmltree_to_dict3(raw_text, 'ItemDesignId')
    # item_lookup = mkt.parse_item_designs(raw_text)
    # df_items = mkt.rtbl2items(item_lookup)
    return id2item
Example #2
0
def get_top_fleets(take: int = 100, as_embed: bool = settings.USE_EMBEDS):
    raw_data = core.get_data_from_path(TOP_FLEETS_BASE_PATH + str(take))
    data = core.xmltree_to_dict3(raw_data)
    if as_embed:
        return _get_top_fleets_as_embed(data, take), True
    else:
        return _get_top_fleets_as_text(data, take), True
Example #3
0
async def init():
    league_data = await core.get_data_from_path(LEAGUE_BASE_PATH)
    league_infos = core.xmltree_to_dict3(league_data)
    for league_info in sorted(list(league_infos.values()), key=lambda league_info: int(league_info['MinTrophy'])):
        league_info['MinTrophy'] = int(league_info['MinTrophy'])
        league_info['MaxTrophy'] = int(league_info['MaxTrophy'])
        LEAGUE_INFOS_CACHE.append(league_info)
Example #4
0
def get_top_captains(take: int = 100, as_embed: bool = settings.USE_EMBEDS):
    path = _get_top_captains_path(take)
    raw_data = core.get_data_from_path(path)
    data = core.xmltree_to_dict3(raw_data)
    if as_embed:
        return _get_top_captains_as_embed(data, take), True
    else:
        return _get_top_captains_as_text(data, take), True
Example #5
0
def get_top_fleets(take: int = 100, as_embed: bool = False):
    path = f'AllianceService/ListAlliancesByRanking?skip=0&take={take}'
    raw_data = core.get_data_from_path(path)
    data = core.xmltree_to_dict3(raw_data)
    if as_embed:
        return _get_top_fleets_as_embed(data, take), True
    else:
        return _get_top_fleets_as_text(data, take), True
Example #6
0
def get_news():
    url = f'{base_url}/SettingService/ListAllNewsDesigns?languageKey=en'
    raw_text = core.get_data_from_url(url)
    d = core.xmltree_to_dict3(raw_text, key='NewsDesignId')
    txt = ''
    for k, v in d.items():
        txt += f"**{v['Title']}**\n"
        txt += v['Description'] + '\n\n'
    return txt.strip()
Example #7
0
def get_top_captains(take: int = 100, as_embed: bool = False):
    access_token = os.getenv('GPAT')
    path = f'LadderService/ListUsersByRanking?accessToken={access_token}&from=1&to={take}'
    raw_data = core.get_data_from_path(path)
    data = core.xmltree_to_dict3(raw_data)
    if as_embed:
        return _get_top_captains_as_embed(data, take), True
    else:
        return _get_top_captains_as_text(data, take), True
Example #8
0
async def get_division_stars(division: str = None,
                             fleet_data: dict = None,
                             retrieved_date: datetime = None,
                             as_embed: bool = settings.USE_EMBEDS):
    if division:
        pss_assert.valid_parameter_value(
            division,
            'division',
            min_length=1,
            allowed_values=ALLOWED_DIVISION_LETTERS)
        if division == '-':
            division = None
    else:
        division = None

    if fleet_data is None or retrieved_date is None:
        data = await core.get_data_from_path(STARS_BASE_PATH)
        fleet_infos = core.xmltree_to_dict3(data)
    else:
        fleet_infos = fleet_data

    divisions = {}
    if division:
        division_design_id = lookups.DIVISION_CHAR_TO_DESIGN_ID[
            division.upper()]
        divisions[division.upper()] = [
            fleet_info for fleet_info in fleet_infos.values()
            if fleet_info['DivisionDesignId'] == division_design_id
        ]
        pass
    else:
        for division_design_id in lookups.DIVISION_DESIGN_ID_TO_CHAR.keys():
            if division_design_id != '0':
                division_letter = lookups.DIVISION_DESIGN_ID_TO_CHAR[
                    division_design_id]
                divisions[division_letter] = [
                    fleet_info for fleet_info in fleet_infos.values()
                    if fleet_info['DivisionDesignId'] == division_design_id
                ]

    if divisions:
        result = []
        for division_letter, fleet_infos in divisions.items():
            result.extend(
                _get_division_stars_as_text(division_letter, fleet_infos))
            result.append(settings.EMPTY_LINE)
        if result:
            result = result[:-1]
            if retrieved_date is not None:
                result.append(util.get_historic_data_note(retrieved_date))
        return result, True
    else:
        return [], False
Example #9
0
def get_news(as_embed: bool = settings.USE_EMBEDS, language_key: str = 'en'):
    path = f'SettingService/ListAllNewsDesigns?languageKey={language_key}'

    try:
        raw_text = core.get_data_from_path(path)
        raw_data = core.xmltree_to_dict3(raw_text)
    except Exception as err:
        raw_data = None

    if not raw_data:
        return [f'Could not get news: {err}'], False
    else:
        if as_embed:
            return _get_news_as_embed(raw_data), True
        else:
            return _get_news_as_text(raw_data), True
Example #10
0
async def get_news(ctx: commands.Context, as_embed: bool = settings.USE_EMBEDS, language_key: str = 'en'):
    path = f'SettingService/ListAllNewsDesigns?languageKey={language_key}'

    try:
        raw_text = await core.get_data_from_path(path)
        raw_data = core.xmltree_to_dict3(raw_text)
    except Exception as err:
        raw_data = None
        return [f'Could not get news: {err}'], False

    if raw_data:
        news_infos = sorted(list(raw_data.values()), key=lambda news_info: news_info['UpdateDate'])
        news_count = len(news_infos)
        if news_count > 5:
            news_infos = news_infos[news_count-5:]
        news_details_collection = __create_news_details_collection_from_infos(news_infos)

        if as_embed:
            return (await news_details_collection.get_entity_details_as_embed(ctx)), True
        else:
            return (await news_details_collection.get_entity_details_as_text()), True
def get_dropship_text(as_embed: bool = False, language_key: str = 'en'):
    path = f'SettingService/GetLatestVersion3?languageKey={language_key}&deviceType=DeviceTypeAndroid'
    raw_text = core.get_data_from_path(path)
    raw_data = core.xmltree_to_dict3(raw_text)

    collection_design_data = crew.__collection_designs_cache.get_data_dict3()
    char_design_data = crew.__character_designs_cache.get_data_dict3()
    item_design_data = item.__item_designs_cache.get_data_dict3()
    room_design_data = room.__room_designs_cache.get_data_dict3()

    daily_msg = _get_daily_news_from_data_as_text(raw_data)
    dropship_msg = _get_dropship_msg_from_data_as_text(raw_data,
                                                       char_design_data,
                                                       collection_design_data)
    merchantship_msg = _get_merchantship_msg_from_data_as_text(
        raw_data, item_design_data)
    shop_msg = _get_shop_msg_from_data_as_text(raw_data, char_design_data,
                                               collection_design_data,
                                               item_design_data,
                                               room_design_data)
    sale_msg = _get_sale_msg_from_data_as_text(raw_data, char_design_data,
                                               collection_design_data,
                                               item_design_data,
                                               room_design_data)
    daily_reward_msg = _get_daily_reward_from_data_as_text(
        raw_data, item_design_data)

    lines = daily_msg
    lines.append(core.EMPTY_LINE)
    lines.extend(dropship_msg)
    lines.append(core.EMPTY_LINE)
    lines.extend(merchantship_msg)
    lines.append(core.EMPTY_LINE)
    lines.extend(shop_msg)
    lines.append(core.EMPTY_LINE)
    lines.extend(sale_msg)
    lines.append(core.EMPTY_LINE)
    lines.extend(daily_reward_msg)

    return lines, True
Example #12
0
async def get_top_fleets(ctx: commands.Context,
                         take: int = 100,
                         as_embed: bool = settings.USE_EMBEDS):
    tourney_running = tourney.is_tourney_running()
    raw_data = await core.get_data_from_path(TOP_FLEETS_BASE_PATH + str(take))
    data = core.xmltree_to_dict3(raw_data)
    if data:
        title = f'Top {take} fleets'
        prepared_data = __prepare_top_fleets(data)
        body_lines = __create_body_lines_top_fleets(prepared_data,
                                                    tourney_running)

        if as_embed:
            colour = util.get_bot_member_colour(ctx.bot, ctx.guild)
            return __create_top_embeds(title, body_lines, colour), True
        else:
            result = [f'**{title}**']
            result.extend(body_lines)
            return result, True
    else:
        return [
            'An unknown error occured while retrieving the top fleets. Please contact the bot\'s author!'
        ], False
Example #13
0
async def _get_fleet_users_by_id(alliance_id: str) -> dict:
    path = await _get_search_fleet_users_base_path(alliance_id)
    fleet_users_data_raw = await core.get_data_from_path(path)
    fleet_users_infos = core.xmltree_to_dict3(fleet_users_data_raw)
    return fleet_users_infos
Example #14
0
async def _get_fleet_infos_by_name(fleet_name: str) -> dict:
    path = await _get_search_fleets_base_path(fleet_name)
    fleet_data_raw = await core.get_data_from_path(path)
    fleet_infos = core.xmltree_to_dict3(fleet_data_raw)
    return fleet_infos
Example #15
0
async def _get_fleet_info_by_id(fleet_id: str) -> dict:
    path = await _get_get_alliance_base_path(fleet_id)
    fleet_data_raw = await core.get_data_from_path(path)
    fleet_info = core.xmltree_to_dict3(fleet_data_raw)
    return fleet_info
Example #16
0
async def get_division_stars(ctx: commands.Context,
                             division: str = None,
                             fleet_data: dict = None,
                             retrieved_date: datetime = None,
                             as_embed: bool = settings.USE_EMBEDS):
    if division:
        pss_assert.valid_parameter_value(
            division,
            'division',
            min_length=1,
            allowed_values=ALLOWED_DIVISION_LETTERS)
        if division == '-':
            division = None
    else:
        division = None

    if fleet_data is None or retrieved_date is None:
        data = await core.get_data_from_path(STARS_BASE_PATH)
        fleet_infos = core.xmltree_to_dict3(data)
    else:
        fleet_infos = fleet_data

    divisions_designs_infos = await divisions_designs_retriever.get_data_dict3(
    )

    divisions = {}
    if division:
        division_design_id = lookups.DIVISION_CHAR_TO_DESIGN_ID[
            division.upper()]
        divisions[division_design_id] = [
            fleet_info for fleet_info in fleet_infos.values()
            if fleet_info[DIVISION_DESIGN_KEY_NAME] == division_design_id
        ]
        pass
    else:
        for division_design_id in lookups.DIVISION_DESIGN_ID_TO_CHAR.keys():
            if division_design_id != '0':
                divisions[division_design_id] = [
                    fleet_info for fleet_info in fleet_infos.values() if
                    fleet_info[DIVISION_DESIGN_KEY_NAME] == division_design_id
                ]

    if divisions:
        divisions_texts = []
        for division_design_id, fleet_infos in divisions.items():
            divisions_texts.append(
                (division_design_id, _get_division_stars_as_text(fleet_infos)))

        result = []
        footer = util.get_historic_data_note(retrieved_date)
        colour = util.get_bot_member_colour(ctx.bot, ctx.guild)
        for division_design_id, division_text in divisions_texts:
            if as_embed:
                division_title = _get_division_title(division_design_id,
                                                     divisions_designs_infos,
                                                     False)
                thumbnail_url = await sprites.get_download_sprite_link(
                    divisions_designs_infos[division_design_id]
                    ['BackgroundSpriteId'])
                embed_bodies = util.create_posts_from_lines(
                    division_text,
                    settings.MAXIMUM_CHARACTERS_EMBED_DESCRIPTION)
                for i, embed_body in enumerate(embed_bodies):
                    thumbnail_url = thumbnail_url if i == 0 else None
                    embed = util.create_embed(division_title,
                                              description=embed_body,
                                              footer=footer,
                                              thumbnail_url=thumbnail_url,
                                              colour=colour)
                    result.append(embed)
            else:
                division_title = _get_division_title(division_design_id,
                                                     divisions_designs_infos,
                                                     True)
                result.append(division_title)
                result.extend(division_text)
                result.append(settings.EMPTY_LINE)

        if not as_embed:
            result = result[:-1]
            if footer:
                result.append(f'```{footer}```')

        return result, True
    else:
        return [
            f'An unknown error occured while retrieving division info. Please contact the bot\'s author!'
        ], False
Example #17
0
async def get_top_captains_dict(skip: int = 0, take: int = 100) -> dict:
    path = await _get_top_captains_path(skip, take)
    raw_data = await core.get_data_from_path(path)
    data = core.xmltree_to_dict3(raw_data)
    return data
Example #18
0
async def _get_user_infos(user_name: str) -> dict:
    path = f'{SEARCH_USERS_BASE_PATH}{util.url_escape(user_name)}'
    user_data_raw = await core.get_data_from_path(path)
    user_infos = core.xmltree_to_dict3(user_data_raw)
    return user_infos
Example #19
0
def search_alliances(alliance_name):
    path = f'AllianceService/SearchAlliances?name={alliance_name}&skip=0&take=100'
    raw_data = core.get_data_from_path(path)
    data = core.xmltree_to_dict3(raw_data)
    result = [data[key] for key in data.keys()]
    return result
Example #20
0
 def get_data_dict3(self) -> dict:
     data = self.get_raw_data()
     return dict(core.xmltree_to_dict3(data))
Example #21
0
File: cache.py Project: Lnic/YaDc
 async def get_data_dict3(self) -> dict:
     data = await self.get_raw_data()
     return core.xmltree_to_dict3(data)