Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Open Weather Map - API connection

The weather_api_class.py was developed to provide an easy way to download weather queries from the API https://openweathermap.org/. It consists of two classes:

  1. CitiesInformation: class defined to download the ID, Country and location of all cities included in the Weather API database. The list is included in the file city.list.json.gz posted in the server. The file is downloaded locally and unzipped in the subfolder ./city_list/ though one of the methods defined in the class.
  2. OpenWeatherApi: provides methods to dowload all the queries available in the free account per category.

Both classes should be imported in your python file to use their methods described bellow.


Class: CitiesInformation()

No parameters are needed to intansciate this class. Hence, the following variable can be defined:

>>>cities_info = CitiesInformation()

Methods:

  1. Get the number of cities listed on the database:
print(cities_info)
>>>Total number of cities in the API: 209579
  1. In some queries, the country label is needed. The label of each one in the database is reported by calling the method country_list() with no parameters. It returns an array with the country's id.
>>>cities_info.country_list()
array(['', 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR',
       'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF',
       'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS',

       'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'US', 'UY',
       'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'XK',
       'YE', 'YT', 'ZA', 'ZM', 'ZW'], dtype=object)
  1. To get the ID, country and location of a city using only part of its name, the method select_city_information(label_name, [country]) is provided. Where the parameter [country] is optional and given by the aforementioned function output. If it is not provided, the functions returns all the cities that match the label of the city. In the example, the information of all the cities in US with the starting with the label "san Ant" are listed (no case sensitive):
>>>cities_info.select_city_information('san Ant', 'US')
                             city_coordinates  ...            city_name
116988   {'lat': 29.42412, 'lon': -98.493629}  ...          San Antonio
196485  {'lat': 28.336109, 'lon': -82.274529}  ...          San Antonio
206530  {'lat': 34.15556, 'lon': -117.656441}  ...  San Antonio Heights

In the above example, the cities that match the label "san Ant" are presented. A Pandas DataFrame is returned. Hence, the following options can be used it for the cities starting with "houst":

cities_name = cities_info.select_city_information('houst')
cities_name[['city_country', 'city_name', 'city_id', 'city_coordinates']]
       city_country       city_name  city_id  \
3691             CA         Houston  5977783   
11910            US  Houston County  4068296   
109205           US  Houston County  4201512   
116948           US         Houston  4699066   
160841           GB         Houston  2646507   
198194           US         Houston  4391354   
198440           US         Houston  4430529   
205021           US         Houston  5194369   
208119           US         Houston  5864312   
                              city_coordinates  
3691    {'lat': 54.399761, 'lon': -126.670082}  
11910    {'lat': 31.150181, 'lon': -85.316597}  
109205   {'lat': 32.433491, 'lon': -83.649902}  
116948   {'lat': 29.763281, 'lon': -95.363274}  
160841     {'lat': 55.868591, 'lon': -4.55201}  
198194    {'lat': 37.32616, 'lon': -91.955994}  
198440   {'lat': 33.898449, 'lon': -88.999229}  
205021    {'lat': 40.24646, 'lon': -80.211449}  
208119   {'lat': 61.63028, 'lon': -149.818054}  

Class: OpenWeatherApi()

This class provides access to the database. It requires a valid API-key provided by the server to run any query. The instantiation of the class is do it by the following line of code:

query_class = OpenWeatherApi(api_key)

It has two fundamental methods, pretty related each other with the same list of parameters, those are:

  1. query_preprocessing(query_type, query_name, parameters)
  2. query_execution(query_type, query_name, parameters)

The only difference is the first one only provides the query to be executed in the server and the second one execute it. The

Parameters definition:

  1. query_type: according to the services given by the API for the FREE account, the following group of queries can be used it:
  • Current weather API, (query_type = 0): Access current weather data for any location on Earth including over 200,000 cities and updated based on global models and data from more than 40,000 weather stations, Link

  • 5 days/3 hour forecast API, (query_type = 1): 5 day forecast per location or city. It includes weather data every 3 hours, Link

  • UV index, (query_type = 2): Access current/forecast/historical UV data for over 200,000 cities, Link

  1. query_name: identifies the query to be executed based on the query type selected. The following are the options of query labels defined:
