From 726db4527be872e01ffa9b0a66df02c188fa3cd4 Mon Sep 17 00:00:00 2001 From: Ralf Vogler Date: Tue, 15 Apr 2025 17:26:27 +0200 Subject: [PATCH] Current free game title in blue --- epic-games.js | 3 ++- gog.js | 3 ++- prime-gaming.js | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/epic-games.js b/epic-games.js index f03350f..4db1e75 100644 --- a/epic-games.js +++ b/epic-games.js @@ -1,5 +1,6 @@ import { firefox } from 'playwright-firefox'; // stealth plugin needs no outdated playwright-extra import { authenticator } from 'otplib'; +import chalk from 'chalk'; import path from 'path'; import { existsSync, writeFileSync, appendFileSync } from 'fs'; import { resolve, jsonDb, datetime, stealth, filenamify, prompt, notify, html_game_list, handleSIGINT } from './src/util.js'; @@ -192,7 +193,7 @@ try { const game_id = page.url().split('/').pop(); const existedInDb = db.data[user][game_id]; db.data[user][game_id] ||= { title, time: datetime(), url: page.url() }; // this will be set on the initial run only! - console.log('Current free game:', title); + console.log('Current free game:', chalk.blue(title)); if (bundle_includes) console.log(' This bundle includes:', bundle_includes); const notify_game = { title, url, status: 'failed' }; notify_games.push(notify_game); // status is updated below diff --git a/gog.js b/gog.js index c4d5078..6269fc2 100644 --- a/gog.js +++ b/gog.js @@ -1,4 +1,5 @@ import { firefox } from 'playwright-firefox'; // stealth plugin needs no outdated playwright-extra +import chalk from 'chalk'; import { resolve, jsonDb, datetime, filenamify, prompt, notify, html_game_list, handleSIGINT } from './src/util.js'; import { cfg } from './src/config.js'; @@ -102,7 +103,7 @@ try { const match_all = text.match(/Claim (.*) and don't miss the|Success! (.*) was added to/); const title = match_all[1] ? match_all[1] : match_all[2]; const url = await banner.locator('a').first().getAttribute('href'); - console.log(`Current free game: ${title} - ${url}`); + console.log(`Current free game: ${chalk.blue(title)} - ${url}`); db.data[user][title] ||= { title, time: datetime(), url }; if (cfg.dryrun) process.exit(1); // await page.locator('#giveaway:not(.is-loading)').waitFor(); // otherwise screenshot is sometimes with loading indicator instead of game title; #TODO fix, skipped due to timeout, see #240 diff --git a/prime-gaming.js b/prime-gaming.js index 3077717..a425ebe 100644 --- a/prime-gaming.js +++ b/prime-gaming.js @@ -150,14 +150,14 @@ try { if (isNew) await p.close(); return daysLeft > cfg.pg_timeLeft; } - console.log('Number of free unclaimed games (Prime Gaming):', internal.length); + console.log('\nNumber of free unclaimed games (Prime Gaming):', internal.length); // claim games in internal store for (const card of internal) { await card.scrollIntoViewIfNeeded(); const title = await (await card.$('.item-card-details__body__primary')).innerText(); const slug = await (await card.$('a')).getAttribute('href'); const url = 'https://gaming.amazon.com' + slug.split('?')[0]; - console.log('Current free game:', title); + console.log('Current free game:', chalk.blue(title)); if (cfg.pg_timeLeft && await skipBasedOnTime(url)) continue; if (cfg.dryrun) continue; if (cfg.interactive && !await confirm()) continue; @@ -168,7 +168,7 @@ try { // console.log('Image:', img); await card.screenshot({ path: screenshot('internal', `${filenamify(title)}.png`) }); } - console.log('Number of free unclaimed games (external stores):', external.length); + console.log('\nNumber of free unclaimed games (external stores):', external.length); // claim games in external/linked stores. Linked: origin.com, epicgames.com; Redeem-key: gog.com, legacygames.com, microsoft const external_info = []; for (const card of external) { // need to get data incl. URLs in this loop and then navigate in another, otherwise .all() would update after coming back and .elementHandles() like above would lead to error due to page navigation: elementHandle.$: Protocol error (Page.adoptNode) @@ -180,7 +180,7 @@ try { } // external_info = [ { title: 'Fallout 76 (XBOX)', url: 'https://gaming.amazon.com/fallout-76-xbox-fgwp/dp/amzn1.pg.item.9fe17d7b-b6c2-4f58-b494-cc4e79528d0b?ingress=amzn&ref_=SM_Fallout76XBOX_S01_FGWP_CRWN' } ]; for (const { title, url } of external_info) { - console.log('Current free game:', title); // , url); + console.log('Current free game:', chalk.blue(title)); // , url); await page.goto(url, { waitUntil: 'domcontentloaded' }); if (cfg.debug) await page.pause(); const item_text = await page.innerText('[data-a-target="DescriptionItemDetails"]');