Python scripts that get the weather data from different providers and save it in a common format into mongodb. This project use Google Cloud APIs to compute any missing station details (altitude, name, timezone, ...). Google Cloud API results are cached with redis.
- Docker
- Google Cloud API key
- Providers secrets (optional)
Create an .env file from .env.template read by docker compose:
cp .env.template .env
In .env:
- fill GOOGLE_API_KEY with you own Google Cloud API key
- optionally fill the missing secrets for each provider you want to test
docker compose --profile=application up
Or, run only a specific provider:
PROVIDER=myexample docker compose --profile=application up
Some providers need winds-mobi-admin running to get stations metadata.
- Homebrew
- uv
- dotenvx
- Google Cloud API key
- Providers secrets (optional)
Create an .env.localhost file from .env.localhost.template read by dotenv for our local commands:
cp .env.localhost.template .env.localhost
In env.localhost:
- fill GOOGLE_API_KEY with you own Google Cloud API key
- optionally fill the missing secrets for each provider you want to test
Install libraries with homebrew:
brew install postgresqlbrew install mysql-clientexport PKG_CONFIG_PATH="/usr/local/opt/mysql-client/lib/pkgconfig"
uv python installuv sync
You must already have the .env file created in the previous section.
docker compose up
dotenvx run -f .env.localhost -- uv run python run_scheduler.py
Or, run only a specific provider:
dotenvx run -f .env.localhost -- uv run python -m providers.ffvl
Some providers need winds-mobi-admin running to get stations metadata.
Run the linter:
uv run ruff check
Run the formatter:
uv run ruff format
uv run pytest
You know good quality weather stations that would be useful for many paraglider pilots or kitesurfers?
Awesome! Fork this repository and open a pull request with your new provider code. It's easy, look at the following example: providers/myexample.py
winds.mobi is licensed under the AGPL License, Version 3.0. See LICENSE.txt