Skip to content

Directory Structure

├── app/                       # core package
│   ├── config.py              # centralized paths / env vars / local config
│   ├── crypto.py              # MySekai save AES-128-CBC decryption
│   ├── parser.py              # msgpack parsing + station coordinate rotation (pure functions)
│   ├── har.py                 # HAR parsing + decompression for the Reqable report server (pure functions)
│   ├── render.py              # extract drop points → matplotlib drawing + rare-resource stats
│   ├── notify.py              # push: Telegram media groups / Bark, per-player routing
│   ├── server.py              # FastAPI upload service (chunked upload + Reqable report server)
│   └── cli.py                 # CLI entry
├── assets/                    # static assets (committed to the repo)
│   ├── resourceId.csv         # item ID → name + icon (base64)
│   └── NotoSansSC-Regular.ttf # Chinese font (OFL license)
├── config/                    # local configs (real files not committed; see *.example.json)
│   ├── bark_map.example.json  # Bark alias → device key template
│   └── push_map.example.json  # player ID → push method template
├── data/                      # runtime data (whole directory gitignored)
│   ├── tmp/                   # chunk upload staging, cleaned after merge
│   ├── raw_mysekai/           # merged original (encrypted) saves, kept permanently
│   ├── archive/               # historical output archive by-id/<user>/<timestamp>/ (Bark links point here)
│   └── latest/                # most recent output
├── cli.py                     # unified entry
├── tests/                     # unit tests (pytest)
├── .env.example               # env var template (copy to .env and fill in)
└── requirements.txt           # runtime dependencies (pinned)

Testing

bash
python -m pytest