As of 2020-05-21, WWLLN no longer provides this data source and this project is archived.
aiowwlln
is a simple, asyncio
-driven Python library for retrieving information on
lightning strikes from
the World Wide Lightning Location Network (WWLLNN).
NOTE: This library is built on an unofficial API; therefore, it may stop working at any time.
pip install aiowwlln
aiowwlln
is currently supported on:
- Python 3.6
- Python 3.7
- Python 3.8
import asyncio
from datetime import datetime
from aiohttp import ClientSession
from aiowwlln import Client
async def main() -> None:
"""Run!"""
client = aiowwlln.Client()
# Create a client and get all strike data – by default, data is cached for
# 60 seconds (be a responsible data citizen!):
client = Client(session)
await client.dump()
# If you want to increase the cache to 24 hours, go for it:
client = Client(session, cache_seconds=60*60*24)
await client.dump()
# Get strike data within a 50 km radius around a set of coordinates (note that
# the cache still applies):
await client.within_radius(
56.1621538, 92.2333561, 50, unit="metric"
)
# Get strike data within a 10 mile radius around a set of coordinates (note that
# the cache still applies):
await client.within_radius(
56.1621538, 92.2333561, 10, unit="imperial"
)
# Get strike data within a 50 km radius around a set of coordinates _and_
# within the last 10 minutes:
await client.within_radius(
56.1621538, 92.2333561, 50, unit="metric", window=timedelta(minutes=10)
)
asyncio.run(main())
By default, the library creates a new connection to the WWLLN with each coroutine. If
you are calling a large number of coroutines (or merely want to squeeze out every second
of runtime savings possible), an
aiohttp
ClientSession
can be used for connection
pooling:
import asyncio
from datetime import datetime
from aiohttp import ClientSession
from aiowwlln import Client
async def main() -> None:
"""Run!"""
async with ClientSession() as session:
client = aiowwlln.Client(session=session)
# ...
asyncio.run(main())
- Check for open features/bugs or initiate a discussion on one.
- Fork the repository.
- (optional, but highly recommended) Create a virtual environment:
python3 -m venv .venv
- (optional, but highly recommended) Enter the virtual environment:
source ./.venv/bin/activate
- Install the dev environment:
script/setup
- Code your new feature or bug fix.
- Write tests that cover your new functionality.
- Run tests and ensure 100% code coverage:
script/test
- Update
README.md
with any new documentation. - Add yourself to
AUTHORS.md
. - Submit a pull request!