Last active
December 12, 2021 09:20
-
-
Save LukePrior/e02b62f35eccddea096b141ffd871e4f to your computer and use it in GitHub Desktop.
Radiosondy.info recovery to SondeHub format
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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