about summary refs log tree commit diff
path: root/README.md
blob: 95e9bc3e319b4a7b0417b4533cc9ed83db266889 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
meteor.py
=========

A simple script written in about 4 hours that gets the weather. wttr.in was giving somewhat inaccurate results and
we found the [National Weather Service API](https://www.weather.gov/documentation/services-web-api) one day, so we
figured that we ought as well spend a little bit of time and have some fun with it.

Usage
-----

`meteor.py lat lon`

`lat` and `lon` are the latitude & longitude of a particular point in the United States (e.g. 38.57 -121.48 is within Sacramento, California)

TODO / Issues
-------------

- Geocoding would make this a little more usable. [NWS lists several potential services](https://weather-gov.github.io/api/general-faqs#geocoding)
- Round decimals to 4 places ourselves to avoid errors
- Cache responses appropriately (the API uses HTTP caching headers correctly, TBA if we want to drop in requests-cache or do it ourselves)
- Use the /gridpoints/gridId/gridX,gridY endpoint to generate our own forecast with things like probabilityOfPrecipitation
- Fancy output like wttr.in
- Display the names of the zones (requires extra API calls - cacheable for a long duration, though)
- Shorter alert descriptions (`parameters.NWSheadline[0]` instead of `description`)
- Work around known issues in the NWS API:
    - retry when gridpoints 500s
    - reduce gridX and gridY by 1 for AFC (AER/ALU), AFG, AJK, BOX, CAE, DLH, FSD, HGX, HNX, LIX, LWX, MAF, MFR, MLB, MRX, MTR, PIH offices/gridIds
- Gracefully handle cache keys that include '/'

Reference
---------

- [National Weather Service API Documentation](https://www.weather.gov/documentation/services-web-api)
- [NWS OpenAPI](https://api.weather.gov/openapi.json)

License
-------

(c) 2022 Starfall. All rights reserved.

- "It shall be permissible to make quotations from a work ... provided that their making is
  compatible with fair practice." - Berne Convention
- Information wants to be free.
- Be gay, do crimes.