Watchdog (scripts/utils/watchdog.py, com.lotto.watchdog.plist, daily
21:30) checks whether the latest draw or the trained models are older
than the launchd schedule allows and sends a Telegram alert - this
would have caught the Aug 15 update run that silently never fired
(the Mac was presumably asleep; launchd does not retry missed
StartCalendarInterval jobs), instead of that only surfacing on the
next manual check.
Also fixes a real path bug in LottoAPIUpdater.create_backup(): since
self.data_file already points into data/, joining "data","backups"
wrote backups to data/data/backups/ instead of data/backups/ - 73
backups (6.3MB) had been piling up there undetected for months, with
data/data/ only ever gitignored rather than the root cause fixed.
Merges the misplaced backups into the correct location and adds
retention (keep last 30) so backups no longer grow unbounded; applied
the same retention to Eurojackpot's updater in a matching commit
there, which didn't have the path bug but had the same unbounded
growth (85 backups, 2.4MB).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Added Lottoland API (https://media.lottoland.com/api/drawings/german6aus49)
for fetching the latest Lotto 6aus49 draw
- Changed strategy to combine both APIs:
1. Lottoland API for the most current draw
2. GitHub Lotto Archive for historical data
- Fixed default data path to use /Projekte/Lotto/data
- Updated AlleLottozahlen.csv with draw from 2026-01-31
This fixes the issue where the GitHub Lotto Archive was outdated
and missing recent draws. Lottoland API provides real-time results.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This project includes multiple AI/ML-based lottery number generators for
German Lotto 6aus49, including pattern analysis, weighted predictions,
and hybrid approaches. Features automated weekly tip generation,
performance tracking, and Telegram bot integration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>