Skip to content

Instantly share code, notes, and snippets.

@LukePrior
Last active December 12, 2021 09:20
Show Gist options
  • Save LukePrior/e02b62f35eccddea096b141ffd871e4f to your computer and use it in GitHub Desktop.
Save LukePrior/e02b62f35eccddea096b141ffd871e4f to your computer and use it in GitHub Desktop.
Radiosondy.info recovery to SondeHub format
import pandas as pd
from datetime import datetime,timezone
from dateutil import parser
import requests
now = datetime.now(timezone.utc)
url = r'https://radiosondy.info/dyn/get_status.php'
data = pd.read_html(url)[0].values.tolist()
for row in data:
if (row[6] == "FOUND" or row[6] == "NEED ATTENTION"): # Only process manual updates
serial = row[0]
recovered = False
recovered_by = ""
description = ""
recovered_utc = parser.parse(row[8].split(" ", 1)[1]) # Get report time
difference = now - recovered_utc
if (difference.total_seconds() > 7200): # Only check last 2 hours
break
if (row[7] == row[7]): # NaN check
recovered_by = row[7]
else:
recovered_by = row[8].split()[0] # use callsign from update time is reported not found
if (row[6] == "FOUND"):
recovered = True
if (row[9] == row[9]): # NaN check
description = row[9]
description += " (Radiosondy.info)"
detailed_url = "https://radiosondy.info/sonde_archive.php?sondenumber=" + serial # need to check each sonde to find last reported location
detailed_data = pd.read_html(detailed_url)[0].values.tolist()[0]
lat = float(detailed_data[6].split(", ")[0])
lon = float(detailed_data[6].split(", ")[1])
alt = 0
data = {"datetime": recovered_utc.isoformat(), "serial": serial, "lat": lat, "lon": lon, "alt": alt, "recovered": recovered, "recovered_by": recovered_by, "description": description}
if (lat != 0 or lon != 0):
check_url = "https://api.v2.sondehub.org/recovered?serial=" + serial # Check if sonde has already been uploaded
r = requests.get(check_url)
if (len(r.json()) == 0):
r = requests.put('https://api.v2.sondehub.org/recovered', json = data)
print("Uploaded: " + serial)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment