# Holy Heck I Really Like Stats Pokemon Showdown data processing, mostly for HHIRLLL's Pokemon league. Ugly as fuck. Also includes a bot to automate replay ingestion and provide misc utilities. ## Requirements - Python with sqlite - requests ## Usage ```sh $ ./index.py -h usage: hhirlstats [-h] [-v] [-C] [-t FILE] [-o FILE] replay [replay ...] extracts stats from a Showdown replay positional arguments: replay replay ID or URL options: -h, --help show this help message and exit -v, --verbose add debugging info (default: None) -C, --no-cache fetch replays instead of using cache (default: False) -t FILE, --teams FILE JSON file defining players to teams (default: teams.json) -o FILE, --output FILE output data file (default: data.db) ``` Replay files are cached after they're downloaded for the first time save issuing requests to Showdown on every new run. Run the program once with all your replays (or once for each replay), then run whatever SQL queries against the data file (default `data.db`) you want. ## Future work - include timestamps in logs to correlate KOs with the mon that KOed - calculate gametime based on active turns rather than moves used - also solves the issue where paralyzed/confused turns are not counted - use asyncio in bot - allow for entering unplayed forfeits - easy correction of game drift (e.g., two games played for a single team in a week) - collect stats on teras and megas - inline common queries into the base database as views - channel filtering for replay collection - move/damage tracking: - delayed damage (Future Sight and co) - self-damage misattribution (Belly Drum, possibly Explosion) - indirect status (Toxic Spikes) - weather?