initial
This commit is contained in:
71
covid.py
Normal file
71
covid.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import time
|
||||
import json
|
||||
import psycopg2
|
||||
import psycopg2.extensions
|
||||
from psycopg2.extras import Json
|
||||
import re
|
||||
import pandas as pd
|
||||
import requests
|
||||
import xmltodict
|
||||
import datetime
|
||||
from tabulate import tabulate
|
||||
|
||||
allobs = []
|
||||
|
||||
states = ['wv', 'oh', 'va', 'ky']
|
||||
ohcounties = ['-LW-', '-GL-', '-JC-', '-MS-', '-AT-', '-PY-', '-WS-', '-MG-', '-VN-']
|
||||
vacounties = ['-DC-', '-BC-']
|
||||
kycounties = ['-LR-', '-CT-', '-GP-', '-BD-']
|
||||
datewanted = datetime.date.today().strftime("%m/%d/%Y")
|
||||
|
||||
try:
|
||||
for state in states:
|
||||
url = f'https://data.cocorahs.org/export/exportreports.aspx?state={state}&Format=XML&Date={datewanted}&responsefields=all'
|
||||
response = requests.get(url)
|
||||
response.raise_for_status() # Check for HTTP errors
|
||||
data = xmltodict.parse(response.content.decode('utf-8')) # Explicitly decode as UTF-8
|
||||
|
||||
try:
|
||||
reports = data['Cocorahs']['DailyPrecipReports']['DailyPrecipReport']
|
||||
# Handle case where reports might be a single dict or a list
|
||||
if isinstance(reports, dict):
|
||||
reports = [reports]
|
||||
|
||||
for report in reports:
|
||||
if state == 'wv':
|
||||
allobs.append(report)
|
||||
else:
|
||||
for county in eval(state + 'counties'):
|
||||
if county in report['StationNumber']:
|
||||
allobs.append(report)
|
||||
except (KeyError, TypeError) as e:
|
||||
print(f"Error processing data for state {state}: {e}")
|
||||
continue
|
||||
|
||||
# Process observations
|
||||
finalobs = []
|
||||
for obs in allobs:
|
||||
tempob = [
|
||||
obs.get('DateTimeStamp', ''),
|
||||
obs.get('StationNumber', ''),
|
||||
obs.get('StationName', ''),
|
||||
obs.get('TotalPrecipAmt', ''),
|
||||
obs.get('NewSnowDepth', ''),
|
||||
obs.get('TotalSnowDepth', ''),
|
||||
obs.get('Notes', '')
|
||||
]
|
||||
finalobs.append(tempob)
|
||||
|
||||
# Write to file with UTF-8 encoding
|
||||
with open('/var/www/html/work/today.txt', 'w', encoding='utf-8') as f:
|
||||
f.write(tabulate(
|
||||
finalobs,
|
||||
headers=["Date/Time of Ob (Z)", "Station Number", "Station Name",
|
||||
"New Precip", "New Snow", "Snow Depth", "Comments"],
|
||||
tablefmt='plain' # Changed to 'plain' for simpler text output
|
||||
))
|
||||
|
||||
except requests.RequestException as e:
|
||||
print(f"Error fetching data: {e}")
|
||||
except Exception as e:
|
||||
print(f"Unexpected error: {e}")
|
||||
Reference in New Issue
Block a user