def get_or_create_portal(portal): latE6 = portal['latE6'] lngE6 = portal['lngE6'] if not within_range(latE6, lngE6): logging.error('found a outside portal ({}, {}), ignored'.format( latE6, lngE6)) return None try: obj_portal = Portal.objects.get( latE6=latE6, lngE6=lngE6, has_problem=False, ) if obj_portal.team != portal['team'][0]: obj_portal.team = portal['team'][0] obj_portal.save() except Portal.DoesNotExist: obj_portal = Portal.objects.create( guid=str(uuid.uuid4()), name=portal['name'], team=portal['team'][0], latE6=portal['latE6'], lngE6=portal['lngE6'], has_real_guid=False, ) return obj_portal
def get_or_create_portal(portal): latE6=portal['latE6'] lngE6=portal['lngE6'] if not within_range(latE6, lngE6): logging.error('found a outside portal ({}, {}), ignored'.format( latE6, lngE6)) return None try: obj_portal = Portal.objects.get( latE6=latE6, lngE6=lngE6, has_problem=False, ) if obj_portal.team != portal['team'][0]: obj_portal.team = portal['team'][0] obj_portal.save() except Portal.DoesNotExist: obj_portal = Portal.objects.create( guid=str(uuid.uuid4()), name=portal['name'], team=portal['team'][0], latE6=portal['latE6'], lngE6=portal['lngE6'], has_real_guid=False, ) return obj_portal
def get_or_create_portal(portal): latE6 = portal['latE6'] lngE6 = portal['lngE6'] if not within_range(latE6, lngE6): logging.info('found a stranger portal, ignored') return None try: obj_portal = Portal.objects.get(pk=portal['guid']) if obj_portal.team != portal['team'][0]: obj_portal.team = portal['team'][0] obj_portal.save() except Portal.DoesNotExist: obj_portal = Portal.objects.create( guid=portal['guid'], name=portal['name'], team=portal['team'][0], latE6=portal['latE6'], lngE6=portal['lngE6'], ) return obj_portal
def get_or_create_portal(portal): latE6=portal['latE6'] lngE6=portal['lngE6'] if not within_range(latE6, lngE6): logging.info('found a stranger portal, ignored') return None try: obj_portal = Portal.objects.get(pk=portal['guid']) if obj_portal.team != portal['team'][0]: obj_portal.team = portal['team'][0] obj_portal.save() except Portal.DoesNotExist: obj_portal = Portal.objects.create( guid=portal['guid'], name=portal['name'], team=portal['team'][0], latE6=portal['latE6'], lngE6=portal['lngE6'], ) return obj_portal
def get_entities(): old_datetime = now() - datetime.timedelta(seconds=60 * 60 * 24) tiles = Tile.objects.filter(updated__lt=old_datetime).order_by('updated')[:3] if not tiles: return tileKeys = [x.key for x in tiles] payload = get_payload(tileKeys) try: r = requests.post( "https://www.ingress.com/r/getEntities", data=json.dumps(payload), headers=HEADERS ) except: logging.exception('Error in get_entities():') return try: result = json.loads(r.text) except: logging.exception('') logging.error(r.text) return count_info = {} tiles_dict = result['result']['map'] for tile_key, value in tiles_dict.items(): tile_key_n = tile_key + '_n' if 'error' in value: logging.error('Error {} found for tile: {}'.format(value['error'], tile_key)) continue if 'gameEntities' not in value: logging.error('No gameEntities found for tile: {}'.format(tile_key)) continue portal_count = 0 portal_count_n = 0 portal_in_tile = None print('==========' + tile_key + '========') entities = value['gameEntities'] for item in entities: entity = item[2] if entity['type'] != 'portal': continue portal_count += 1 guid = item[0] latE6 = entity['latE6'] lngE6 = entity['lngE6'] if not within_range(latE6, lngE6): continue name = entity['title'] team = entity['team'] if team == 'NEUTRAL': portal_count_n += 1 portal = {} portal['guid'] = guid portal['name'] = entity['title'] portal['team'] = entity['team'] portal['latE6'] = entity['latE6'] portal['lngE6'] = entity['lngE6'] portal['level'] = entity['level'] portal['image'] = entity['image'] obj_portal = get_or_create_portal(portal) if obj_portal: portal_in_tile = obj_portal print('- ' + name + ' ' + guid + ' ' + team) count_info[tile_key] = portal_count count_info[tile_key_n] = portal_count_n count_info[tile_key + '_po'] = portal_in_tile # update last updated flag for tile in tiles: tile.portal_count = count_info.get(tile.key, 0) tile.n_po_count = count_info.get(tile.key + '_n', 0) tile.portal = count_info.get(tile.key + '_po', None) tile.save()
def get_entities(): old_datetime = now() - datetime.timedelta(seconds=60 * 60 * 24) tiles = Tile.objects.filter(updated__lt=old_datetime).order_by("updated")[:3] if not tiles: return tileKeys = [x.key for x in tiles] payload = get_payload(tileKeys) try: r = requests.post("https://www.ingress.com/r/getEntities", data=json.dumps(payload), headers=HEADERS) except: logging.exception("Error in get_entities():") return try: result = json.loads(r.text) except: logging.exception("") logging.error(r.text) return count_info = {} tiles_dict = result["result"]["map"] for tile_key, value in tiles_dict.items(): tile_key_n = tile_key + "_n" if "error" in value: logging.error("Error {} found for tile: {}".format(value["error"], tile_key)) continue if "gameEntities" not in value: logging.error("No gameEntities found for tile: {}".format(tile_key)) continue portal_count = 0 portal_count_n = 0 portal_in_tile = None print("==========" + tile_key + "========") entities = value["gameEntities"] for item in entities: entity = item[2] if entity["type"] != "portal": continue portal_count += 1 guid = item[0] latE6 = entity["latE6"] lngE6 = entity["lngE6"] if not within_range(latE6, lngE6): continue name = entity["title"] team = entity["team"] if team == "NEUTRAL": portal_count_n += 1 portal = {} portal["guid"] = guid portal["name"] = entity["title"] portal["team"] = entity["team"] portal["latE6"] = entity["latE6"] portal["lngE6"] = entity["lngE6"] portal["level"] = entity["level"] portal["image"] = entity["image"] obj_portal = get_or_create_portal(portal) if obj_portal: portal_in_tile = obj_portal print("- " + name + " " + guid + " " + team) count_info[tile_key] = portal_count count_info[tile_key_n] = portal_count_n count_info[tile_key + "_po"] = portal_in_tile # update last updated flag for tile in tiles: tile.portal_count = count_info.get(tile.key, 0) tile.n_po_count = count_info.get(tile.key + "_n", 0) tile.portal = count_info.get(tile.key + "_po", None) tile.save()
def get_entities(): old_datetime = now() - datetime.timedelta(seconds=60 * 60 * 24) tiles = Tile.objects.filter(updated__lt=old_datetime).order_by('updated')[:3] if not tiles: return tileKeys = [x.key for x in tiles] payload = get_payload(tileKeys) try: r = requests.post( "https://www.ingress.com/r/getEntities", data=json.dumps(payload), headers=HEADERS ) except: logging.exception('Error in get_entities():') return try: result = json.loads(r.text) except: logging.exception('') logging.error(r.text) return count_info = {} tiles_dict = result['result']['map'] for tile_key, value in tiles_dict.items(): if 'error' in value: logging.error('Error {} found for tile: {}'.format(value['error'], tile_key)) continue if 'gameEntities' not in value: logging.error('No gameEntities found for tile: {}'.format(tile_key)) continue portal_count = 0 print('==========' + tile_key + '========') entities = value['gameEntities'] for item in entities: entity = item[2] if entity['type'] != 'portal': continue portal_count += 1 guid = item[0] latE6 = entity['latE6'] lngE6 = entity['lngE6'] if not within_range(latE6, lngE6): continue name = entity['title'] team = entity['team'] portal = {} portal['guid'] = guid portal['name'] = entity['title'] portal['team'] = entity['team'] portal['latE6'] = entity['latE6'] portal['lngE6'] = entity['lngE6'] portal['level'] = entity['level'] portal['image'] = entity['image'] obj_portal = get_or_create_portal(portal) print('- ' + name + ' ' + guid + ' ' + team) count_info[tile_key] = portal_count # update last updated flag for tile in tiles: tile.portal_count = count_info.get(tile.key, 0) tile.save()