diff --git a/modules/globalalert.py b/modules/globalalert.py index 7b4d773..65fff23 100644 --- a/modules/globalalert.py +++ b/modules/globalalert.py @@ -10,8 +10,8 @@ import bs4 as bs # pip install beautifulsoup4 from modules.log import logger from modules.settings import urlTimeoutSeconds, NO_ALERTS, myRegionalKeysDE -trap_list_location_eu = ("ukalert", "ukwx", "ukflood") -trap_list_location_de = ("dealert", "dewx", "deflood") +trap_list_location_eu = ("ukalert") +trap_list_location_de = ("dealert") def get_govUK_alerts(lat, lon): try: @@ -48,7 +48,7 @@ def get_nina_alerts(): return NO_ALERTS def get_wxUKgov(): - # get UK weather warnings + # get UK weather warnings, these look icky url = 'https://www.metoffice.gov.uk/weather/guides/rss' url = 'https://www.metoffice.gov.uk/public/data/PWSCache/WarningsRSS/Region/nw' try: @@ -72,7 +72,62 @@ def get_wxUKgov(): def get_floodUKgov(): - # get UK flood warnings + # get UK flood warnings, there is so much I need a locals help url = 'https://environment.data.gov.uk/flood-widgets/rss/feed-England.xml' return NO_ALERTS + +def get_crimeUKgov(lat, lon): + """ + Fetches recent street crime data from UK Police API for given lat/lon. + Returns a summary string or NO_ALERTS. -- pay for use? + """ + date = datetime.datetime.now().strftime("%Y-%m") + url = f'https://data.police.uk/api/crimes-street/all-crime?date={date}&lat={lat}&lng={lon}' + try: + response = requests.get(url, timeout=urlTimeoutSeconds) + if not response.ok or not response.text.strip(): + return NO_ALERTS + crimes = response.json() + if not crimes: + return NO_ALERTS + # Summarize the first few crimes + summaries = [] + for crime in crimes[:3]: + category = crime.get("category", "Unknown") + outcome = crime.get("outcome_status", {}).get("category", "No outcome") + location = crime.get("location", {}).get("street", {}).get("name", "Unknown location") + summaries.append(f"{category.title()} at {location} ({outcome})") + return "\n".join(summaries) + except Exception as e: + logger.warning(f"Error fetching UK crime data: {e}") + return NO_ALERTS + +def get_crime_stopsUKgov(lat, lon): + """ + Fetches recent stop-and-search data from UK Police API for given lat/lon. + Returns a summary string or NO_ALERTS. -- pay for use? + """ + date = datetime.datetime.now().strftime("%Y-%m") + url = f'https://data.police.uk/api/stops-street?date={date}&lat={lat}&lng={lon}' + try: + response = requests.get(url, timeout=urlTimeoutSeconds) + if not response.ok or not response.text.strip(): + return NO_ALERTS + stops = response.json() + if not stops: + return NO_ALERTS + # Summarize the first few stops + summaries = [] + for stop in stops[:3]: # Limit to first 3 stops for brevity + summary = ( + f"Date: {stop.get('datetime', 'N/A')}, " + f"Outcome: {stop.get('outcome', 'N/A')}, " + f"Ethnicity: {stop.get('self_defined_ethnicity', 'N/A')}, " + f"Gender: {stop.get('gender', 'N/A')}, " + f"Location: {stop.get('location', {}).get('street', {}).get('name', 'N/A')}" + ) + summaries.append(summary) + return "\n".join(summaries) + except Exception as e: + return NO_ALERTS