Python system that tracks and records occupancy and capacity data for swimming pools in Brno, Czech Republic. Data is automatically collected via GitHub Actions and provides insights into pool usage patterns.
- Kraví Hora (indoor & outdoor)
- Koupaliště Dobrák
- Koupaliště Riviéra
- Koupaliště Zábrdovice
- Aquapark Kohoutovice
- Bazény Lužánky
chmod +x run-docker.sh
./run-docker.shChoose option 1 to start automated tracking.
pip install -r requirements.txt
python occupancy.py # Fetch current occupancy
python capacity.py # Analyze lane capacity
python -m pool_aggregation # Generate aggregated JSON data.
├── .github/workflows/schedule.yml # GitHub Actions
├── data/
│ ├── pool_occupancy_config.json # Pool configuration
│ ├── *.csv # Raw occupancy data
│ ├── overall/*.json # Aggregated overall stats
│ └── weekly/*.json # Aggregated weekly stats
├── pool_aggregation/ # Aggregation module
│ ├── cli.py # CLI entry point
│ └── aggregation/ # Data processing
├── occupancy.py # Occupancy scraper
├── capacity.py # Capacity analyzer
├── Dockerfile
└── docker-compose.yml
Pool settings are in data/pool_occupancy_config.json. Set collectStats: true to enable tracking for a pool.
| File | Description |
|---|---|
data/*_occupancy.csv |
Raw occupancy readings |
data/overall/*.json |
Historical overall statistics |
data/weekly/*.json |
Weekly aggregated data |
data/capacity.csv |
Daily lane capacity |
data/week_capacity.csv |
Weekly capacity forecast |
- Occupancy: Every 10 minutes (02:00-19:59 UTC)
- Capacity: Once daily (02:00 UTC)
Dashboard: pool-occupancy-dashboard-nuxt Live Demo: Pool Occupancy Dashboard
Feel free to open issues or submit pull requests if you have suggestions for improvements or want to add support for additional pools.
This project is for educational and research purposes. Please respect the terms of service of the data sources.