/current_weather_pws

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

Primary LanguageHTML

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