query_type query_name Parameters
0 'by_city_name' city name, [country code]
'by_city_ID' city_ID
'by_geog_coord' lat, lon
'by_zip_code' zip code,[country code]
'by_circle' lat, lon, cnt
1 'by_city_name' city name, [country code]
'by_city_ID' city_ID
'by_geog_coord' lat, lon
'by_zip_code' zip code,[country code]
2 'for_one_location' lat, lon
'forecast_one_location' lat, lon, cnt
'hystorical_uv_location' lat, lon, cnt, start, end

The query name should be entered as a string between " ", while parameters as a list [ ]

Examples:

  1. Current weather for Houston based on its database ID (given above):
>>>query_class.query_execution(0, 'by_city_ID', [4699066])
{'sys': {'country': 'US', 'sunrise': 1553775346, 'id': 4850, 'sunset': 1553819825, 'type': 1, 'message': 0.0092}, 'name': 'Houston', 'clouds': {'all': 1}, 'dt': 1553820748, 'wind': {'gust': 5.1, 'speed': 2.1}, 'visibility': 16093, 'base': 'stations', 'cod': 200, 'coord': {'lat': 29.76, 'lon': -95.36}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'main': {'temp_max': 294.82, 'humidity': 56, 'temp': 293.56, 'temp_min': 292.59, 'pressure': 1020}, 'id': 4699066}
  1. Forecast weather for San Antonio:
