No description
Find a file
2026-01-08 12:56:49 +00:00
.forgejo/workflows update 2026-01-08 12:56:49 +00:00
.vscode vscode update changed config 2023-12-19 11:33:38 +01:00
src feat: add optional new epic claimer mode 2025-12-31 12:25:07 +00:00
test Clean up Sonar issues and lint warnings 2025-12-30 16:45:17 +00:00
.dockerignore sort .dockerignore 2023-11-07 12:03:15 +01:00
.gitignore ♻️ refactor(auth): streamline login process 2026-01-08 12:42:33 +00:00
aliexpress.js Clean Sonar findings: merge RUNs, drop commented code, update node imports 2025-12-30 15:39:11 +00:00
CONTRIBUTING.md Allow forks to create builds and fix failing build 2023-10-27 11:37:32 +00:00
docker-compose.yml sample command: and environment: in docker-compose.yml, #85 2023-03-06 22:13:58 +01:00
docker-entrypoint.sh chore: make version banner configurable and speed up login waits 2025-12-31 11:58:35 +00:00
Dockerfile fix: run container as root to keep browser profile writable 2025-12-31 11:47:36 +00:00
epic-claimer-new.js update 2026-01-08 12:56:49 +00:00
epic-games.js fix: handle epic login captcha manually in legacy/new flows 2025-12-31 13:50:14 +00:00
eslint.config.js Clean up Sonar issues and lint warnings 2025-12-30 16:45:17 +00:00
gog.js chore: make version banner configurable and speed up login waits 2025-12-31 11:58:35 +00:00
jsconfig.json fix vscode problem in jsconfig with module vs. moduleResolution 2023-11-07 16:45:17 +01:00
keep-alive.sh chore: add keep-alive helper script 2025-12-31 12:08:20 +00:00
LICENSE Create LICENSE - AGPL-3.0 2023-11-06 19:12:16 +01:00
package-lock.json feat: add optional new epic claimer mode 2025-12-31 12:25:07 +00:00
package.json feat: add optional new epic claimer mode 2025-12-31 12:25:07 +00:00
prime-gaming.js chore: make version banner configurable and speed up login waits 2025-12-31 11:58:35 +00:00
README.md fix: fall back to manual login when epic device code api fails 2025-12-31 13:04:00 +00:00
sonar-project.properties ci: exclude coverage and cpd for sonar 2025-12-31 10:40:44 +00:00
steam-games.js Further clean Sonar: merge base RUN, strip comments, node imports 2025-12-30 15:47:28 +00:00
unrealengine.js fix: resolve remaining sonar findings 2025-12-31 10:38:07 +00:00

Free Games Claimer (Fork)

Quality Gate Status

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-data:/fgc/data \
  -v fgc-browser:/home/fgc/.cache/browser \
  -v fgc-playwright:/home/fgc/.cache/ms-playwright \
  -e SHOW=1 \
  git.sky-net.it/nocci/free-games-claimer:dev \
  bash -c "node prime-gaming; node gog; ./keep-alive.sh"
  • Ports 6080/5900: noVNC/VNC (only needed with SHOW=1)
  • Volumes persist profile + Playwright-Browser, damit Logins/Downloads bleiben.

Docker Compose Example (persistent volumes)

services:
  free-games-claimer:
    image: git.sky-net.it/nocci/free-games-claimer:dev
    container_name: fgc
    environment:
      - SHOW=1                  # show browser via VNC/noVNC
      # - PG_EMAIL=...
      # - PG_PASSWORD=...
      # - PG_OTPKEY=...
      - BROWSER_DIR=/fgc/data/browser
      - LOGIN_VISIBLE_TIMEOUT=20  # optional: faster login detection
      - KEEP_ALIVE_SECONDS=86400  # optional: keep container alive after runs
    volumes:
      - fgc-data:/fgc/data
      - fgc-browser:/home/fgc/.cache/browser
      - fgc-playwright:/home/fgc/.cache/ms-playwright
    ports:
      - "6080:6080"             # noVNC
      # - "5900:5900"           # VNC optional
    command: bash -c "node prime-gaming; node gog; ./keep-alive.sh"
volumes:
  fgc-data:
  fgc-browser:
  fgc-playwright:

Hinweis: Das Image läuft auf dev; bei Bedarf :latest wählen.

Configuration (Environment Variables)

Common options:

  • SHOW=0/1 (0 = headless, 1 = UI)
  • WIDTH, HEIGHT (browser size)
  • TIMEOUT, LOGIN_TIMEOUT (seconds)
  • Epic: EG_MODE=legacy|new (legacy Playwright flow or neuer API-getriebener Claimer), EG_PARENTALPIN, EG_EMAIL, EG_PASSWORD, EG_OTPKEY
  • Epic (new mode): Cookies werden unter data/browser/epic-cookies.json persistiert; OAuth Device Code Flow benötigt ggf. einmalige Freigabe im Browser.
    • Falls Device-Code-Endpunkt nicht erreichbar ist (404/Bad Request), fällt der neue Modus automatisch auf manuellen Browser-Login zurück.
  • 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=<days> 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)
  • Login detection: LOGIN_VISIBLE_TIMEOUT (ms) to abort sooner when login buttons not present
  • Keep-alive: KEEP_ALIVE_SECONDS (default 86400) for keep-alive.sh
  • Repo banner: REPO_URL for log output

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/<store>/
  • Optional videos/HAR: RECORD=1data/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).