Initial code to get the weather data from the API
This commit is contained in:
71
src/wheaterAPI.py
Normal file
71
src/wheaterAPI.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import requests
|
||||
import json
|
||||
from datetime import datetime, timedelta
|
||||
import os
|
||||
import logging
|
||||
|
||||
class WheatherAPI():
|
||||
|
||||
def __init__(self):
|
||||
self.current_url = 'http://api.weatherapi.com/v1/current.json?key=6b0654bd658842b085395550230406&q=location&aqi=no'
|
||||
self.forecast_url = 'http://api.weatherapi.com/v1/forecast.json?key=6b0654bd658842b085395550230406&q=location&days=no_days&aqi=no&alerts=no'
|
||||
|
||||
def current_wheather(self, location):
|
||||
|
||||
url = self.current_url.replace('location', location)
|
||||
response = requests.get(url)
|
||||
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
|
||||
filename = 'current_' + location + '_' + datetime.now().strftime('%Y-%m-%d-%H-%M') + '.json'
|
||||
|
||||
with open(os.path.join('C:/Users/jacob/PycharmProjects/AWS-Training/results/current', filename) ,'w') as file: #/results/current/
|
||||
json.dump(data, file)
|
||||
|
||||
def forecast_wheather(self, location, no_days):
|
||||
|
||||
url = self.forecast_url.replace('location', location)
|
||||
url = url.replace('no_days', str(no_days))
|
||||
response = requests.get(url)
|
||||
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
|
||||
filename = 'forecasts_' + location + '_' + str(no_days) + '_' + datetime.now().strftime('%Y-%m-%d-%H-%M') + '.json'
|
||||
|
||||
with open(os.path.join('C:/Users/jacob/PycharmProjects/AWS-Training/results/forecasts', filename), 'w') as file: #/results/forecasts/
|
||||
json.dump(data, file)
|
||||
|
||||
def call_current_wheater(self, last_datetime, location_list):
|
||||
|
||||
current_time = datetime.now().strftime('%Y-%m-%d-%H')
|
||||
|
||||
if last_datetime != current_time:
|
||||
|
||||
logging.info('Run of current wheather successful')
|
||||
for location_name in location_list:
|
||||
self.current_wheather(location_name)
|
||||
else:
|
||||
logging.info('Run of current wheather does not meet conditions.')
|
||||
|
||||
return current_time
|
||||
|
||||
def call_forecast_wheather(self, next_date, hour_of_forecast_run, location_list, max_forecast):
|
||||
|
||||
current_date = datetime.today().strftime('%Y-%m-%d')
|
||||
|
||||
if next_date == current_date and \
|
||||
datetime.now().strftime('%H') == hour_of_forecast_run:
|
||||
|
||||
for location_name in location_list:
|
||||
self.forecast_wheather(location_name, max_forecast)
|
||||
|
||||
logging.info('Run of forecast wheather successful')
|
||||
|
||||
return (datetime.today() + timedelta(days=1)).strftime('%Y-%m-%d')
|
||||
|
||||
else:
|
||||
logging.info('Run of forecast wheather does not meet conditions.')
|
||||
return next_date
|
||||
|
||||
Reference in New Issue
Block a user