query_class.query_execution(1, 'by_city_name', ["San Antonio", "US"])
{'cnt': 39, 'cod': '200', 'city': {'country': 'US', 'id': 4726206, 'name': 'San Antonio', 'population': 1327407, 'coord': {'lat': 29.4246, 'lon': -98.4952}}, 'list': [{'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'dt_txt': '2019-03-29 03:00:00', 'wind': {'deg': 149.001, 'speed': 6.01}, 'dt': 1553828400, 'main': {'grnd_level': 992.88, 'sea_level': 1017.58, 'humidity': 44, 'temp_max': 294.937, 'temp_min': 291.42, 'pressure': 1017.58, 'temp': 291.42, 'temp_kf': -3.52}, 'clouds': {'all': 0}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'broken clouds', 'id': 803, 'main': 'Clouds', 'icon': '04n'}], 'dt_txt': '2019-03-29 06:00:00', 'wind': {'deg': 147.009, 'speed': 5.22}, 'dt': 1553839200, 'main': {'grnd_level': 993.12, 'sea_level': 1017.93, 'humidity': 68, 'temp_max': 291.85, 'temp_min': 289.21, 'pressure': 1017.93, 'temp': 289.21, 'temp_kf': -2.64}, 'clouds': {'all': 80}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'broken clouds', 'id': 803, 'main': 'Clouds', 'icon': '04n'}], 'dt_txt': '2019-03-29 09:00:00', 'wind': {'deg': 161.005, 'speed': 3.55}, 'dt': 1553850000, 'main': {'grnd_level': 991.64, 'sea_level': 1016.39, 'humidity': 83, 'temp_max': 290.285, 'temp_min': 288.53, 'pressure': 1016.39, 'temp': 288.53, 'temp_kf': -1.76}, 'clouds': {'all': 68}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'light rain', 'id': 500, 'main': 'Rain', 'icon': '10n'}], 'rain': {'3h': 0.01}, 'wind': {'deg': 163.002, 'speed': 3.31}, 'dt': 1553860800, 'dt_txt': '2019-03-29 12:00:00', 'main': {'grnd_level': 990.96, 'sea_level': 1015.81, 'humidity': 83, 'temp_max': 290.872, 'temp_min': 289.99, 'pressure': 1015.81, 'temp': 289.99, 'temp_kf': -0.88}, 'clouds': {'all': 92}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'light rain', 'id': 500, 'main': 'Rain', 'icon': '10d'}], 'rain': {'3h': 0.04}, 'wind': {'deg': 169.507, 'speed': 4.56}, 'dt': 1553871600, 'dt_txt': '2019-03-29 15:00:00', 'main': {'grnd_level': 991.69, 'sea_level': 1016.44, 'humidity': 75, 'temp_max': 293.08, 'temp_min': 293.08, 'pressure': 1016.44, 'temp': 293.08, 'temp_kf': 0}, 'clouds': {'all': 76}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'scattered clouds', 'id': 802, 'main': 'Clouds', 'icon': '03d'}], 'rain': {}, 'wind': {'deg': 180.003, 'speed': 5.47}, 'dt': 1553882400, 'dt_txt': '2019-03-29 18:00:00', 'main': {'grnd_level': 991.14, 'sea_level': 1015.55, 'humidity': 55, 'temp_max': 297.494, 'temp_min': 297.494, 'pressure': 1015.55, 'temp': 297.494, 'temp_kf': 0}, 'clouds': {'all': 44}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'few clouds', 'id': 801, 'main': 'Clouds', 'icon': '02d'}], 'rain': {}, 'wind': {'deg': 180.002, 'speed': 5.22}, 'dt': 1553893200, 'dt_txt': '2019-03-29 21:00:00', 'main': {'grnd_level': 988.32, 'sea_level': 1012.55, 'humidity': 44, 'temp_max': 301.036, 'temp_min': 301.036, 'pressure': 1012.55, 'temp': 301.036, 'temp_kf': 0}, 'clouds': {'all': 12}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'rain': {}, 'wind': {'deg': 179, 'speed': 5.25}, 'dt': 1553904000, 'dt_txt': '2019-03-30 00:00:00', 'main': {'grnd_level': 986.85, 'sea_level': 1011.2, 'humidity': 38, 'temp_max': 301.402, 'temp_min': 301.402, 'pressure': 1011.2, 'temp': 301.402, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'rain': {}, 'wind': {'deg': 165.006, 'speed': 5.83}, 'dt': 1553914800, 'dt_txt': '2019-03-30 03:00:00', 'main': {'grnd_level': 988.25, 'sea_level': 1012.78, 'humidity': 53, 'temp_max': 297.04, 'temp_min': 297.04, 'pressure': 1012.78, 'temp': 297.04, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'rain': {}, 'wind': {'deg': 167.01, 'speed': 4.73}, 'dt': 1553925600, 'dt_txt': '2019-03-30 06:00:00', 'main': {'grnd_level': 989.11, 'sea_level': 1013.73, 'humidity': 67, 'temp_max': 293.685, 'temp_min': 293.685, 'pressure': 1013.73, 'temp': 293.685, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'rain': {}, 'wind': {'deg': 173, 'speed': 3.92}, 'dt': 1553936400, 'dt_txt': '2019-03-30 09:00:00', 'main': {'grnd_level': 987.92, 'sea_level': 1012.64, 'humidity': 81, 'temp_max': 291.237, 'temp_min': 291.237, 'pressure': 1012.64, 'temp': 291.237, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'rain': {}, 'wind': {'deg': 175.506, 'speed': 2.36}, 'dt': 1553947200, 'dt_txt': '2019-03-30 12:00:00', 'main': {'grnd_level': 988.29, 'sea_level': 1013.17, 'humidity': 92, 'temp_max': 288.768, 'temp_min': 288.768, 'pressure': 1013.17, 'temp': 288.768, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01d'}], 'rain': {}, 'wind': {'deg': 195.501, 'speed': 2.06}, 'dt': 1553958000, 'dt_txt': '2019-03-30 15:00:00', 'main': {'grnd_level': 990.05, 'sea_level': 1014.64, 'humidity': 71, 'temp_max': 294.104, 'temp_min': 294.104, 'pressure': 1014.64, 'temp': 294.104, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'broken clouds', 'id': 803, 'main': 'Clouds', 'icon': '04d'}], 'rain': {}, 'wind': {'deg': 217.003, 'speed': 2.1}, 'dt': 1553968800, 'dt_txt': '2019-03-30 18:00:00', 'main': {'grnd_level': 989.8, 'sea_level': 1014.24, 'humidity': 56, 'temp_max': 300.626, 'temp_min': 300.626, 'pressure': 1014.24, 'temp': 300.626, 'temp_kf': 0}, 'clouds': {'all': 56}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'scattered clouds', 'id': 802, 'main': 'Clouds', 'icon': '03d'}], 'rain': {}, 'wind': {'deg': 28.5003, 'speed': 2.29}, 'dt': 1553979600, 'dt_txt': '2019-03-30 21:00:00', 'main': {'grnd_level': 988.17, 'sea_level': 1012.64, 'humidity': 48, 'temp_max': 303.153, 'temp_min': 303.153, 'pressure': 1012.64, 'temp': 303.153, 'temp_kf': 0}, 'clouds': {'all': 48}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'light rain', 'id': 500, 'main': 'Rain', 'icon': '10n'}], 'rain': {'3h': 1.27}, 'wind': {'deg': 30.0039, 'speed': 6.66}, 'dt': 1553990400, 'dt_txt': '2019-03-31 00:00:00', 'main': {'grnd_level': 989.64, 'sea_level': 1014.18, 'humidity': 42, 'temp_max': 299.325, 'temp_min': 299.325, 'pressure': 1014.18, 'temp': 299.325, 'temp_kf': 0}, 'clouds': {'all': 68}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'overcast clouds', 'id': 804, 'main': 'Clouds', 'icon': '04n'}], 'rain': {}, 'wind': {'deg': 29.5006, 'speed': 7.42}, 'dt': 1554001200, 'dt_txt': '2019-03-31 03:00:00', 'main': {'grnd_level': 993.62, 'sea_level': 1018.3, 'humidity': 39, 'temp_max': 294.467, 'temp_min': 294.467, 'pressure': 1018.3, 'temp': 294.467, 'temp_kf': 0}, 'clouds': {'all': 88}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'overcast clouds', 'id': 804, 'main': 'Clouds', 'icon': '04n'}], 'rain': {}, 'wind': {'deg': 25.0014, 'speed': 7.78}, 'dt': 1554012000, 'dt_txt': '2019-03-31 06:00:00', 'main': {'grnd_level': 996.96, 'sea_level': 1021.91, 'humidity': 39, 'temp_max': 290.966, 'temp_min': 290.966, 'pressure': 1021.91, 'temp': 290.966, 'temp_kf': 0}, 'clouds': {'all': 88}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'light rain', 'id': 500, 'main': 'Rain', 'icon': '10n'}], 'rain': {'3h': 0.72}, 'wind': {'deg': 23.5093, 'speed': 8.76}, 'dt': 1554022800, 'dt_txt': '2019-03-31 09:00:00', 'main': {'grnd_level': 997.87, 'sea_level': 1023.3, 'humidity': 45, 'temp_max': 287.604, 'temp_min': 287.604, 'pressure': 1023.3, 'temp': 287.604, 'temp_kf': 0}, 'clouds': {'all': 88}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'light rain', 'id': 500, 'main': 'Rain', 'icon': '10n'}], 'rain': {'3h': 0.54}, 'wind': {'deg': 23.5009, 'speed': 8.33}, 'dt': 1554033600, 'dt_txt': '2019-03-31 12:00:00', 'main': {'grnd_level': 999.62, 'sea_level': 1025.29, 'humidity': 48, 'temp_max': 285, 'temp_min': 285, 'pressure': 1025.29, 'temp': 285, 'temp_kf': 0}, 'clouds': {'all': 92}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'broken clouds', 'id': 803, 'main': 'Clouds', 'icon': '04d'}], 'rain': {}, 'wind': {'deg': 26.5005, 'speed': 8.06}, 'dt': 1554044400, 'dt_txt': '2019-03-31 15:00:00', 'main': {'grnd_level': 1001.65, 'sea_level': 1027.4, 'humidity': 46, 'temp_max': 284.621, 'temp_min': 284.621, 'pressure': 1027.4, 'temp': 284.621, 'temp_kf': 0}, 'clouds': {'all': 76}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '02d'}], 'rain': {}, 'wind': {'deg': 30.0001, 'speed': 5.91}, 'dt': 1554055200, 'dt_txt': '2019-03-31 18:00:00', 'main': {'grnd_level': 1001.72, 'sea_level': 1027.12, 'humidity': 47, 'temp_max': 289.191, 'temp_min': 289.191, 'pressure': 1027.12, 'temp': 289.191, 'temp_kf': 0}, 'clouds': {'all': 8}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01d'}], 'rain': {}, 'wind': {'deg': 29.5056, 'speed': 3.41}, 'dt': 1554066000, 'dt_txt': '2019-03-31 21:00:00', 'main': {'grnd_level': 999.58, 'sea_level': 1024.76, 'humidity': 41, 'temp_max': 292.163, 'temp_min': 292.163, 'pressure': 1024.76, 'temp': 292.163, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'overcast clouds', 'id': 804, 'main': 'Clouds', 'icon': '04n'}], 'rain': {}, 'wind': {'deg': 32.503, 'speed': 3.97}, 'dt': 1554076800, 'dt_txt': '2019-04-01 00:00:00', 'main': {'grnd_level': 998.23, 'sea_level': 1023.47, 'humidity': 29, 'temp_max': 291.127, 'temp_min': 291.127, 'pressure': 1023.47, 'temp': 291.127, 'temp_kf': 0}, 'clouds': {'all': 88}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'few clouds', 'id': 801, 'main': 'Clouds', 'icon': '02n'}], 'rain': {}, 'wind': {'deg': 51.5018, 'speed': 3.96}, 'dt': 1554087600, 'dt_txt': '2019-04-01 03:00:00', 'main': {'grnd_level': 999.58, 'sea_level': 1024.97, 'humidity': 31, 'temp_max': 288.486, 'temp_min': 288.486, 'pressure': 1024.97, 'temp': 288.486, 'temp_kf': 0}, 'clouds': {'all': 20}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'few clouds', 'id': 801, 'main': 'Clouds', 'icon': '02n'}], 'rain': {}, 'wind': {'deg': 48.5, 'speed': 3.27}, 'dt': 1554098400, 'dt_txt': '2019-04-01 06:00:00', 'main': {'grnd_level': 1000.53, 'sea_level': 1026.17, 'humidity': 37, 'temp_max': 285.386, 'temp_min': 285.386, 'pressure': 1026.17, 'temp': 285.386, 'temp_kf': 0}, 'clouds': {'all': 24}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'broken clouds', 'id': 803, 'main': 'Clouds', 'icon': '04n'}], 'rain': {}, 'wind': {'deg': 33.5005, 'speed': 3.51}, 'dt': 1554109200, 'dt_txt': '2019-04-01 09:00:00', 'main': {'grnd_level': 1000.15, 'sea_level': 1025.86, 'humidity': 38, 'temp_max': 284.87, 'temp_min': 284.87, 'pressure': 1025.86, 'temp': 284.87, 'temp_kf': 0}, 'clouds': {'all': 64}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'light rain', 'id': 500, 'main': 'Rain', 'icon': '10n'}], 'rain': {'3h': 0.16}, 'wind': {'deg': 25, 'speed': 3.8}, 'dt': 1554120000, 'dt_txt': '2019-04-01 12:00:00', 'main': {'grnd_level': 1001.25, 'sea_level': 1026.95, 'humidity': 46, 'temp_max': 283.953, 'temp_min': 283.953, 'pressure': 1026.95, 'temp': 283.953, 'temp_kf': 0}, 'clouds': {'all': 92}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'light rain', 'id': 500, 'main': 'Rain', 'icon': '10d'}], 'rain': {'3h': 0.03}, 'wind': {'deg': 28.0062, 'speed': 4.01}, 'dt': 1554130800, 'dt_txt': '2019-04-01 15:00:00', 'main': {'grnd_level': 1002.97, 'sea_level': 1028.7, 'humidity': 47, 'temp_max': 284.679, 'temp_min': 284.679, 'pressure': 1028.7, 'temp': 284.679, 'temp_kf': 0}, 'clouds': {'all': 92}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'overcast clouds', 'id': 804, 'main': 'Clouds', 'icon': '04d'}], 'rain': {}, 'wind': {'deg': 49.0067, 'speed': 3.22}, 'dt': 1554141600, 'dt_txt': '2019-04-01 18:00:00', 'main': {'grnd_level': 1002.81, 'sea_level': 1028.32, 'humidity': 40, 'temp_max': 286.659, 'temp_min': 286.659, 'pressure': 1028.32, 'temp': 286.659, 'temp_kf': 0}, 'clouds': {'all': 88}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'few clouds', 'id': 801, 'main': 'Clouds', 'icon': '02d'}], 'rain': {}, 'wind': {'deg': 69.5001, 'speed': 2.66}, 'dt': 1554152400, 'dt_txt': '2019-04-01 21:00:00', 'main': {'grnd_level': 1000.15, 'sea_level': 1025.43, 'humidity': 43, 'temp_max': 290.343, 'temp_min': 290.343, 'pressure': 1025.43, 'temp': 290.343, 'temp_kf': 0}, 'clouds': {'all': 20}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'rain': {}, 'wind': {'deg': 87.0033, 'speed': 2.41}, 'dt': 1554163200, 'dt_txt': '2019-04-02 00:00:00', 'main': {'grnd_level': 999.04, 'sea_level': 1024.21, 'humidity': 36, 'temp_max': 290.547, 'temp_min': 290.547, 'pressure': 1024.21, 'temp': 290.547, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '01n'}], 'rain': {}, 'wind': {'deg': 136.004, 'speed': 2.77}, 'dt': 1554174000, 'dt_txt': '2019-04-02 03:00:00', 'main': {'grnd_level': 1000.16, 'sea_level': 1025.77, 'humidity': 57, 'temp_max': 284.241, 'temp_min': 284.241, 'pressure': 1025.77, 'temp': 284.241, 'temp_kf': 0}, 'clouds': {'all': 0}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'scattered clouds', 'id': 802, 'main': 'Clouds', 'icon': '03n'}], 'rain': {}, 'wind': {'deg': 150.005, 'speed': 2.43}, 'dt': 1554184800, 'dt_txt': '2019-04-02 06:00:00', 'main': {'grnd_level': 1000.64, 'sea_level': 1026.48, 'humidity': 83, 'temp_max': 281.496, 'temp_min': 281.496, 'pressure': 1026.48, 'temp': 281.496, 'temp_kf': 0}, 'clouds': {'all': 32}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'clear sky', 'id': 800, 'main': 'Clear', 'icon': '02n'}], 'rain': {}, 'wind': {'deg': 142, 'speed': 1.22}, 'dt': 1554195600, 'dt_txt': '2019-04-02 09:00:00', 'main': {'grnd_level': 999.89, 'sea_level': 1025.84, 'humidity': 89, 'temp_max': 278.768, 'temp_min': 278.768, 'pressure': 1025.84, 'temp': 278.768, 'temp_kf': 0}, 'clouds': {'all': 8}}, {'sys': {'pod': 'n'}, 'weather': [{'description': 'few clouds', 'id': 801, 'main': 'Clouds', 'icon': '02n'}], 'rain': {}, 'wind': {'deg': 69.5004, 'speed': 1.22}, 'dt': 1554206400, 'dt_txt': '2019-04-02 12:00:00', 'main': {'grnd_level': 999.46, 'sea_level': 1025.46, 'humidity': 93, 'temp_max': 277.386, 'temp_min': 277.386, 'pressure': 1025.46, 'temp': 277.386, 'temp_kf': 0}, 'clouds': {'all': 20}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'few clouds', 'id': 801, 'main': 'Clouds', 'icon': '02d'}], 'rain': {}, 'wind': {'deg': 85.5007, 'speed': 1.96}, 'dt': 1554217200, 'dt_txt': '2019-04-02 15:00:00', 'main': {'grnd_level': 1000.42, 'sea_level': 1025.88, 'humidity': 61, 'temp_max': 287.517, 'temp_min': 287.517, 'pressure': 1025.88, 'temp': 287.517, 'temp_kf': 0}, 'clouds': {'all': 12}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'few clouds', 'id': 801, 'main': 'Clouds', 'icon': '02d'}], 'rain': {}, 'wind': {'deg': 129.5, 'speed': 3.92}, 'dt': 1554228000, 'dt_txt': '2019-04-02 18:00:00', 'main': {'grnd_level': 999.17, 'sea_level': 1024.07, 'humidity': 49, 'temp_max': 292.757, 'temp_min': 292.757, 'pressure': 1024.07, 'temp': 292.757, 'temp_kf': 0}, 'clouds': {'all': 24}}, {'sys': {'pod': 'd'}, 'weather': [{'description': 'broken clouds', 'id': 803, 'main': 'Clouds', 'icon': '04d'}], 'rain': {}, 'wind': {'deg': 147.504, 'speed': 4.66}, 'dt': 1554238800, 'dt_txt': '2019-04-02 21:00:00', 'main': {'grnd_level': 995.95, 'sea_level': 1020.72, 'humidity': 37, 'temp_max': 294.408, 'temp_min': 294.408, 'pressure': 1020.72, 'temp': 294.408, 'temp_kf': 0}, 'clouds': {'all': 56}}], 'message': 0.0075}