mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2026-08-06 02:21:42 +00:00
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
import logging
|
|
|
|
from pyhamtools import LookupLib, Callinfo
|
|
|
|
from core.data_store import DATA_STORE
|
|
from core.utils import get_callsign_object_from_pyhamtools_callinfo
|
|
from providers.callsigndata.file_download_callsign_data_provider import FileDownloadCallsignDataProvider
|
|
|
|
|
|
class CountryFiles(FileDownloadCallsignDataProvider):
|
|
"""Callsign data provider for Country-files.com, which provides basic callsign to DXCC entity mapping."""
|
|
|
|
POLL_INTERVAL_DAYS = 30
|
|
DATA_URL = "https://www.country-files.com/cty/cty.plist"
|
|
CACHE_PATH = "cache/cty.plist"
|
|
_callinfo = None
|
|
|
|
def __init__(self, provider_config):
|
|
super().__init__("CountryFiles.com", provider_config, self.DATA_URL, self.CACHE_PATH, self.POLL_INTERVAL_DAYS,
|
|
DATA_STORE.callsign_data_countryfiles)
|
|
|
|
def _handle_file(self, path):
|
|
try:
|
|
lookuplib = LookupLib(lookuptype="countryfile", filename=path)
|
|
self._callinfo = Callinfo(lookuplib)
|
|
return True
|
|
|
|
except Exception as e:
|
|
logging.error("Exception when loading Country Files cty.plist.", e, exc_info=True)
|
|
return False
|
|
|
|
def _perform_new_lookup(self, callsign, lookup_credentials):
|
|
if self._callinfo:
|
|
return get_callsign_object_from_pyhamtools_callinfo(callsign, self._callinfo)
|
|
else:
|
|
return None
|