Ejemplo n.º 1
0
 def test_parse_overview_1(self):
     content = read_test_page('overview.html')
     self.assertIsNotNone(content)
     parser = OverviewParser()
     parser.parse_page_content(content)
     #
     self.assertEqual(str(parser.server_time), '2016-01-06 16:06:16')
     self.assertEqual(parser.new_messages_count, 0)
     self.assertEqual(parser.online_players, 51)
     self.assertFalse(parser.in_RO)
     self.assertEqual(parser.account.login, 'minlexx')
     self.assertEqual(parser.account.ref_link, \
         'http://uni4.xnova.su/?71995')
     self.assertEqual(parser.account.id, 71995)
     #
     self.assertEqual(parser.account.scores.buildings, 1398843)
     self.assertEqual(parser.account.scores.fleet, 110307)
     self.assertEqual(parser.account.scores.defense, 105220)
     self.assertEqual(parser.account.scores.science, 400604)
     self.assertEqual(parser.account.scores.total, 2014973)
     self.assertEqual(parser.account.scores.rank, 52)
     self.assertEqual(parser.account.scores.rank_delta, 0)
     self.assertEqual(parser.account.scores.industry_level, 33)
     self.assertEqual(parser.account.scores.industry_exp, (18043, 35937))
     self.assertEqual(parser.account.scores.military_level, 25)
     self.assertEqual(parser.account.scores.military_exp, (575, 625))
     self.assertEqual(parser.account.scores.credits, 63)
     self.assertEqual(parser.account.scores.fraction, 'Древние')
     self.assertEqual(parser.account.scores.wins, 1399)
     self.assertEqual(parser.account.scores.losses, 29)
Ejemplo n.º 2
0
def main():
    cacher = XNovaPageCache()
    cacher.save_load_encoding = 'UTF-8'  # force encoding
    cacher.load_from_disk_cache(clean=True)
    #
    # parse overview
    content = cacher.get_page('overview')
    p1 = OverviewParser()
    p1.parse_page_content(content)
    server_time = p1.server_time
    logger.info('Flights follow:')
    for fl in p1.flights:
        logger.info(fl)
    #
    # parse user info
    content = cacher.get_page('self_user_info')
    p2 = UserInfoParser()
    p2.parse_page_content(content)
    #
    # parse imperium
    p3 = ImperiumParser()
    content = cacher.get_page('imperium')
    p3.parse_page_content(content)
    #
    # current planet
    p4 = CurPlanetParser()
    content = cacher.get_page(
        'overview')  # can be almost any page, overview or imperium is fine
    p4.parse_page_content(content)
    #
    # galaxy
    gp = GalaxyParser()
    content = cacher.get_page('galaxy_1_7')
    gp.parse_page_content(content)
    if gp.script_body != '':
        gp.unscramble_galaxy_script()
        logger.info('Galaxy rows follow:')
        logger.info(gp.galaxy_rows)
    #
    # planet buildings
    pbp = PlanetBuildingsProgressParser()
    pba = PlanetBuildingsAvailParser()
    content = cacher.get_page('buildings_57064')  # Tama
    pba.parse_page_content(content)
    pbp.parse_page_content(content)
    logger.info('Planet buildings follow:')
    for ba in pba.builds_avail:
        logger.info(str(ba))
    logger.info('Planet builds in progress follow:')
    for bp in pbp.builds_in_progress:
        logger.info(str(bp))
    #
    # planet shipyard
    content = cacher.get_page('shipyard_57064')  # Tama's shipyard
    psyp = ShipyardBuildsInProgressParser()
    psyp.server_time = server_time
    psyp.parse_page_content(content)
    # planet ships available
    psap = ShipyardShipsAvailParser()
    psap.parse_page_content(content)
    logger.info('Planet ships available follow:')
    for sa in psap.ships_avail:
        logger.info(str(sa))
    # planet defenses
    psyp.clear()
    psyp.server_time = server_time
    psyp.parse_page_content(
        cacher.get_page('defense_57064'))  # Tama's defenses
    psap.clear()
    psap.parse_page_content(
        cacher.get_page('defense_57064'))  # Tama's defenses
    logger.info('Planet defense available follow:')
    for sa in psap.ships_avail:
        logger.info(str(sa))
    #
    # planet researches available
    content = cacher.get_page('research_57064')  # Tama
    prap = ResearchAvailParser()
    prap.server_time = server_time
    prap.parse_page_content(content)
    logger.info('Planet researches available follow:')
    for ra in prap.researches_avail:
        logger.info(str(ra))
    # planet factory researches
    content = cacher.get_page('researchfleet_57064')  # Tama
    prap.clear()
    prap.server_time = server_time
    prap.set_parsing_research_fleet(True)
    prap.parse_page_content(content)
    logger.info('Planet factory researches available follow:')
    for ra in prap.researches_avail:
        logger.info(str(ra))
    #
    # techtree
    ttp = TechtreeParser()
    content = cacher.get_page('techtree')
    ttp.parse_page_content(content)
    #
    # planet energy parser test
    pep = PlanetEnergyResParser()
    content = cacher.get_page(
        'buildings_82160')  # can be any overview, research or shipyard page
    pep.parse_page_content(content)
    logger.info('Parsed planet energy status: {0}/{1}'.format(
        pep.energy_left, pep.energy_total))
    #
    # fllets counter
    fmp = FleetsMaxParser()
    content = cacher.get_page('fleet')
    fmp.parse_page_content(content)
    logger.info('Fleets: {0}/{1}, Expeditions: {2}/{3}'.format(
        fmp.fleets_cur, fmp.fleets_max, fmp.expeditions_cur,
        fmp.expeditions_max))
