I have been developing this python code and I found a great way of sharing my code but not my API keys! I also made a Python ‘function’ so that new locations can simply be added by defining a name and the longitude and latitude coordinates (the Met office API does the hard work is finding the nearest weather station to these coordinates) and calling this function with the 3 parameters.
For updates see this repository – https://github.com/soneups/MetOffice
#!/usr/bin/env python
# Tweet some weather data!
import time
import sys
import metoffer
from twython import Twython
# Define location of api files - recorded in a file - avoids a GitHub slurp for API keys!
keys_file='/home/pi/piweather/metoffice/MetOffer-1.2/keys'
metkeys_file='/home/pi/piweather/metoffice/MetOffer-1.2/apikeysmetoffice.key'
# Read API keys from file
with open(keys_file) as f:
CONSUMER_KEY = f.readline().strip("\n")
CONSUMER_SECRET = f.readline().strip("\n")
ACCESS_KEY = f.readline().strip("\n")
ACCESS_SECRET = f.readline().strip("\n")
with open(metkeys_file) as f:
met_api_key = f.readline().strip("\n")
# Setup API calls
api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)
met = metoffer.MetOffer(met_api_key)
# get local weather
def LookupObs( locationdescription, longitude, latitude ):
weather_observations = met.nearest_loc_obs(float(longitude),float(latitude))
weather_report = metoffer.parse_val(weather_observations)
weather_data = weather_report.data[len(weather_report.data)-1]
wind_info = weather_data['Wind Speed']
wind_direction = weather_data['Wind Direction']
mph=int(wind_info[0])
kph=int(mph*1.609344)
tmpf=int(weather_data['Temperature'][0])*9/5+32
print (time.strftime("%d/%m/%Y"))+"@"+(time.strftime("%H:%M:%S")) + " - " +locationdescription+": "+str((weather_data['Temperature'][0]))+"c/"+str(tmpf)+"f, Wind speed: "+str(wind_info[0])+wind_info[1]+" "+wind_direction[0]
api.update_status(status=str(time.strftime("%d/%m/%Y"))+"@"+str(time.strftime("%H:%M:%S")) + " - " +locationdescription+": "+str((weather_data['Temperature'][0]))+"c/"+str(tmpf)+"f, Wind speed: "+str(wind_info[0])+wind_info[1]+" "+wind_direction[0])
return;
LookupObs( locationdescription="#BrizeNorton", longitude=51.7616, latitude=-1.5779 ); #Brize
LookupObs( locationdescription="#Stornoway", longitude=58.1011, latitude=-4.9899 ); #Stornoway
LookupObs( locationdescription="#Burnhamonsea", longitude=51.2430, latitude=-2.9920 ); #BOS
LookupObs( locationdescription="#Newquay", longitude=50.3995, latitude=-5.1379 ); #Newquay