This commit is contained in:
Matteo Rosati
2026-01-12 11:28:14 +01:00
commit 6416ad2018
9 changed files with 4802 additions and 0 deletions

78
ingress.py Normal file
View File

@@ -0,0 +1,78 @@
from typing import List, Optional
import requests
from models import Plext, EventType
class IngressAPI:
BASE_URL = "https://intel.ingress.com/r"
def __init__(self, version: str, cookie: str):
self.version = version
self.headers = {
'accept': 'application/json, text/javascript, */*; q=0.01',
'accept-language': 'it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7',
'content-type': 'application/json; charset=UTF-8',
'cookie': cookie,
'origin': 'https://intel.ingress.com',
'priority': 'u=1, i',
'referer': 'https://intel.ingress.com/',
'sec-ch-ua': '"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36',
'x-requested-with': 'XMLHttpRequest',
}
# Extract CSRF token from cookie and add to headers
for item in cookie.split(';'):
if 'csrftoken' in item:
self.headers['x-csrftoken'] = item.split('=')[1].strip()
break
def get_plexts(
self,
min_lat_e6: int,
min_lng_e6: int,
max_lat_e6: int,
max_lng_e6: int,
min_timestamp_ms: int = -1,
max_timestamp_ms: int = -1,
tab: str = "all",
event_types: Optional[List[EventType]] = None,
player_name: Optional[str] = None,
) -> List[Plext]:
"""
Fetches plexts from the Ingress API.
"""
payload = {
"minLatE6": min_lat_e6,
"minLngE6": min_lng_e6,
"maxLatE6": max_lat_e6,
"maxLngE6": max_lng_e6,
"minTimestampMs": min_timestamp_ms,
"maxTimestampMs": max_timestamp_ms,
"tab": tab,
"v": self.version,
}
response = requests.post(f"{self.BASE_URL}/getPlexts", json=payload, headers=self.headers)
response.raise_for_status()
try:
data = response.json()
except requests.exceptions.JSONDecodeError:
print(f"Error decoding JSON: {response.text}")
raise
plexts = [Plext.from_json(item) for item in data["result"]]
if event_types:
plexts = [p for p in plexts if p.get_event_type() in event_types]
if player_name:
plexts = [p for p in plexts if p.get_player_name() == player_name]
return plexts