holy-heck-i-really-like-stats/README.md

1.8 KiB

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

$ ./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?