Esempio n. 1
0
 def __init__(self, login_email: str, password: str):
     self._login_email = login_email
     self._password = password
     self._page_cache = XNovaPageCache()
     self._page_dnl = XNovaPageDownload()
     self._parsers = dict()
     # world info
     self._techtree = XNTechTree_instance()
     self._account = XNAccountInfo()
     self._flights = []
     self._planets = []
     self._server_time = datetime.datetime.now()
     self._new_messages_count = 0
     self._vacation_mode = False
     self._server_online_players = 0
     self._get_bonus_url = ''
     self._cur_planet_id = 0
     self._cur_planet_name = ''
     self._cur_planet_coords = XNCoords()
Esempio 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))
Esempio n. 3
0
# configure some parameters
user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/45.0.2454.85 Safari/537.36'
delay_between_requests_secs = 5
# galaxy_range = (5, 5)  # debug, originally (1, 5)
# system_range = (75, 75)  # debug, originally (1, 499)
galaxy_range = (1, 5)
system_range = (1, 499)
max_cache_secs = 10 * 3600  # cache galaxy pages for 10 hours
status_filename = 'galaxy_auto_parser.json'


###############################################
# internal state vars, do not touch
logger = xn_logger.get('GAP', debug=True)
g_page_cache = XNovaPageCache()
g_page_dnl = XNovaPageDownload()
g_parser = GalaxyParser()
g_db = sqlite3.connect('galaxy.db')
g_got_from_cache = False


def int_(val):
    if val is None:
        return None
    try:
        r = int(val)
    except ValueError:
        r = 0
    return r