40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
from flask import Flask, render_template, jsonify, request
|
|
from utils.weather import get_today_snowfall
|
|
from utils.geocode import get_city_name
|
|
from config import MAX_SNOW_INCHES
|
|
|
|
app = Flask(__name__)
|
|
|
|
@app.route("/")
|
|
def index():
|
|
return render_template("index.html")
|
|
|
|
@app.route("/api/snowfall")
|
|
def snowfall_api():
|
|
lat = request.args.get("lat", type=float)
|
|
lon = request.args.get("lon", type=float)
|
|
if lat is None or lon is None:
|
|
return jsonify({"error": "Missing lat/lon"}), 400
|
|
|
|
inches, snowing, tz_name = get_today_snowfall(lat, lon)
|
|
city_name = get_city_name(lat, lon)
|
|
|
|
from datetime import datetime
|
|
import pytz
|
|
today = datetime.now(pytz.timezone(tz_name)).strftime("%B %d, %Y")
|
|
|
|
return jsonify({
|
|
"location": city_name,
|
|
"lat": lat,
|
|
"lon": lon,
|
|
"inches": inches,
|
|
"max_inches": MAX_SNOW_INCHES,
|
|
"snowing": snowing,
|
|
"today": today,
|
|
"updated": datetime.now().isoformat()
|
|
})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host="0.0.0.0", port=5000)
|