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)
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))
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()]
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))
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)