Skip to content

Python/Flask/Jinja2 app for display of current weather stats from WUnderground API

Notifications You must be signed in to change notification settings

nick3499/current_weather_pws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Current Weather PWS

Using Python (language), Flask (framework) and Jinja2 (template) to GET and display current weather conditions from WUnderground API. From one station in WU's 250,000+ Personal Weather Station Network

Note: Weather Underground no longer provides free API keys.

screen-capture

Imports

from flask import Flask, flash, redirect, render_template, request
from urllib3 import PoolManager
import json

Dependencies

The Anaconda Python distribution was used to develop this app, so related dependencies have been linked below:

Sudden changes may not reflect the list above. Additional required modules may be overlooked.

NOTE: virtual environments should act jointly with development environments, since operating systems use a subset of Python. Added modules may modify important dependencies which potentially corrupt the system.

Jinja2

Jinja2 is inclusive, just as templates live in a specific directory, e.g. /templates. Since templates specify HTML document structure. Notice the handlebar structure insertion below, e.g. {{ co['weather'] }}.

<table>
    <tr>
      <td><span class="blue">Weather condition</span></td>
      <td>{{ co['weather'] }}</td>
    </tr>
...

current_cond()

The current_cond() method assigns a dictionary variable for insertion of URL parts.

@app.route("/current/")
def current_cond():
    d = {'api_key': '51857b97d97c71a0',
         'state_code': 'IL',
         'personal_weather_station': 'pws:KILMORRI2'}
    pm = PoolManager()

Values from that dictionary are spliced into the URL to GET raw weather data from the API.

    r = pm.request('GET', 'http://api.wunderground.com/api/' +
                   d['api_key'] + '/conditions/q/' + d['state_code'] +
                   '/' + d['personal_weather_station'] + '.json')

Try/Except Block

Sometimes leaf_wetness data is omitted, which causes a KeyError, so the following try/except block was added.

try:
   lw = co['leaf_wetness']
except KeyError:
   pass

ko-fi

About

Python/Flask/Jinja2 app for display of current weather stats from WUnderground API

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published