diff --git a/nullptr/atlas_builder.py b/nullptr/atlas_builder.py new file mode 100644 index 0000000..97a41d8 --- /dev/null +++ b/nullptr/atlas_builder.py @@ -0,0 +1,62 @@ +from time import sleep +from nullptr.util import * +from threading import Thread + +class AtlasBuilder: + def __init__(self, store, api): + self.store = store + self.api = api + self.stop_auto = False + + def wait_for_stop(self): + input() + self.stop_auto = True + print('stopping...') + + def run(self, page=1): + print('universe mode. hit enter to stop') + t = Thread(target=self.wait_for_stop) + t.daemon = True + t.start() + self.all_systems(int(page)) + print('manual mode') + + def all_specials(self, waypoints): + for w in waypoints: + if self.stop_auto: + break + if 'MARKETPLACE' in w.traits: + self.api.marketplace(w) + print(f'marketplace at {w}') + sleep(0.5) + if w.type == 'JUMP_GATE': + self.api.jumps(w) + print(f'jumpgate at {w}') + + def all_waypoints(self, systems): + for s in systems: + if self.stop_auto: + break + r = self.api.list_waypoints(s) + self.all_specials(r) + self.store.flush() + sleep(0.5) + + + def all_systems(self, start_page): + self.stop_auto = False + data = self.api.list_systems(start_page) + pages = total_pages(self.api.last_meta) + print(f'{pages} pages of systems') + print(f'page {1}: {len(data)} results') + self.all_waypoints(data) + self.store.flush() + + for p in range(start_page+1, pages): + if self.stop_auto: + break + data = self.api.list_systems(p) + print(f'page {p}: {len(data)} systems') + self.all_waypoints(data) + sleep(0.5) + self.store.flush() diff --git a/nullptr/commander.py b/nullptr/commander.py index f28886b..9568d4e 100644 --- a/nullptr/commander.py +++ b/nullptr/commander.py @@ -8,6 +8,7 @@ from nullptr.api import Api from .util import * from time import sleep from threading import Thread +from nullptr.atlas_builder import AtlasBuilder class Commander(CommandLine): def __init__(self, store_dir='data', agent=None): @@ -15,6 +16,7 @@ class Commander(CommandLine): self.store = Store(store_dir) self.agent = self.select_agent(agent) self.api = Api(self.store, self.agent) + self.atlas_builder = AtlasBuilder(self.store, self.api) self.store.flush() self.stop_auto= False super().__init__() @@ -39,58 +41,8 @@ class Commander(CommandLine): def do_register(self, faction): self.api.register(faction.upper()) - def wait_for_stop(self): - input() - self.stop_auto = True - print('stopping...') - def do_universe(self, page=1): - print('universe mode. hit enter to stop') - t = Thread(target=self.wait_for_stop) - t.daemon = True - t.start() - self.all_systems(int(page)) - print('manual mode') - - def all_specials(self, waypoints): - for w in waypoints: - if self.stop_auto: - break - if 'MARKETPLACE' in w.traits: - self.api.marketplace(w) - print(f'marketplace at {w}') - sleep(0.5) - if w.type == 'JUMP_GATE': - self.api.jumps(w) - print(f'jumpgate at {w}') - - def all_waypoints(self, systems): - for s in systems: - if self.stop_auto: - break - r = self.api.list_waypoints(s) - self.all_specials(r) - self.store.flush() - sleep(0.5) - - - def all_systems(self, start_page): - self.stop_auto = False - data = self.api.list_systems(start_page) - pages = total_pages(self.api.last_meta) - print(f'{pages} pages of systems') - print(f'page {1}: {len(data)} results') - self.all_waypoints(data) - self.store.flush() - - for p in range(start_page+1, pages): - if self.stop_auto: - break - data = self.api.list_systems(p) - print(f'page {p}: {len(data)} systems') - self.all_waypoints(data) - sleep(0.5) - self.store.flush() + self.atlas_builder.run(page) def do_systems(self, page=1): r = self.api.list_systems(int(page))