Ejemplo n.º 3
0
 def init_parsers(self):
     self._parsers['overview'] = [OverviewParser(), CurPlanetParser()]
     self._parsers['imperium'] = [ImperiumParser()]
     self._parsers['techtree'] = [TechtreeParser()]
     self._parsers['fleet'] = [FleetsMaxParser()]
     self._parsers['self_user_info'] = [UserInfoParser()]
Ejemplo n.º 4
0
def main():
    cacher = XNovaPageCache()
    cacher.save_load_encoding = 'UTF-8'  # force encoding
    cacher.load_from_disk_cache(clean=True)
    #
    # parse overview
    content = cacher.get_page('overview')
    p1 = OverviewParser()
    p1.parse_page_content(content)
    server_time = p1.server_time
    logger.info('Flights follow:')
    for fl in p1.flights:
        logger.info(fl)
    #
    # parse user info
    content = cacher.get_page('self_user_info')
    p2 = UserInfoParser()
    p2.parse_page_content(content)
    #
    # parse imperium
    p3 = ImperiumParser()
    content = cacher.get_page('imperium')
    p3.parse_page_content(content)
    #
    # current planet
    p4 = CurPlanetParser()
    content = cacher.get_page('overview')  # can be almost any page, overview or imperium is fine
    p4.parse_page_content(content)
    #
    # galaxy
    gp = GalaxyParser()
    content = cacher.get_page('galaxy_1_7')
    gp.parse_page_content(content)
    if gp.script_body != '':
        gp.unscramble_galaxy_script()
        logger.info('Galaxy rows follow:')
        logger.info(gp.galaxy_rows)
    #
    # planet buildings
    pbp = PlanetBuildingsProgressParser()
    pba = PlanetBuildingsAvailParser()
    content = cacher.get_page('buildings_57064')  # Tama
    pba.parse_page_content(content)
    pbp.parse_page_content(content)
    logger.info('Planet buildings follow:')
    for ba in pba.builds_avail:
        logger.info(str(ba))
    logger.info('Planet builds in progress follow:')
    for bp in pbp.builds_in_progress:
        logger.info(str(bp))
    #
    # planet shipyard
    content = cacher.get_page('shipyard_57064')  # Tama's shipyard
    psyp = ShipyardBuildsInProgressParser()
    psyp.server_time = server_time
    psyp.parse_page_content(content)
    # planet ships available
    psap = ShipyardShipsAvailParser()
    psap.parse_page_content(content)
    logger.info('Planet ships available follow:')
    for sa in psap.ships_avail:
        logger.info(str(sa))
    # planet defenses
    psyp.clear()
    psyp.server_time = server_time
    psyp.parse_page_content(cacher.get_page('defense_57064'))  # Tama's defenses
    psap.clear()
    psap.parse_page_content(cacher.get_page('defense_57064'))  # Tama's defenses
    logger.info('Planet defense available follow:')
    for sa in psap.ships_avail:
        logger.info(str(sa))
    #
    # planet researches available
    content = cacher.get_page('research_57064')  # Tama
    prap = ResearchAvailParser()
    prap.server_time = server_time
    prap.parse_page_content(content)
    logger.info('Planet researches available follow:')
    for ra in prap.researches_avail:
        logger.info(str(ra))
    # planet factory researches
    content = cacher.get_page('researchfleet_57064')  # Tama
    prap.clear()
    prap.server_time = server_time
    prap.set_parsing_research_fleet(True)
    prap.parse_page_content(content)
    logger.info('Planet factory researches available follow:')
    for ra in prap.researches_avail:
        logger.info(str(ra))
    #
    # techtree
    ttp = TechtreeParser()
    content = cacher.get_page('techtree')
    ttp.parse_page_content(content)
    #
    # planet energy parser test
    pep = PlanetEnergyResParser()
    content = cacher.get_page('buildings_82160')  # can be any overview, research or shipyard page
    pep.parse_page_content(content)
    logger.info('Parsed planet energy status: {0}/{1}'.format(pep.energy_left, pep.energy_total))
    #
    # fllets counter
    fmp = FleetsMaxParser()
    content = cacher.get_page('fleet')
    fmp.parse_page_content(content)
    logger.info('Fleets: {0}/{1}, Expeditions: {2}/{3}'.format(
        fmp.fleets_cur, fmp.fleets_max, fmp.expeditions_cur, fmp.expeditions_max))
