diff --git a/matcher/nominatim.py b/matcher/nominatim.py index f065625..4717139 100644 --- a/matcher/nominatim.py +++ b/matcher/nominatim.py @@ -31,6 +31,8 @@ def lookup_with_params(**kwargs: str) -> list[Hit]: r = requests.get(url, params=params, headers=user_agent_headers()) if r.status_code == 500: raise SearchError + if r.status_code == 403: + raise SearchError("Nominatim returned 403 Forbidden") try: reply: list[Hit] = json.loads(r.text, object_pairs_hook=OrderedDict) diff --git a/web_view.py b/web_view.py index 16049b3..f8147d8 100755 --- a/web_view.py +++ b/web_view.py @@ -653,7 +653,10 @@ def api_missing_wikidata_items(): @app.route("/api/1/search") def api_search(): q = flask.request.args["q"] - hits = nominatim.lookup(q) + try: + hits = nominatim.lookup(q) + except nominatim.SearchError as e: + return cors_jsonify({"success": False, "error": str(e)}, 503) for hit in hits: hit["name"] = nominatim.get_hit_name(hit) hit["label"] = nominatim.get_hit_label(hit)