landmarks / wikipedia_handler.py
Vishwas1's picture
Upload 5 files
ed11779 verified
import wikipedia
import requests
class WikipediaHandler:
def get_landmarks_in_area(self, bounds):
"""Fetch landmarks within the given bounds using the Wikipedia API."""
url = "https://en.wikipedia.org/w/api.php"
# Default coordinates (New York City) in case bounds are None
default_lat, default_lon = 40.7128, -74.0060
# Use default coordinates if bounds are None or contain None values
north = bounds.get('north')
south = bounds.get('south')
east = bounds.get('east')
west = bounds.get('west')
if north is None or south is None or east is None or west is None:
center_lat, center_lon = default_lat, default_lon
else:
center_lat = (north + south) / 2
center_lon = (east + west) / 2
params = {
"action": "query",
"format": "json",
"list": "geosearch",
"gscoord": f"{center_lat}|{center_lon}",
"gsradius": "10000",
"gslimit": "50"
}
response = requests.get(url, params=params)
data = response.json()
landmarks = []
for place in data["query"]["geosearch"]:
try:
page = wikipedia.page(place["title"])
landmarks.append({
"title": place["title"],
"lat": place["lat"],
"lon": place["lon"],
"summary": page.summary,
"url": page.url
})
except wikipedia.exceptions.DisambiguationError:
continue
except wikipedia.exceptions.PageError:
continue
return landmarks