from data.sig_ref import SIGRef from sigrefdataproviders.file_download_sig_ref_data_provider import FileDownloadSIGRefDataProvider class WOTA(FileDownloadSIGRefDataProvider): """SIG ref data provider for Wainwrights on the Air""" POLL_INTERVAL_DAYS = 365 SIG = "WOTA" DATA_URL = "https://www.wota.org.uk/mapping/data/summits.json" def __init__(self, provider_config): super().__init__(self.SIG, provider_config, self.DATA_URL, self.POLL_INTERVAL_DAYS) def _http_response_to_data(self, http_response): new_data = [] for feature in http_response.json().get("features", []): ref_id = feature["properties"]["wotaId"] # Fudge WOTA URLs. Outlying fell (LDO) URLs don't match their ID numbers but require 214 to be # added to them url = "https://www.wota.org.uk/MM_" + ref_id if ref_id.upper().startswith("LDO-"): number = int(ref_id.upper().replace("LDO-", "")) url = "https://www.wota.org.uk/MM_LDO-" + str(number + 214) new_data.append(SIGRef(sig=self.SIG, id=ref_id, name=feature["properties"]["title"], url=url, grid=feature["properties"]["qthLocator"], latitude=feature["geometry"]["coordinates"][1], longitude=feature["geometry"]["coordinates"][0])) # Bail out if a stop has been requested, i.e. the program is shutting down - no need to parse the rest of # the data in this case if self._stop_event.is_set(): break return new_data