def work(self): if not self.should_run(): return WorkerResult.SUCCESS nearest_fort = self.get_nearest_fort() if nearest_fort is None: return WorkerResult.SUCCESS lat = nearest_fort['latitude'] lng = nearest_fort['longitude'] fortID = nearest_fort['id'] details = fort_details(self.bot, fortID, lat, lng) fort_name = details.get('name', 'Unknown') unit = self.bot.config.distance_unit # Unit to use when printing formatted distance dist = distance(self.bot.position[0], self.bot.position[1], lat, lng) noised_dist = distance(self.bot.noised_position[0], self.bot.noised_position[1], lat, lng) moving = noised_dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE if self.bot.config.replicate_gps_xy_noise else dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE if moving: fort_event_data = { 'fort_name': u"{}".format(fort_name), 'distance': format_dist(dist, unit), } if self.is_attracted() > 0: fort_event_data.update( lure_distance=format_dist(self.lure_distance, unit)) self.emit_event( 'moving_to_lured_fort', formatted= "Moving towards pokestop {fort_name} - {distance} (attraction of lure {lure_distance})", data=fort_event_data) else: self.emit_event( 'moving_to_fort', formatted= "Moving towards pokestop {fort_name} - {distance}", data=fort_event_data) step_walker = walker_factory(self.walker, self.bot, lat, lng) if not step_walker.step(): return WorkerResult.RUNNING else: if nearest_fort.get('active_fort_modifier') and self.wait_at_fort: self.emit_event( 'arrived_at_fort', formatted='Waiting near fort %s till Lure module expired' % fort_name) else: self.emit_event('arrived_at_fort', formatted='Arrived at fort.') return WorkerResult.SUCCESS
def work(self): if not self.should_run(): return WorkerResult.SUCCESS nearest_fort = self.get_nearest_fort() if nearest_fort is None: return WorkerResult.SUCCESS lat = nearest_fort['latitude'] lng = nearest_fort['longitude'] fortID = nearest_fort['id'] details = fort_details(self.bot, fortID, lat, lng) fort_name = details.get('name', 'Unknown') unit = self.bot.config.distance_unit # Unit to use when printing formatted distance dist = distance( self.bot.position[0], self.bot.position[1], lat, lng ) if dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE: fort_event_data = { 'fort_name': u"{}".format(fort_name), 'distance': format_dist(dist, unit), } if self.is_attracted() > 0: fort_event_data.update(lure_distance=format_dist(self.lure_distance, unit)) self.emit_event( 'moving_to_lured_fort', formatted="Di chuyen toi pokestop {fort_name} - {distance}", data=fort_event_data ) else: self.emit_event( 'moving_to_fort', formatted="Di chuyen toi pokestop {fort_name} - {distance}", data=fort_event_data ) step_walker = StepWalker( self.bot, self.bot.config.walk, lat, lng ) if not step_walker.step(): return WorkerResult.RUNNING self.emit_event( 'arrived_at_fort', formatted='Arrived at fort.' ) return WorkerResult.SUCCESS
def work(self): if not self.should_run(): return WorkerResult.SUCCESS nearest_fort = self.get_nearest_fort() if nearest_fort is None: return WorkerResult.SUCCESS lat = nearest_fort['latitude'] lng = nearest_fort['longitude'] fortID = nearest_fort['id'] details = fort_details(self.bot, fortID, lat, lng) fort_name = details.get('name', 'Unknown') unit = self.bot.config.distance_unit # Unit to use when printing formatted distance dist = distance( self.bot.position[0], self.bot.position[1], lat, lng ) if dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE: fort_event_data = { 'fort_name': u"{}".format(fort_name), 'distance': format_dist(dist, unit), } if self.is_attracted() > 0: fort_event_data.update(lure_distance=format_dist(self.lure_distance, unit)) self.emit_event( 'moving_to_lured_fort', formatted="Moving towards pokestop {fort_name} - {distance} (attraction of lure {lure_distance})", data=fort_event_data ) else: self.emit_event( 'moving_to_fort', formatted="Moving towards pokestop {fort_name} - {distance}", data=fort_event_data ) step_walker = StepWalker( self.bot, lat, lng ) if not step_walker.step(): return WorkerResult.RUNNING self.emit_event( 'arrived_at_fort', formatted='Arrived at fort.' ) return WorkerResult.SUCCESS
def work(self): lat = self.fort['latitude'] lng = self.fort['longitude'] fortID = self.fort['id'] unit = self.config.distance_unit # Unit to use when printing formatted distance dist = distance(self.position[0], self.position[1], lat, lng) # print('[#] Found fort {} at distance {}m'.format(fortID, dist)) logger.log('[#] Found fort {} at distance {}'.format( fortID, format_dist(dist, unit))) if dist > 10: logger.log('[#] Need to move closer to Pokestop') position = (lat, lng, 0.0) if self.config.walk > 0: self.stepper._walk_to(self.config.walk, *position) else: self.api.set_position(*position) self.api.player_update(latitude=lat, longitude=lng) response_dict = self.api.call() logger.log('[#] Arrived at Pokestop') sleep(2) return response_dict return None
def work(self): lat = self.fort['latitude'] lng = self.fort['longitude'] fortID = self.fort['id'] unit = self.config.distance_unit # Unit to use when printing formatted distance dist = distance(self.position[0], self.position[1], lat, lng) # print('[#] Found fort {} at distance {}m'.format(fortID, dist)) logger.log('[#] Ditemukan {} jarak {}'.format( fortID, format_dist(dist, unit))) if dist > 10: logger.log('[#] Harus cari Pokestop') position = (lat, lng, 0.0) if self.config.walk > 0: self.stepper._walk_to(self.config.walk, *position) else: self.api.set_position(*position) self.api.player_update(latitude=lat, longitude=lng) response_dict = self.api.call() logger.log('[#] Sampai di Pokestop') sleep(2) return response_dict return None
def work(self): lat = self.fort['latitude'] lng = self.fort['longitude'] fortID = self.fort['id'] unit = self.config.distance_unit # Unit to use when printing formatted distance dist = distance(self.position[0], self.position[1], lat, lng) # print('[#] Found fort {} at distance {}m'.format(fortID, dist)) self.logger.info('[#] Found fort {} at distance {}'.format( fortID, format_dist(dist, unit))) if dist > 10: self.logger.info('[#] Need to move closer to Pokestop') position = (lat, lng, 0.0) if self.config.walk > 0: self.stepper._walk_to(self.config.walk, *position) else: self.api.set_position(*position) self.api.player_update(latitude=lat, longitude=lng) response_dict = self.api.call() self.logger.info('[#] Arrived at Pokestop') sleep(1) return response_dict return None
def work(self): if not self.should_run(): return WorkerResult.SUCCESS nearest_fort = self.get_nearest_fort() if nearest_fort is None: return WorkerResult.SUCCESS lat = nearest_fort['latitude'] lng = nearest_fort['longitude'] fortID = nearest_fort['id'] details = fort_details(self.bot, fortID, lat, lng) fort_name = details.get('name', 'Unknown').encode('utf8', 'replace') unit = self.bot.config.distance_unit # Unit to use when printing formatted distance dist = distance( self.bot.position[0], self.bot.position[1], lat, lng ) if dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE: if self.is_attracted() > 0: add_str = ' (attraction of lure {})'.format(format_dist(self.lure_distance, unit)) else: add_str = '' logger.log('Moving towards fort {}, {} left{}'.format(fort_name, format_dist(dist, unit), add_str)) step_walker = StepWalker( self.bot, self.bot.config.walk, lat, lng ) if not step_walker.step(): return WorkerResult.RUNNING logger.log('Arrived at pokestop.') return WorkerResult.SUCCESS
def work(self): if not self.should_run(): return WorkerResult.SUCCESS nearest_fort = self.get_nearest_fort() if nearest_fort is None: return WorkerResult.SUCCESS lat = nearest_fort["latitude"] lng = nearest_fort["longitude"] fortID = nearest_fort["id"] details = fort_details(self.bot, fortID, lat, lng) fort_name = details.get("name", "Unknown") unit = self.bot.config.distance_unit # Unit to use when printing formatted distance dist = distance(self.bot.position[0], self.bot.position[1], lat, lng) if dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE: fort_event_data = {"fort_name": "{}".format(fort_name), "distance": format_dist(dist, unit)} if self.is_attracted() > 0: fort_event_data.update(lure_distance=format_dist(self.lure_distance, unit)) self.emit_event( "moving_to_lured_fort", formatted="Moving towards pokestop {fort_name} - {distance} (attraction of lure {lure_distance})", data=fort_event_data, ) else: self.emit_event( "moving_to_fort", formatted="Moving towards pokestop {fort_name} - {distance}", data=fort_event_data ) step_walker = StepWalker(self.bot, self.bot.config.walk, lat, lng) if not step_walker.step(): return WorkerResult.RUNNING self.emit_event("arrived_at_fort", formatted="Arrived at fort.") return WorkerResult.SUCCESS
def work(self): lat = self.fort['latitude'] lng = self.fort['longitude'] fortID = self.fort['id'] unit = self.config.distance_unit # Unit to use when printing formatted distance dist = distance(self.position[0], self.position[1], lat, lng) # print('[#] Found fort {} at distance {}m'.format(fortID, dist)) logger.log('[#] Found fort {} at distance {}'.format( fortID, format_dist(dist, unit))) if dist > self.FLY_DIST: logger.log('[#] Need to move closer to Pokestop (' + str(int(dist)) + 'm away)') position = (lat, lng, 0.0) if self.config.walk > 0: self.stepper._walk_to(self.config.walk, *position) else: self.api.set_position(*position) self.api.player_update(latitude=lat, longitude=lng) response_dict = self.api.call() logger.log('[#] Arrived at Pokestop') # sleep(0.5) return response_dict elif dist <= self.FLY_DIST and dist > 10: # fly to the fort position = (lat, lng, 0.0) self.api.set_position(*position) self.api.player_update(latitude=lat, longitude=lng) response_dict = self.api.call() logger.log('[#] Flew to Pokestop (dist within ' + str(self.FLY_DIST) + 'm)') # sleep(0.5) return response_dict else: logger.log('[#] Arrived at Pokestop (within in 10m)') return None
def work(self): if not self.should_run(): return WorkerResult.SUCCESS nearest_fort = self.get_nearest_fort() if nearest_fort == None: return WorkerResult.SUCCESS lat = nearest_fort['latitude'] lng = nearest_fort['longitude'] fortID = nearest_fort['id'] unit = self.config.distance_unit # Unit to use when printing formatted distance dist = distance( self.position[0], self.position[1], lat, lng ) if dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE: logger.log('Moving towards fort {}, {} left'.format(fortID, format_dist(dist, unit))) step_walker = StepWalker( self.bot, self.config.walk, lat, lng ) if not step_walker.step(): return WorkerResult.RUNNING logger.log('Arrived at pokestop.') return WorkerResult.SUCCESS
def work(self): if not self.should_run(): return WorkerResult.SUCCESS nearest_fort = self.get_nearest_fort() if nearest_fort is None: return WorkerResult.SUCCESS lat = nearest_fort['latitude'] lng = nearest_fort['longitude'] fortID = nearest_fort['id'] details = fort_details(self.bot, fortID, lat, lng) fort_name = details.get('name', 'Unknown') unit = self.bot.config.distance_unit # Unit to use when printing formatted distance dist = distance( self.bot.position[0], self.bot.position[1], lat, lng ) noised_dist = distance( self.bot.noised_position[0], self.bot.noised_position[1], lat, lng ) moving = noised_dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE if self.bot.config.replicate_gps_xy_noise else dist > Constants.MAX_DISTANCE_FORT_IS_REACHABLE if moving: self.wait_log_sent = None fort_event_data = { 'fort_name': u"{}".format(fort_name), 'distance': format_dist(dist, unit), } if self.is_attracted() > 0: fort_event_data.update(lure_distance=format_dist(self.lure_distance, unit)) self.emit_event( 'moving_to_lured_fort', formatted="Moving towards pokestop {fort_name} - {distance} (attraction of lure {lure_distance})", data=fort_event_data ) else: self.emit_event( 'moving_to_fort', formatted="Moving towards pokestop {fort_name} - {distance}", data=fort_event_data ) step_walker = walker_factory(self.walker, self.bot, lat, lng ) if not step_walker.step(): return WorkerResult.RUNNING else: if nearest_fort.get('active_fort_modifier') and self.wait_at_fort: if self.wait_log_sent == None or self.wait_log_sent < datetime.now() - timedelta(seconds=60): self.wait_log_sent = datetime.now() self.emit_event( 'arrived_at_fort', formatted='Waiting near fort %s until lure module expires' % fort_name ) else: self.emit_event( 'arrived_at_fort', formatted='Arrived at fort.' ) return WorkerResult.RUNNING
def work(self): lat = self.fort["latitude"] lng = self.fort["longitude"] unit = self.config.distance_unit # Unit to use when printing formatted distance fortID = self.fort["id"] dist = distance(self.position[0], self.position[1], lat, lng) logger.log("[#] Found fort {} at distance {}".format(fortID, format_dist(dist, unit))) if dist > 0: logger.log("[#] Need to move closer to Pokestop") position = (lat, lng, 0.0) if self.config.walk > 0: self.stepper.walk_to(self.config.walk, *position) else: self.api.set_position(*position) self.api.player_update(latitude=lat, longitude=lng) logger.log("[#] Arrived at Pokestop") sleep(2) self.api.fort_details(fort_id=self.fort["id"], latitude=lat, longitude=lng) response_dict = self.api.call() fort_details = response_dict.get("responses", {}).get("FORT_DETAILS", {}) fort_name = fort_details.get("name").encode("utf8", "replace") fort_name = fort_name if fort_name is not None else "Unknown" logger.log("[#] Now at Pokestop: " + fort_name + " - Spinning...", "yellow") sleep(3) self.api.fort_search(fort_id=self.fort["id"], fort_latitude=lat, fort_longitude=lng, player_latitude=f2i(self.position[0]), player_longitude=f2i(self.position[1])) response_dict = self.api.call() spin_details = response_dict.get("responses", {}).get("FORT_SEARCH", {}) spin_result = spin_details.get("result") if spin_result == 1: logger.log("[+] Loot: ", "green") experience_awarded = spin_details.get("experience_awarded", False) if experience_awarded: logger.log("[+] " + str(experience_awarded) + " xp", "green") items_awarded = spin_details.get("items_awarded", False) if items_awarded: tmp_count_items = {} for item in items_awarded: item_id = item["item_id"] if item_id not in tmp_count_items: tmp_count_items[item_id] = item["item_count"] else: tmp_count_items[item_id] += item["item_count"] for item_id, item_count in tmp_count_items.iteritems(): item_id = str(item_id) item_name = self.item_list[item_id] logger.log("[+] " + str(item_count) + "x " + item_name, "green") else: logger.log("[#] Nothing found.", "yellow") pokestop_cooldown = spin_details.get( "cooldown_complete_timestamp_ms") if pokestop_cooldown: seconds_since_epoch = time.time() logger.log("[#] PokeStop on cooldown. Time left: " + str( format_time((pokestop_cooldown / 1000) - seconds_since_epoch))) if not items_awarded and not experience_awarded and not pokestop_cooldown: message = ( "Stopped at Pokestop and did not find experience, items " "or information about the stop cooldown. You are " "probably softbanned. Try to play on your phone, " "if pokemons always ran away and you find nothing in " "PokeStops you are indeed softbanned. Please try again " "in a few hours.") raise RuntimeError(message) elif spin_result == 2: logger.log("[#] Pokestop out of range") elif spin_result == 3: pokestop_cooldown = spin_details.get( "cooldown_complete_timestamp_ms") if pokestop_cooldown: seconds_since_epoch = time.time() logger.log("[#] PokeStop on cooldown. Time left: " + str( format_time((pokestop_cooldown / 1000) - seconds_since_epoch))) elif spin_result == 4: print_red("[#] Inventory is full, switching to catch mode...") self.config.mode = "poke" if "chain_hack_sequence_number" in fort_details: time.sleep(2) return fort_details[ "chain_hack_sequence_number"] else: print_yellow("[#] may search too often, lets have a rest") return 11 sleep(10) return 0
def work(self): lat = self.fort['latitude'] lng = self.fort['longitude'] unit = self.config.distance_unit # Unit to use when printing formatted distance fortID = self.fort['id'] dist = distance(self.position[0], self.position[1], lat, lng) # print('[#] Found fort {} at distance {}m'.format(fortID, dist)) logger.log('[#] Found fort {} at distance {}'.format( fortID, format_dist(dist, unit))) if dist > 10: logger.log('[#] Need to move closer to Pokestop') position = (lat, lng, 0.0) if self.config.walk > 0: self.stepper._walk_to(self.config.walk, *position) else: self.api.set_position(*position) self.api.player_update(latitude=lat, longitude=lng) response_dict = self.api.call() logger.log('[#] Arrived at Pokestop') sleep(2) self.api.fort_details(fort_id=self.fort['id'], latitude=lat, longitude=lng) response_dict = self.api.call() if 'responses' in response_dict \ and'FORT_DETAILS' in response_dict['responses'] \ and 'name' in response_dict['responses']['FORT_DETAILS']: fort_details = response_dict['responses']['FORT_DETAILS'] fort_name = fort_details['name'].encode('utf8', 'replace') else: fort_name = 'Unknown' logger.log('[#] Now at Pokestop: ' + fort_name + ' - Spinning...', 'yellow') sleep(2) self.api.fort_search(fort_id=self.fort['id'], fort_latitude=lat, fort_longitude=lng, player_latitude=f2i(self.position[0]), player_longitude=f2i(self.position[1])) response_dict = self.api.call() if 'responses' in response_dict and \ 'FORT_SEARCH' in response_dict['responses']: spin_details = response_dict['responses']['FORT_SEARCH'] if spin_details['result'] == 1: logger.log("[+] Loot: ", 'green') experience_awarded = spin_details.get('experience_awarded', False) if experience_awarded: logger.log("[+] " + str(experience_awarded) + " xp", 'green') items_awarded = spin_details.get('items_awarded', False) if items_awarded: tmp_count_items = {} for item in items_awarded: item_id = item['item_id'] if not item_id in tmp_count_items: tmp_count_items[item_id] = item['item_count'] else: tmp_count_items[item_id] += item['item_count'] for item_id, item_count in tmp_count_items.iteritems(): item_id = str(item_id) item_name = self.item_list[item_id] logger.log("[+] " + str(item_count) + "x " + item_name, 'green') else: logger.log("[#] Nothing found.", 'yellow') pokestop_cooldown = spin_details.get( 'cooldown_complete_timestamp_ms') if pokestop_cooldown: seconds_since_epoch = time.time() logger.log('[#] PokeStop on cooldown. Time left: ' + str( format_time((pokestop_cooldown / 1000) - seconds_since_epoch))) if not items_awarded and not experience_awarded and not pokestop_cooldown: message = ( 'Stopped at Pokestop and did not find experience, items ' 'or information about the stop cooldown. You are ' 'probably softbanned. Try to play on your phone, ' 'if pokemons always ran away and you find nothing in ' 'PokeStops you are indeed softbanned. Please try again ' 'in a few hours.') raise RuntimeError(message) elif spin_details['result'] == 2: logger.log("[#] Pokestop out of range") elif spin_details['result'] == 3: pokestop_cooldown = spin_details.get( 'cooldown_complete_timestamp_ms') if pokestop_cooldown: seconds_since_epoch = time.time() logger.log('[#] PokeStop on cooldown. Time left: ' + str( format_time((pokestop_cooldown / 1000) - seconds_since_epoch))) elif spin_details['result'] == 4: print_red("[#] Inventory is full, switching to catch mode...") self.config.mode = 'poke' if 'chain_hack_sequence_number' in response_dict['responses'][ 'FORT_SEARCH']: time.sleep(2) return response_dict['responses']['FORT_SEARCH'][ 'chain_hack_sequence_number'] else: print_yellow('[#] may search too often, lets have a rest') return 11 sleep(8) return 0