Ejemplo n.º 5
0
 def test_parse_overview_flights(self):
     content = read_test_page('overview.html')
     self.assertIsNotNone(content)
     parser = OverviewParser()
     parser.parse_page_content(content)
     #
     flights = parser.flights
     #
     self.assertEqual(len(flights), 10)
     #
     # check first flight very very tightly
     self.assertEqual(flights[0].mission, 'owndeploy')
     self.assertEqual(flights[0].direction, 'return')
     self.assertEqual(flights[0].src.target_name, 'Geminate')
     self.assertEqual(flights[0].src.target_type, XNCoords.TYPE_PLANET)
     self.assertEqual(flights[0].src.galaxy, 4)
     self.assertEqual(flights[0].src.system, 100)
     self.assertEqual(flights[0].src.position, 5)
     self.assertEqual(flights[0].dst.target_name, 'Rens')
     self.assertEqual(flights[0].dst.target_type, XNCoords.TYPE_PLANET)
     self.assertEqual(flights[0].dst.galaxy, 3)
     self.assertEqual(flights[0].dst.system, 130)
     self.assertEqual(flights[0].dst.position, 5)
     self.assertTrue(flights[0].is_our_fleet)
     self.assertEqual(flights[0].seconds_left, 53)
     self.assertEqual(flights[0].enemy_name, '')
     # check resources
     self.assertEqual(flights[0].res.met, 0)
     self.assertEqual(flights[0].res.cry, 0)
     self.assertEqual(flights[0].res.deit, 1000000)
     # check ships
     self.assertEqual(flights[0].ships.mt, 3000)
     self.assertEqual(flights[0].ships.bt, 150)
     self.assertEqual(flights[0].ships.li, 0)
     self.assertEqual(flights[0].ships.ti, 0)
     self.assertEqual(flights[0].ships.rab, 50)
     #
     # flight 2 direction
     self.assertEqual(flights[1].direction, 'flight')
     #
     # flight 3 mission
     self.assertEqual(flights[2].mission, 'ownbase')
     # flight 3 src type
     self.assertEqual(flights[2].src.target_type, XNCoords.TYPE_WARBASE)
     self.assertEqual(flights[2].src.target_name, 'SG Tama')
     self.assertEqual(flights[2].ships.f_corsair, 2474)
     #
     # flight 5 mission
     self.assertEqual(flights[4].mission, 'owntransport')
     #
     # flight 4 enemy attack
     self.assertEqual(flights[3].mission, 'attack')
     self.assertEqual(flights[3].direction, 'flight')
     self.assertEqual(flights[3].seconds_left, 1472)
     self.assertEqual(flights[3].is_our_fleet, False)
     self.assertEqual(flights[3].enemy_name, 'ScumWir')
     self.assertEqual(flights[3].src.target_name, 'Луна')
     self.assertEqual(flights[3].src.target_type, XNCoords.TYPE_MOON)
     self.assertEqual(flights[3].src.galaxy, 1)
     self.assertEqual(flights[3].src.system, 233)
     self.assertEqual(flights[3].src.position, 9)
     self.assertEqual(flights[3].dst.target_name, 'Tama')
     self.assertEqual(flights[3].dst.target_type, XNCoords.TYPE_PLANET)
     self.assertEqual(flights[3].dst.galaxy, 1)
     self.assertEqual(flights[3].dst.system, 34)
     self.assertEqual(flights[3].dst.position, 11)
     self.assertEqual(flights[3].res.met, 0)
     self.assertEqual(flights[3].res.cry, 0)
     self.assertEqual(flights[3].res.deit, 0)
     self.assertEqual(flights[3].ships.mt, 0)
     self.assertEqual(flights[3].ships.li, 1650)
     self.assertEqual(flights[3].is_hostile(), True)