Spaces:
Runtime error
Runtime error
Mustafa Al Hamad commited on
Commit ·
b538e2a
1
Parent(s): ba57008
Create new file
Browse files
app.py
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
from backports.zoneinfo import ZoneInfo
|
| 3 |
+
from datetime import datetime, timedelta, timezone
|
| 4 |
+
import pickle
|
| 5 |
+
weathers = ['Broken clouds ',
|
| 6 |
+
'Clear ',
|
| 7 |
+
'Cloudy ',
|
| 8 |
+
'Cool ',
|
| 9 |
+
'Dense fog ',
|
| 10 |
+
'Drizzle Broken clouds ',
|
| 11 |
+
'Drizzle Dense fog ',
|
| 12 |
+
'Drizzle Fog ',
|
| 13 |
+
'Drizzle More clouds than sun ',
|
| 14 |
+
'Drizzle Mostly cloudy ',
|
| 15 |
+
'Drizzle Overcast ',
|
| 16 |
+
'Drizzle Partly sunny ',
|
| 17 |
+
'Duststorm ',
|
| 18 |
+
'Extremely hot ',
|
| 19 |
+
'Fog ',
|
| 20 |
+
'Hail Cloudy ',
|
| 21 |
+
'Hail Partly sunny ',
|
| 22 |
+
'Hail Passing clouds ',
|
| 23 |
+
'Haze ',
|
| 24 |
+
'Heavy rain More clouds than sun ',
|
| 25 |
+
'Heavy rain Mostly cloudy ',
|
| 26 |
+
'Heavy rain Overcast ',
|
| 27 |
+
'Heavy rain Partly sunny ',
|
| 28 |
+
'Hot ',
|
| 29 |
+
'Light rain Broken clouds ',
|
| 30 |
+
'Light rain Fog ',
|
| 31 |
+
'Light rain More clouds than sun ',
|
| 32 |
+
'Light rain Mostly cloudy ',
|
| 33 |
+
'Light rain Overcast ',
|
| 34 |
+
'Light rain Partly cloudy ',
|
| 35 |
+
'Light rain Partly sunny ',
|
| 36 |
+
'Light rain Passing clouds ',
|
| 37 |
+
'Light rain Scattered clouds ',
|
| 38 |
+
'Low level haze ',
|
| 39 |
+
'Mild ',
|
| 40 |
+
'More clouds than sun ',
|
| 41 |
+
'Mostly cloudy ',
|
| 42 |
+
'Overcast ',
|
| 43 |
+
'Partly cloudy ',
|
| 44 |
+
'Partly sunny ',
|
| 45 |
+
'Passing clouds ',
|
| 46 |
+
'Pleasantly warm ',
|
| 47 |
+
'Rain Broken clouds ',
|
| 48 |
+
'Rain Clear ',
|
| 49 |
+
'Rain Fog ',
|
| 50 |
+
'Rain More clouds than sun ',
|
| 51 |
+
'Rain Mostly cloudy ',
|
| 52 |
+
'Rain Overcast ',
|
| 53 |
+
'Rain Partly cloudy ',
|
| 54 |
+
'Rain Partly sunny ',
|
| 55 |
+
'Rain Passing clouds ',
|
| 56 |
+
'Rain Sandstorm ',
|
| 57 |
+
'Rain Scattered clouds ',
|
| 58 |
+
'Rain showers Partly sunny ',
|
| 59 |
+
'Refreshingly cool ',
|
| 60 |
+
'Sandstorm ',
|
| 61 |
+
'Scattered clouds ',
|
| 62 |
+
'Smoke ',
|
| 63 |
+
'Sprinkles Cloudy ',
|
| 64 |
+
'Sprinkles Duststorm ',
|
| 65 |
+
'Sprinkles Low level haze ',
|
| 66 |
+
'Sprinkles Overcast ',
|
| 67 |
+
'Strong thunderstorms Cloudy ',
|
| 68 |
+
'Strong thunderstorms More clouds than sun ',
|
| 69 |
+
'Strong thunderstorms Partly sunny ',
|
| 70 |
+
'Sunny ',
|
| 71 |
+
'Thundershowers Partly sunny ',
|
| 72 |
+
'Thundershowers Passing clouds ',
|
| 73 |
+
'Thundershowers Scattered clouds ',
|
| 74 |
+
'Thunderstorms Broken clouds ',
|
| 75 |
+
'Thunderstorms Cloudy ',
|
| 76 |
+
'Thunderstorms Fog ',
|
| 77 |
+
'Thunderstorms More clouds than sun ',
|
| 78 |
+
'Thunderstorms Mostly cloudy ',
|
| 79 |
+
'Thunderstorms Overcast ',
|
| 80 |
+
'Thunderstorms Partly cloudy ',
|
| 81 |
+
'Thunderstorms Partly sunny ',
|
| 82 |
+
'Thunderstorms Passing clouds ',
|
| 83 |
+
'Thunderstorms Sandstorm ',
|
| 84 |
+
'Thunderstorms Scattered clouds ',
|
| 85 |
+
'Warm ']
|
| 86 |
+
|
| 87 |
+
months = ['January', 'February', 'March', 'April', 'May', 'June', 'July','August', 'September', 'October', 'November', 'December']
|
| 88 |
+
|
| 89 |
+
cities = ['Assir',
|
| 90 |
+
'Baha',
|
| 91 |
+
'EP',
|
| 92 |
+
'Hail',
|
| 93 |
+
'Jawf',
|
| 94 |
+
'Jazan',
|
| 95 |
+
'Madina',
|
| 96 |
+
'Mecca',
|
| 97 |
+
'Najran',
|
| 98 |
+
'Northern boarder',
|
| 99 |
+
'Qassim',
|
| 100 |
+
'Riyadh',
|
| 101 |
+
'Tabuk']
|
| 102 |
+
|
| 103 |
+
currentSecond= datetime.now().second
|
| 104 |
+
currentMinute = datetime.now().minute
|
| 105 |
+
currentHour = datetime.now().hour
|
| 106 |
+
currentDay = datetime.now().day
|
| 107 |
+
currentMonth = datetime.now().month
|
| 108 |
+
currentYear = datetime.now().year
|
| 109 |
+
|
| 110 |
+
dt = datetime(currentYear, currentMonth, currentDay, tzinfo=ZoneInfo("Asia/Riyadh"))
|
| 111 |
+
fulltime = str(dt)
|
| 112 |
+
ADD = 0
|
| 113 |
+
try:
|
| 114 |
+
if "+" in fulltime:
|
| 115 |
+
ADD = int(fulltime.split("+")[1].split(":")[0])
|
| 116 |
+
elif "-" in fulltime:
|
| 117 |
+
ADD = int(fulltime.split("-")[1].split(":")[0]) * -1
|
| 118 |
+
except:
|
| 119 |
+
pass
|
| 120 |
+
|
| 121 |
+
def predict(city,month,year,day,hour,minute,weathertype,wind,hu,baro,vis):
|
| 122 |
+
|
| 123 |
+
loaded_model = pickle.load(open("WeatherPredictionKSA.pk", 'rb'))
|
| 124 |
+
details = [cities.index(city),year,months.index(month),day,hour,minute,weathers.index(weathertype),wind,hu,baro,vis]
|
| 125 |
+
temp = int(loaded_model.predict([details]))
|
| 126 |
+
if temp >= 50:
|
| 127 |
+
emoji = "🥵"
|
| 128 |
+
elif 40 <= temp <= 49:
|
| 129 |
+
emoji = "😳"
|
| 130 |
+
elif 25 <= temp <= 39:
|
| 131 |
+
emoji = "😌"
|
| 132 |
+
elif 10 <= temp <= 24:
|
| 133 |
+
emoji = "😊"
|
| 134 |
+
elif temp <= 9:
|
| 135 |
+
emoji = "🥶"
|
| 136 |
+
return gr.Markdown.update("# 🌡️ {0} C {1}🌡️".format(temp,emoji))
|
| 137 |
+
with gr.Blocks() as demo:
|
| 138 |
+
with gr.Row():
|
| 139 |
+
gr.Markdown("# 🌧️☁️☀️KSA Weather prediction ☀️☁️🌧️\n**Day, Hour, and Minute** are set to **Asia/Riyadh** current time by default but can be changed")
|
| 140 |
+
with gr.Box():
|
| 141 |
+
with gr.Row():
|
| 142 |
+
city = gr.Dropdown(cities,label='City',value='Assir',interactive=True)
|
| 143 |
+
month = gr.Dropdown(months,label='Month',value=months[currentMonth-1],interactive=True)
|
| 144 |
+
with gr.Row():
|
| 145 |
+
year = gr.Number(int(currentYear),label='Year',interactive=True)
|
| 146 |
+
day = gr.Number(int(currentDay),label='Day',interactive=True)
|
| 147 |
+
hour = gr.Number(int(currentHour)+ADD,label='Hour',interactive=True)
|
| 148 |
+
minute = gr.Number(int(currentMinute),label='Minute',interactive=True)
|
| 149 |
+
with gr.Row():
|
| 150 |
+
weathertype = gr.Dropdown(weathers,label='Weather type',value='Cloudy ',interactive=True)
|
| 151 |
+
wind = gr.Number(label='Wind',interactive=True)
|
| 152 |
+
hu = gr.Number(label='Humidity',interactive=True)
|
| 153 |
+
baro = gr.Number(label='Barometer',interactive=True)
|
| 154 |
+
vis = gr.Number(label='Visibility',interactive=True)
|
| 155 |
+
with gr.Row():
|
| 156 |
+
temp = gr.Markdown("")
|
| 157 |
+
btn = gr.Button(value="Predict")
|
| 158 |
+
btn.click(predict, inputs=[city,month,year,day,hour,minute,weathertype,wind,hu,baro,vis], outputs=temp)
|
| 159 |
+
|
| 160 |
+
demo.launch()
|