Site Map - skip to main content

Hacker Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.


hpr2919 :: hosting software in HPR show notes

boats are awesome, but might lead to hosting software in the HPR show notes

<< First, < Previous, Latest >>

Hosted by Jezra on 2019-10-10 is flagged as Clean and is released under a CC-BY-SA license.
Tags: canoe, ptython, api, weather.
Listen in ogg, spx, or mp3 format. | Comments (0)

Part of the series: Programming 101

A series focusing on concepts and the basics of programming

#!/usr/bin/env python
import urllib.request
import json
import re
import subprocess

# see https://www.weather.gov/documentation/services-web-api

#where are we? GPS coordinates
lat = 39.275235
lon = -120.9199507
#what is the user agent string?
agent = "Jezra's fun lil script"
#minimum wind speed in mph?
min_speed = 9

def get_api_data(endpoint):
  print(endpoint)
  #prepare the connection with custom headers
  request = urllib.request.Request(endpoint, headers={"User-Agent":agent})
  #create a handler for the request
  handler = urllib.request.urlopen(request)
  #get the text
  text = handler.read()
  #parse the json text to a python object
  obj = json.loads(text)
  return obj

def wind_is_good(s):
  #use regex to find the matches
  matches = re.findall("[0-9]+",s)
  for match in matches:
    #convert string to int
    m = int(match)
    #is the speed good?
    if(m>=min_speed):
      return True
  #if we get here, there is no match :(
  return False

start_url = "https://api.weather.gov/points/{0},{1}".format(lat,lon)
#get the json response from the start_url as a python object
obj = get_api_data(start_url)

#get the forecast url from the returned data
forecast_url = obj['properties']['forecast']

# process the forecast url
forecast = get_api_data(forecast_url)

#loop through the forcast periods
for period in forecast['properties']['periods']:
  #put name and windspeed into easier to handle variable names
  name= period['name']
  wind = period['windSpeed']
  print (name, wind)
  #check the wind speed
  if wind_is_good(wind):
    subprocess.call(["textjezra","{0}: {1}".format(name,wind)])

Comments

Subscribe to the comments RSS feed.

<< First, < Previous, Latest >>

Leave Comment

Note to Verbose Commenters
If you can't fit everything you want to say in the comment below then you really should record a response show instead.

Note to Spammers
All comments are moderated. All links are checked by humans. We strip out all html. Feel free to record a show about yourself, or your industry, or any other topic we may find interesting. We also check shows for spam :).

Provide feedback
Your Name/Handle:
Title:
Comment:
Anti Spam Question: What does the P in HPR stand for ?
Are you a spammer →
Who hosted this show →
What does HPR mean to you ?