Browse Source

multiapi dashboard

master
Jakub Škrabánek 1 month ago
parent
commit
9c3a8c097c
  1. 82
      17_owm_multicity/multiapi.py

82
17_owm_multicity/multiapi.py

@ -0,0 +1,82 @@
from flask import Flask, jsonify
import requests
app = Flask(__name__)
API_KEY = "f70d944f638a7ae77de89435d4d23c01"
mesta = ["Praha","Štětí","Hněvice","Ústí nad Labem"]
url1 = f"http://api.openweathermap.org/data/2.5/weather?"
url2 = f"appid={API_KEY}&units=metric&lang=cz&q="
url_base = url1+url2
def get_chuck_joke():
try:
res = requests.get("https://api.chucknorris.io/jokes/random")
if res.status_code == 200:
return res.json()["value"]
except:
return "Chuck Norris dnes nemá náladu na vtipy. ☺"
def get_random_fact():
try:
res = requests.get("https://uselessfacts.jsph.pl/api/v2/facts/random")
if res.status_code == 200:
return res.json()["text"]
except:
return "Věděli jste, že se nepodařilo načíst žádný fact? ☺"
def nacti_pocasi(mesto):
try:
response = requests.get(url_base+mesto)
if response.status_code == 200:
data = response.json()
return {
"name": data["name"],
"temp": data["main"]["temp"],
"hum": data["main"]["humidity"],
"desc": data["weather"][0]["description"]
}
else:
return {
"name": mesto,
"error":f"API Chyba: {response.status_code}"
}
except Exception as e:
return {
"name": mesto,
"error": f"Chyba připojení: {e}"
}
@app.route("/")
def index():
vysledky_pocasi = []
for kontkretni_mesto in mesta:
vysledky_pocasi.append(nacti_pocasi(kontkretni_mesto))
joke = get_chuck_joke()
html = "<h1> Aktuální počasí ve městech </h1>"
html += f"<p>{mesta}</p>"
html += "<hr>"
html += "<h3>Chuck Norris Qoute of the day</h3>"
html += f"{joke}"
html += "<hr>"
for vysledek in vysledky_pocasi:
if "error" in vysledek:
html += f"<h2>{vysledek['name']}</h2>"
html += f"<ul><li>Chyba:{vysledek['error']}</li></ul>"
else:
html += f"<h2>{vysledek['name']}</h2>"
html += "<ul>"
html += f"<li>Teplota: {vysledek['temp']}°C</li>"
html += f"<li>Vlhkost: {vysledek['hum']}%</li>"
html += f"<li>Popis: {vysledek['desc']}</li>"
html += f"<li> Zajímavost: {get_random_fact()}</li>"
html += "</ul>"
html += '<p><a href="/">Aktualizovat data</a></p>'
return html
if __name__ == "__main__":
print("Multi town Weather Dashboard")
print("Link: http://localhost:8080")
print(f"Města: {', '.join(mesta)}")
app.run(host="0.0.0.0",port="8080",debug=True)
Loading…
Cancel
Save