Split out event type SIGs, and do other enum conversions. Closes #138

This commit is contained in:
Ian Renton
2026-09-02 09:38:05 +01:00
parent 606cf1be68
commit 9d117a6069
54 changed files with 363 additions and 155 deletions
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -27,7 +28,7 @@ class ARLHS(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("Name", None),
ref_type="Lighthouse",
ref_type=SIGRefType.LIGHTHOUSE,
url=f"https://www.cqgma.org/zinfo.php?ref={ref_id}",
latitude=float(row["Latitude"]) if "Latitude" in row and row["Latitude"] != "" else None,
longitude=float(row["Longitude"]) if "Longitude" in row and row["Longitude"] != "" else None,
+2 -1
View File
@@ -2,6 +2,7 @@ from time import sleep
from pyhamtools.locator import latlong_to_locator
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import FileDownloadSIGRefDataProvider
@@ -32,7 +33,7 @@ class COTA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=name,
ref_type="Castle",
ref_type=SIGRefType.CASTLE,
grid=grid,
latitude=lat,
longitude=lon,
+2 -1
View File
@@ -3,6 +3,7 @@ from time import sleep
from pyhamtools.locator import latlong_to_locator
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.local_file_sig_ref_data_provider import (
LocalFileSIGRefDataProvider,
@@ -37,7 +38,7 @@ class DME(LocalFileSIGRefDataProvider):
ref = SIGRef(
sig=self.SIG,
id=ref_id,
ref_type="Town",
ref_type=SIGRefType.TOWN,
name=f"{row['NOMBRE_ACTUAL']}, {row['PROVINCIA']}",
latitude=latitude,
longitude=longitude,
+2 -1
View File
@@ -1,5 +1,6 @@
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import FileDownloadSIGRefDataProvider
@@ -20,7 +21,7 @@ class DTMBA(FileDownloadSIGRefDataProvider):
split = row.split(";")
ref_id = split[0]
ref_name = split[1]
new_data.append(SIGRef(sig=self.SIG, id=ref_id, name=ref_name, ref_type="Building"))
new_data.append(SIGRef(sig=self.SIG, id=ref_id, name=ref_name, ref_type=SIGRefType.BUILDING))
# 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
+3 -2
View File
@@ -3,6 +3,7 @@ from time import sleep
import pdfplumber
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import FileDownloadSIGRefDataProvider
@@ -40,8 +41,8 @@ class FEA(FileDownloadSIGRefDataProvider):
# prefix and just use FEA-1234 or FEA 1234, so we add both copies to the database.
ref_id_1 = row[0].strip()
ref_id_2 = ref_id_1.replace("D-", "FEA-").replace("E-", "FEA-")
new_data.append(SIGRef(sig=self.SIG, id=ref_id_1, name=row[1].strip(), ref_type="Lighthouse"))
new_data.append(SIGRef(sig=self.SIG, id=ref_id_2, name=row[1].strip(), ref_type="Lighthouse"))
new_data.append(SIGRef(sig=self.SIG, id=ref_id_1, name=row[1].strip(), ref_type=SIGRefType.LIGHTHOUSE))
new_data.append(SIGRef(sig=self.SIG, id=ref_id_2, name=row[1].strip(), ref_type=SIGRefType.LIGHTHOUSE))
# 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
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -26,7 +27,7 @@ class GMA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("Name", None),
ref_type="Summit",
ref_type=SIGRefType.SUMMIT,
url=f"https://www.cqgma.org/zinfo.php?ref={ref_id}",
latitude=float(row["Latitude"]) if "Latitude" in row and row["Latitude"] != "" else None,
longitude=float(row["Longitude"]) if "Longitude" in row and row["Longitude"] != "" else None,
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -27,7 +28,7 @@ class ILLW(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("Name", None),
ref_type="Lighthouse",
ref_type=SIGRefType.LIGHTHOUSE,
url=f"https://www.cqgma.org/zinfo.php?ref={ref_id}",
latitude=float(row["Latitude"]) if "Latitude" in row and row["Latitude"] != "" else None,
longitude=float(row["Longitude"]) if "Longitude" in row and row["Longitude"] != "" else None,
+2 -1
View File
@@ -3,6 +3,7 @@ from time import sleep
from pyhamtools.locator import latlong_to_locator
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -44,7 +45,7 @@ class IOTA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=ref["name"],
ref_type="Island",
ref_type=SIGRefType.ISLAND,
grid=grid,
latitude=latitude,
longitude=longitude,
+2 -1
View File
@@ -2,6 +2,7 @@ from time import sleep
from pyhamtools.locator import locator_to_latlong
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -32,7 +33,7 @@ class LLOTA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=str(ref["name"]),
ref_type="Lake",
ref_type=SIGRefType.LAKE,
url=f"https://llota.app/list/ref/{ref_id}",
grid=grid,
latitude=ll[0],
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -26,7 +27,7 @@ class MOTA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("Name", None),
ref_type="Mill",
ref_type=SIGRefType.MILL,
url=f"https://www.cqgma.org/zinfo.php?ref={ref_id}",
latitude=float(row["Latitude"]) if "Latitude" in row and row["Latitude"] != "" else None,
longitude=float(row["Longitude"]) if "Longitude" in row and row["Longitude"] != "" else None,
+2 -1
View File
@@ -2,6 +2,7 @@ from time import sleep
from bs4 import BeautifulSoup
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import FileDownloadSIGRefDataProvider
@@ -41,7 +42,7 @@ class PGA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=name,
ref_type="Region",
ref_type=SIGRefType.REGION,
)
)
@@ -4,6 +4,7 @@ from time import sleep
from fastkml import kml
from pyhamtools.locator import latlong_to_locator
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -43,7 +44,7 @@ class ParksNPeaksKMLSIGRefDataProvider(FileDownloadSIGRefDataProvider):
sig=self.sig_name,
id=ref_id,
name=placemark.name,
ref_type="Park",
ref_type=SIGRefType.PARK,
url=f"https://parksnpeaks.org/getPark.php?actPark={ref_id}",
latitude=latitude,
longitude=longitude,
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -26,7 +27,7 @@ class POTA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("name", None),
ref_type="Park",
ref_type=SIGRefType.PARK,
url=f"https://pota.app/#/park/{ref_id}",
grid=row.get("grid", None),
latitude=float(row["latitude"]) if "latitude" in row and row["latitude"] != "" else None,
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -26,7 +27,7 @@ class SIOTA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("NAME", None),
ref_type="Silo",
ref_type=SIGRefType.SILO,
grid=row.get("LOCATOR", None),
latitude=float(row["LAT"]) if "LAT" in row else None,
longitude=float(row["LNG"]) if "LNG" in row else None,
+2 -1
View File
@@ -3,6 +3,7 @@ from time import sleep
from pyhamtools.locator import latlong_to_locator
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -30,7 +31,7 @@ class SOTA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("SummitName", None),
ref_type="Summit",
ref_type=SIGRefType.SUMMIT,
url=f"https://www.sotadata.org.uk/en/summit/{ref_id}",
latitude=latitude,
longitude=longitude,
+2 -1
View File
@@ -1,5 +1,6 @@
import csv
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.local_file_sig_ref_data_provider import (
LocalFileSIGRefDataProvider,
@@ -26,7 +27,7 @@ class Toilets(LocalFileSIGRefDataProvider):
sig=self.SIG,
id=row["ref"],
name=row["ref"],
ref_type="Toilet",
ref_type=SIGRefType.TOILET,
latitude=float(row["lat"]),
longitude=float(row["lon"]),
)
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -26,7 +27,7 @@ class Towers(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("Nazev", None),
ref_type="Tower",
ref_type=SIGRefType.TOWER,
url=f"https://wwtota.com/seznam/karta_rozhledny.php?ref={ref_id}",
grid=row["Lokator"] if "Lokator" in row and row["Lokator"] != "" else None,
latitude=float(row["Lat"]) if "Lat" in row and row["Lat"] != "" else None,
+2 -1
View File
@@ -4,6 +4,7 @@ from time import sleep
from pyhamtools.locator import latlong_to_locator
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -45,7 +46,7 @@ class WCA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("CLEAN NAME", None),
ref_type="Castle",
ref_type=SIGRefType.CASTLE,
url=f"https://www.cqgma.org/zinfo.php?ref={ref_id}",
latitude=latitude,
longitude=longitude,
+2 -1
View File
@@ -1,5 +1,6 @@
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -33,7 +34,7 @@ class WOTA(FileDownloadSIGRefDataProvider):
id=ref_id,
name=feature["properties"]["title"],
url=url,
ref_type="Summit",
ref_type=SIGRefType.SUMMIT,
grid=feature["properties"]["qthLocator"],
latitude=feature["geometry"]["coordinates"][1],
longitude=feature["geometry"]["coordinates"][0],
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -26,7 +27,7 @@ class WWBOTA(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("Name", None),
ref_type="Bunker",
ref_type=SIGRefType.BUNKER,
url=f"https://bunkerwiki.org/?s={ref_id}" if ref_id.startswith("B/G") else None,
grid=row["Locator"] if "Locator" in row and row["Locator"] != "" else None,
latitude=float(row["Lat"]) if "Lat" in row and row["Lat"] != "" else None,
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
from time import sleep
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -26,7 +27,7 @@ class WWFF(FileDownloadSIGRefDataProvider):
sig=self.SIG,
id=ref_id,
name=row.get("name", None),
ref_type="Park",
ref_type=SIGRefType.PARK,
url=f"https://wwff.co/directory/?showRef={ref_id}",
grid=row["iaruLocator"] if "iaruLocator" in row and row["iaruLocator"] != "-" else None,
latitude=float(row["latitude"])
+6 -1
View File
@@ -2,6 +2,7 @@ from time import sleep
from pyhamtools.locator import latlong_to_locator
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from providers.sigrefdata.file_download_sig_ref_data_provider import (
FileDownloadSIGRefDataProvider,
@@ -26,12 +27,16 @@ class ZLOTA(FileDownloadSIGRefDataProvider):
ref_id = ref["code"]
latitude = ref["latitude"]
longitude = ref["longitude"]
try:
ref_type = SIGRefType(ref["asset_type"].title().upper())
except ValueError:
ref_type = SIGRefType.UNKNOWN
new_ref = SIGRef(
sig=self.SIG,
id=ref_id,
name=ref["name"],
ref_type=ref["asset_type"].title(),
ref_type=ref_type,
url=f"https://ontheair.nz/assets/{ref_id.replace('/', '_')}",
latitude=latitude,
longitude=longitude,
+11 -1
View File
@@ -4,6 +4,7 @@ from datetime import datetime
import pytz
from core.constants import HTTP_HEADERS
from core.enums import Mode, SIGRefType
from core.url_data_cache import URLDataCache
from data.sig_ref import SIGRef
from data.spot import Spot
@@ -65,7 +66,9 @@ class GMA(HTTPSpotProvider):
if (source_spot["QRG"] != "" and source_spot["QRG"] != "QRT")
else None,
# Filter out some weird mode strings
mode=source_spot["MODE"].upper() if "<>" not in source_spot["MODE"] else None,
mode=Mode.from_name(source_spot["MODE"].upper())
if "<>" not in source_spot["MODE"]
else Mode.UNKNOWN,
comment=source_spot["TEXT"],
sig_refs=[
SIGRef(
@@ -113,24 +116,31 @@ class GMA(HTTPSpotProvider):
match ref_info["reftype"]:
case "Summit":
spot.sig_refs[0].sig = "GMA"
spot.sig_refs[0].ref_type = SIGRefType.SUMMIT
spot.sig = "GMA"
case "IOTA Island":
spot.sig_refs[0].sig = "IOTA"
spot.sig_refs[0].ref_type = SIGRefType.ISLAND
spot.sig = "IOTA"
case "GMA Island":
spot.sig_refs[0].sig = "GMA Islands"
spot.sig_refs[0].ref_type = SIGRefType.ISLAND
spot.sig = "GMA Islands"
case "Lighthouse (ILLW)":
spot.sig_refs[0].sig = "ILLW"
spot.sig_refs[0].ref_type = SIGRefType.LIGHTHOUSE
spot.sig = "ILLW"
case "Lighthouse (ARLHS)":
spot.sig_refs[0].sig = "ARLHS"
spot.sig_refs[0].ref_type = SIGRefType.LIGHTHOUSE
spot.sig = "ARLHS"
case "Castle":
spot.sig_refs[0].sig = "WCA"
spot.sig_refs[0].ref_type = SIGRefType.CASTLE
spot.sig = "WCA"
case "Mill":
spot.sig_refs[0].sig = "MOTA"
spot.sig_refs[0].ref_type = SIGRefType.MILL
spot.sig = "MOTA"
case _:
logger.warning(
+3 -1
View File
@@ -7,6 +7,7 @@ import requests
from requests.exceptions import ConnectionError, ConnectTimeout, ReadTimeout
from core.constants import HTTP_HEADERS
from core.enums import Mode, SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -59,7 +60,7 @@ class HEMA(HTTPSpotProvider):
dx_call=spot_items[2].upper(),
de_call=spotter_comment_match.group(1).upper(),
freq=float(freq_mode_match.group(1)) * 1000000,
mode=freq_mode_match.group(2).upper(),
mode=Mode.from_name(freq_mode_match.group(2).upper()),
comment=spotter_comment_match.group(2),
sig="HEMA",
sig_refs=[
@@ -69,6 +70,7 @@ class HEMA(HTTPSpotProvider):
name=spot_items[4],
latitude=float(spot_items[7]),
longitude=float(spot_items[8]),
ref_type=SIGRefType.SUMMIT,
)
],
time=datetime.strptime(spot_items[0], "%d/%m/%Y %H:%M")
+3 -1
View File
@@ -1,5 +1,6 @@
from datetime import datetime
from core.enums import Mode, SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -31,7 +32,7 @@ class LLOTA(HTTPSpotProvider):
dx_call=source_spot["callsign"].upper(),
de_call=spotter.upper() if spotter else None,
freq=float(source_spot["frequency"]) * 1000000,
mode=source_spot["mode"].upper(),
mode=Mode.from_name(source_spot["mode"].upper()),
comment=comment,
sig="LLOTA",
sig_refs=[
@@ -39,6 +40,7 @@ class LLOTA(HTTPSpotProvider):
id=source_spot["reference"],
sig="LLOTA",
name=source_spot["reference_name"],
ref_type=SIGRefType.LAKE,
)
],
time=datetime.fromisoformat(source_spot["updated_at"].replace("Z", "+00:00")).timestamp(),
+2 -1
View File
@@ -6,6 +6,7 @@ import pytz
import requests
from core.constants import HTTP_HEADERS
from core.enums import Mode
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -51,7 +52,7 @@ class ParksNPeaks(HTTPSpotProvider):
if (source_spot["actFreq"] != "")
else None,
# Seen PNP spots with empty frequency, and with comma-separated thousands digits
mode=source_spot["actMode"].upper(),
mode=Mode.from_name(source_spot["actMode"].upper()),
comment=source_spot["actComments"],
time=datetime.strptime(source_spot["actTime"], "%Y-%m-%d %H:%M:%S")
.replace(tzinfo=pytz.UTC)
+3 -1
View File
@@ -4,6 +4,7 @@ import pytz
import requests
from core.constants import HTTP_HEADERS
from core.enums import Mode, SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -30,7 +31,7 @@ class POTA(HTTPSpotProvider):
dx_call=source_spot["activator"].upper(),
de_call=source_spot["spotter"].upper(),
freq=float(source_spot["frequency"]) * 1000 if source_spot["frequency"] != "INVALID" else None,
mode=source_spot["mode"].upper(),
mode=Mode.from_name(source_spot["mode"].upper()),
comment=source_spot["comments"],
sig="POTA",
sig_refs=[
@@ -40,6 +41,7 @@ class POTA(HTTPSpotProvider):
name=source_spot["name"],
latitude=source_spot["latitude"],
longitude=source_spot["longitude"],
ref_type=SIGRefType.PARK
)
],
time=datetime.strptime(source_spot["spotTime"], "%Y-%m-%dT%H:%M:%S")
+3 -1
View File
@@ -5,6 +5,7 @@ import requests
from requests.exceptions import ConnectionError, ConnectTimeout, ReadTimeout
from core.constants import HTTP_HEADERS
from core.enums import Mode, SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -53,7 +54,7 @@ class SOTA(HTTPSpotProvider):
if (source_spot["frequency"] is not None)
else None,
# Seen SOTA spots with no frequency!
mode=source_spot["mode"].upper(),
mode=Mode.from_name(source_spot["mode"].upper()),
comment=source_spot["comments"],
sig="SOTA",
sig_refs=[
@@ -64,6 +65,7 @@ class SOTA(HTTPSpotProvider):
latitude=source_spot["latitude"],
longitude=source_spot["longitude"],
activation_score=source_spot["points"],
ref_type=SIGRefType.SUMMIT,
)
],
dx_latitude=source_spot["latitude"],
+3 -2
View File
@@ -4,7 +4,7 @@ from datetime import datetime
import requests
from core.constants import HTTP_HEADERS
from core.enums import LocationSourceForSpot
from core.enums import LocationSourceForSpot, Mode, SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -56,7 +56,7 @@ class Tiles(HTTPSpotProvider):
# No separate spotter callsign, assume all spots are self-spots
de_call=source_spot["call_sign"].upper(),
freq=freq,
mode=source_spot["mode"].upper(),
mode=Mode.from_name(source_spot["mode"].upper()),
comment=source_spot["notes"],
sig="Tiles",
# Tiles spots can include POTA & SOTA references, but ignore those on the basis that we will get them separately from the POTA/SOTA providers anyway.
@@ -68,6 +68,7 @@ class Tiles(HTTPSpotProvider):
name=source_spot["maidenhead_grid"],
latitude=source_spot["latitude"],
longitude=source_spot["longitude"],
ref_type=SIGRefType.GRID
)
],
time=datetime.fromisoformat(source_spot["created_at"].replace("Z", "+00:00")).timestamp(),
+7 -4
View File
@@ -1,6 +1,9 @@
import json
from datetime import datetime
import pytz
from core.enums import SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -32,10 +35,10 @@ class Towers(HTTPSpotProvider):
freq=likely_freq,
comment=source_spot["comment"],
sig="Towers",
sig_refs=[SIGRef(id=source_spot["ref"], sig="Towers")],
time=datetime.strptime(
response_json["updated"][:10] + source_spot["time"], "%Y-%m-%d%H:%M"
).timestamp(),
sig_refs=[SIGRef(id=source_spot["ref"], sig="Towers", ref_type=SIGRefType.TOWER)],
time=datetime.strptime(response_json["updated"][:10] + source_spot["time"], "%Y-%m-%d%H:%M")
.replace(tzinfo=pytz.utc)
.timestamp(),
)
# Add to our list. Don't worry about de-duping, removing old spots etc. at this point; other code will do
+2 -1
View File
@@ -3,6 +3,7 @@ from datetime import datetime
import pytz
from core.enums import Mode
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -77,7 +78,7 @@ class UKPacketNet(HTTPSpotProvider):
dx_call=heard["callsign"].upper(),
de_call=node["callsign"].upper(),
freq=freq,
mode="PKT",
mode=Mode.PKT,
comment=comment,
time=datetime.strptime(heard["lastHeard"], "%Y-%m-%d %H:%M:%S")
.replace(tzinfo=pytz.UTC)
+3 -2
View File
@@ -8,6 +8,7 @@ import pytz
from rss_parser import Parser
from rss_parser.models.rss import RSS
from core.enums import Mode, SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -87,10 +88,10 @@ class WOTA(HTTPSpotProvider):
dx_call=dx_call,
de_call=spotter,
freq=freq_hz,
mode=mode,
mode=Mode.from_name(mode),
comment=comment,
sig="WOTA",
sig_refs=[SIGRef(id=ref, sig="WOTA", name=ref_name)] if ref else [],
sig_refs=[SIGRef(id=ref, sig="WOTA", name=ref_name, ref_type=SIGRefType.SUMMIT)] if ref else [],
time=time.timestamp(),
)
+3 -1
View File
@@ -1,6 +1,7 @@
import json
from datetime import datetime
from core.enums import Mode, SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.sse_spot_provider import SSESpotProvider
@@ -26,6 +27,7 @@ class WWBOTA(SSESpotProvider):
name=ref["name"],
latitude=ref["lat"],
longitude=ref["long"],
ref_type=SIGRefType.BUNKER
)
refs.append(sigref)
@@ -34,7 +36,7 @@ class WWBOTA(SSESpotProvider):
dx_call=source_spot["call"].upper(),
de_call=source_spot["spotter"].upper(),
freq=float(source_spot["freq"]) * 1000000,
mode=source_spot["mode"].upper() if "mode" in source_spot else None,
mode=Mode.from_name(source_spot["mode"].upper()) if "mode" in source_spot else Mode.UNKNOWN,
comment=source_spot["comment"],
sig="WWBOTA",
sig_refs=refs,
+3 -1
View File
@@ -2,6 +2,7 @@ from datetime import datetime
import pytz
from core.enums import Mode, SIGRefType
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -27,7 +28,7 @@ class WWFF(HTTPSpotProvider):
dx_call=source_spot["activator"].upper(),
de_call=source_spot["spotter"].upper(),
freq=float(source_spot["frequency_khz"]) * 1000,
mode=source_spot["mode"].upper(),
mode=Mode.from_name(source_spot["mode"].upper()),
comment=source_spot["remarks"],
sig="WWFF",
sig_refs=[
@@ -37,6 +38,7 @@ class WWFF(HTTPSpotProvider):
name=source_spot["reference_name"],
latitude=source_spot["latitude"],
longitude=source_spot["longitude"],
ref_type=SIGRefType.PARK
)
],
time=datetime.fromtimestamp(source_spot["spot_time"], tz=pytz.UTC).timestamp(),
+2 -1
View File
@@ -3,6 +3,7 @@ from datetime import datetime
import pytz
from core.enums import Mode
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.websocket_spot_provider import WebsocketSpotProvider
@@ -34,7 +35,7 @@ class XOTA(WebsocketSpotProvider):
source_id=source_spot["id"],
dx_call=source_spot["stationCallSign"].upper(),
freq=float(source_spot["freq"]) * 1000,
mode=source_spot["mode"].upper(),
mode=Mode.from_name(source_spot["mode"].upper()),
sig=self.SIG,
sig_refs=[
SIGRef(
+2 -1
View File
@@ -2,6 +2,7 @@ from datetime import datetime
import pytz
from core.enums import Mode
from data.sig_ref import SIGRef
from data.spot import Spot
from providers.spot.http_spot_provider import HTTPSpotProvider
@@ -32,7 +33,7 @@ class ZLOTA(HTTPSpotProvider):
dx_call=source_spot["activator"].upper(),
de_call=source_spot["spotter"].upper(),
freq=freq_hz,
mode=source_spot["mode"].upper().strip(),
mode=Mode.from_name(source_spot["mode"].upper().strip()),
comment=source_spot["comments"],
sig="ZLOTA",
sig_refs=[