Free Games Claimer (Fork) ========================== Automates claiming of free games for: - Amazon Luna Gaming / Luna claims (including external stores like GOG, Epic Games, Legacy Games ) - GOG giveaways - Optional extras: Steam stats, AliExpress dailies (not implemated yet) Requirements ------------ - Docker or Podman (recommended), or Node.js ≥ 20 for local runs - Optional notifications: `pip install apprise` - Playwright dependencies are baked into the container; locally, `npm install` downloads Firefox. Quickstart (Docker Run) ----------------------- ``` docker run --rm -it \ -p 6080:6080 \ -v fgc:/fgc/data \ -e SHOW=1 \ git.sky-net.it/nocci/free-games-claimer:latest \ node prime-gaming.js ``` - Ports 6080/5900: noVNC/VNC (only needed with `SHOW=1`) - Data/configs are stored in volume `fgc` under `/fgc/data` Docker Compose Example ---------------------- ```yaml services: fgc: image: git.sky-net.it/nocci/free-games-claimer:latest container_name: fgc environment: - SHOW=1 # show browser via VNC/noVNC # - PG_EMAIL=... # - PG_PASSWORD=... # - PG_OTPKEY=... volumes: - fgc:/fgc/data ports: - "6080:6080" # noVNC # - "5900:5900" # VNC optional command: bash -c "node epic-games; node prime-gaming; node gog" volumes: fgc: ``` Configuration (Environment Variables) ------------------------------------- Common options: - `SHOW=0/1` (0 = headless, 1 = UI) - `WIDTH`, `HEIGHT` (browser size) - `TIMEOUT`, `LOGIN_TIMEOUT` (seconds) - Login: `EMAIL`, `PASSWORD` global; per store `EG_EMAIL`, `EG_PASSWORD`, `EG_OTPKEY`, `PG_EMAIL`, `PG_PASSWORD`, `PG_OTPKEY`, `GOG_EMAIL`, `GOG_PASSWORD` - Prime Gaming: `PG_REDEEM=1` (auto-redeem keys, experimental), `PG_CLAIMDLC=1`, `PG_TIMELEFT=` to skip long-remaining offers - Screenshots: `SCREENSHOTS_DIR` (default `data/screenshots`) - Notifications: `NOTIFY='...'` (Apprise URL), optional `NOTIFY_TITLE` - Browser profile: `BROWSER_DIR` (default `data/browser`) - Recording: `RECORD=1` to save videos/HAR to `data/record/` - Debugging: `DEBUG=1` (opens Playwright inspector), `DEBUG_NETWORK=1` (logs requests), `TIME=1` (prints timings) - Dry run / Interaction: `DRYRUN=1` (do not claim), `INTERACTIVE=1` (ask before claiming), `HEADLESS` is derived from `SHOW`/`DEBUG` - Directories: `SCREENSHOTS_DIR`, `BROWSER_DIR`, `DATA_DIR` (prefix for data; default under `data/`) - VNC/noVNC: `VNC_PASSWORD` (for Docker entrypoint), `NOVNC_PORT`/`VNC_PORT` (Docker) - General timeouts: `TIMEOUT` (per action), `LOGIN_TIMEOUT` (extra time for login) You can place a `data/config.env`; it is loaded via dotenv and is overridden by explicitly set environment variables. Local Run Without Docker ------------------------ ``` npm install SHOW=0 PG_EMAIL=... PG_PASSWORD=... PG_OTPKEY=... node prime-gaming.js ``` - Playwright downloads Firefox to `~/.cache/ms-playwright`. - Use `SHOW=1` for a visible browser (requires GUI/Xvfb). Persistence & Outputs --------------------- - Data/status: `data/*.json` (per store) - Browser profile: `data/browser` - Screenshots: `data/screenshots//` - Optional videos/HAR: `RECORD=1` → `data/record/` Tip: For captchas or first-time login, run with `SHOW=1` and log in once; cookies stay in the profile. Notifications via `NOTIFY` help surface errors (e.g., captcha, login).