5 Commits

Author SHA1 Message Date
Ian Renton
a44b4f5eb6 README update 2026-04-02 19:54:24 +01:00
Ian Renton
edbbb13087 Conditions tweaks 2026-04-02 19:43:35 +01:00
Ian Renton
c58c22d9a9 Conditions tweaks 2026-04-02 19:39:54 +01:00
Ian Renton
11cec58f75 Merge remote-tracking branch 'origin/main' 2026-04-02 19:28:51 +01:00
Ian Renton
9814b656b2 Protection against strings getting into lat/lon 2026-04-02 19:28:42 +01:00
13 changed files with 38 additions and 24 deletions

View File

@@ -69,6 +69,8 @@ Various approaches exist to writing your own client, but in general:
If you want to run a copy of Spothole with different configuration settings than the main instance, you can download it and run it on your own local machine or server.
You will require Python version 3.8 or later. If you encounter an error about `gdal-config` during the following process, you will also need `libgdal-dev` installed.
To download and set up Spothole on a Debian server, run the following commands. Other operating systems will likely be similar.
```bash

View File

@@ -337,6 +337,12 @@ class Spot:
self.dx_grid = lookup_helper.infer_grid_from_callsign_dxcc(self.dx_call)
self.dx_location_source = "DXCC"
# It looks like we can sometimes get a string into lat/lon, so reject that before we try looking anything up
if type(self.dx_latitude) == "str" or type(self.dx_longitude) == "str":
logging.warning("Received strings in lat/lon (" + str(self.dx_latitude) + ", " + str(self.dx_longitude) + "), rejecting it")
self.dx_latitude = None
self.dx_longitude = None
# CQ and ITU zone lookup, preferably from location but failing that, from callsign
if not self.dx_cq_zone:
if self.dx_latitude:

View File

@@ -94,7 +94,13 @@ class HamQSL(HTTPSolarConditionsProvider):
"aurora_latitude": float_val("latdegree"),
"solar_wind": float_val("solarwind"),
"magnetic_field": float_val("magneticfield"),
"geomag_field": (lambda v: "Unsettled" if v == "Unsettld" else v)(text("geomagfield").title()),
"geomag_field": text("geomagfield").title()
.replace("Vr Quiet", "Very Quiet")
.replace("Unsettld", "Unsettled")
.replace("Min Strm", "Minor Storm")
.replace("Maj Strm", "Major Storm")
.replace("Sev Strm", "Severe Storm")
.replace("Ext Strm", "Extreme Storm"),
"geomag_noise": text("signalnoise"),
"hf_conditions": hf_conditions,
"vhf_conditions": {

View File

@@ -67,7 +67,7 @@
<p>This software is dedicated to the memory of Tom G1PJB, SK, a friend and colleague who sadly passed away around the time I started writing it in Autumn 2025. I was looking forward to showing it to you when it was done.</p>
</div>
<script src="/js/common.js?v=1774987999"></script>
<script src="/js/common.js?v=1775156064"></script>
<script>$(document).ready(function() { $("#nav-link-about").addClass("active"); }); <!-- highlight active page in nav --></script>
{% end %}

View File

@@ -69,8 +69,8 @@
</div>
<script src="/js/common.js?v=1774987999"></script>
<script src="/js/add-spot.js?v=1774987999"></script>
<script src="/js/common.js?v=1775156064"></script>
<script src="/js/add-spot.js?v=1775156064"></script>
<script>$(document).ready(function() { $("#nav-link-add-spot").addClass("active"); }); <!-- highlight active page in nav --></script>
{% end %}

View File

@@ -56,8 +56,8 @@
</div>
<script src="/js/common.js?v=1774987999"></script>
<script src="/js/alerts.js?v=1774987999"></script>
<script src="/js/common.js?v=1775156064"></script>
<script src="/js/alerts.js?v=1775156064"></script>
<script>$(document).ready(function() { $("#nav-link-alerts").addClass("active"); }); <!-- highlight active page in nav --></script>
{% end %}

View File

@@ -62,9 +62,9 @@
<script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script>
<script src="/js/common.js?v=1774987999"></script>
<script src="/js/spotsbandsandmap.js?v=1774987999"></script>
<script src="/js/bands.js?v=1774987999"></script>
<script src="/js/common.js?v=1775156064"></script>
<script src="/js/spotsbandsandmap.js?v=1775156064"></script>
<script src="/js/bands.js?v=1775156064"></script>
<script>$(document).ready(function() { $("#nav-link-bands").addClass("active"); }); <!-- highlight active page in nav --></script>
{% end %}

View File

@@ -46,10 +46,10 @@
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/tinycolor2@1.6.0/cjs/tinycolor.min.js"></script>
<script src="https://misc.ianrenton.com/jsutils/utils.js?v=1774987999"></script>
<script src="https://misc.ianrenton.com/jsutils/storage.js?v=1774987999"></script>
<script src="https://misc.ianrenton.com/jsutils/ui-ham.js?v=1774987999"></script>
<script src="https://misc.ianrenton.com/jsutils/geo.js?v=1774987999"></script>
<script src="https://misc.ianrenton.com/jsutils/utils.js?v=1775156064"></script>
<script src="https://misc.ianrenton.com/jsutils/storage.js?v=1775156064"></script>
<script src="https://misc.ianrenton.com/jsutils/ui-ham.js?v=1775156064"></script>
<script src="https://misc.ianrenton.com/jsutils/geo.js?v=1775156064"></script>
</head>
<body>

View File

@@ -189,8 +189,8 @@
</div>
</div>
<script src="/js/common.js?v=1774987999"></script>
<script src="/js/conditions.js?v=1774987999"></script>
<script src="/js/common.js?v=1775156064"></script>
<script src="/js/conditions.js?v=1775156064"></script>
<script>$(document).ready(function() { $("#nav-link-conditions").addClass("active"); }); <!-- highlight active page in nav --></script>
{% end %}

View File

@@ -70,9 +70,9 @@
<script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script>
<script src="/js/common.js?v=1774987999"></script>
<script src="/js/spotsbandsandmap.js?v=1774987999"></script>
<script src="/js/map.js?v=1774987999"></script>
<script src="/js/common.js?v=1775156064"></script>
<script src="/js/spotsbandsandmap.js?v=1775156064"></script>
<script src="/js/map.js?v=1775156064"></script>
<script>$(document).ready(function() { $("#nav-link-map").addClass("active"); }); <!-- highlight active page in nav --></script>
{% end %}

View File

@@ -87,9 +87,9 @@
<script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script>
<script src="/js/common.js?v=1774987999"></script>
<script src="/js/spotsbandsandmap.js?v=1774987999"></script>
<script src="/js/spots.js?v=1774987999"></script>
<script src="/js/common.js?v=1775156064"></script>
<script src="/js/spotsbandsandmap.js?v=1775156064"></script>
<script src="/js/spots.js?v=1775156064"></script>
<script>$(document).ready(function() { $("#nav-link-spots").addClass("active"); }); <!-- highlight active page in nav --></script>
{% end %}

View File

@@ -59,8 +59,8 @@
</div>
</div>
<script src="/js/common.js?v=1774987999"></script>
<script src="/js/status.js?v=1774987999"></script>
<script src="/js/common.js?v=1775156064"></script>
<script src="/js/status.js?v=1775156064"></script>
<script>
$(document).ready(function() { $("#nav-link-status").addClass("active"); }); <!-- highlight active page in nav -->
</script>

View File

@@ -76,7 +76,7 @@ function loadSolarConditions() {
const sfi = jsonData.sfi;
if (sfi !== null && sfi !== undefined) {
applySwClass('sw-solar-flux-vals', 'sw-solar-flux-desc',
sfi > 150 ? 'bg-success-subtle' : sfi > 90 ? 'bg-warning-subtle' : 'bg-danger-subtle');
sfi > 120 ? 'bg-success-subtle' : sfi > 90 ? 'bg-warning-subtle' : 'bg-danger-subtle');
}
const kIndex = jsonData.k_index;