dots/configs/home/config/polybar/old/scripts/weather.py
2022-04-03 01:11:04 +02:00

84 lines
2.9 KiB
Python

# 3-simple-weather Copyright (C) 2020 BrutalWizard (https://github.com/bru74lw1z4rd).
# This program comes with ABSOLUTELY NO WARRANTY;
# This is free software, and you are welcome to redistribute it
# under certain conditions;
# More info about wether at - https://openweathermap.org/weather-conditions
# To show icons from this script you will need to buy "Font Awesome Pro" font - https://fontawesome.com/
# Also you can change icon in arrays to yours icons
# Configured for NerdFonts - GitHub raven2cz @raven2cz
import requests
import json
# Settings
city = "<CITY>" # Your town
api_key = "<API-KEY>" # Your openweather api key
units = "metric" # Unit system {imperial or metric}
temperature_unit = "C" # Units of measurement. That will be showed in UI. Does not affect on API.
icons_list = {
"01d": "", # Clear sky day.
"01n": "", # Clear sky night.
"02d": "", # Few clouds day.
"02n": "", # Few clouds night.
"03d": "", # Scattered clouds day.
"03n": "", # Scattered clouds night.
"04d": "", # Broken clouds day.
"04n": "", # Broken clouds night.
"09d": "", # Shower rain day.
"09n": "", # Shower rain night.
"10d": "", # Rain day.
"10n": "", # Rain night
"11d": "", # Thunderstorm day.
"11n": "", # Thunderstorm night
"13d": "", # Snow day. Snowflake alternative: 
"13n": "", # Snow night. Snowflake alternative: 
"50d": "", # Mist day.
"50n": "" # Mist night.
}
atmophere_icons_list = {
701: "", # Mist
711: "", # Smoke
721: "", # Haze
731: "", # Dust (Sand / dust whirls)
741: "", # Fog
751: "", # Sand
761: "", # Dust
762: "", # Ash
771: "", # Squalls
781: "" # Tornado
}
def main():
try:
# Get data from openweather
url = ('http://api.openweathermap.org/data/2.5/weather?q={}&units={}&appid={}').format(city, units, api_key)
result = requests.get(url)
# If result was received
if(result.status_code == requests.codes['ok']):
# Read json
weather = result.json()
# Get info from array
id = int(weather['weather'][0]['id'])
group = weather['weather'][0]['main'].capitalize()
icon = weather['weather'][0]['icon'].capitalize()
temp = int(float(weather['main']['temp']))
# Load another icons for Atmosphere group
if(group == "Atmosphere"):
return atmophere_icons_list[id] + ' {}°{}'.format(temp, temperature_unit)
return icons_list[icon] + '%{F${foreground}' + ' {}°{}'.format(temp, temperature_unit) + '%{F-}'
else:
return "" # Return reload icon
except:
return "" # Return reload icon
if __name__ == "__main__":
print(main())