Current free game title in blue
This commit is contained in:
parent
04d1b7ea9e
commit
726db4527b
3 changed files with 8 additions and 6 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
import { firefox } from 'playwright-firefox'; // stealth plugin needs no outdated playwright-extra
|
import { firefox } from 'playwright-firefox'; // stealth plugin needs no outdated playwright-extra
|
||||||
import { authenticator } from 'otplib';
|
import { authenticator } from 'otplib';
|
||||||
|
import chalk from 'chalk';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { existsSync, writeFileSync, appendFileSync } from 'fs';
|
import { existsSync, writeFileSync, appendFileSync } from 'fs';
|
||||||
import { resolve, jsonDb, datetime, stealth, filenamify, prompt, notify, html_game_list, handleSIGINT } from './src/util.js';
|
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 game_id = page.url().split('/').pop();
|
||||||
const existedInDb = db.data[user][game_id];
|
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!
|
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);
|
if (bundle_includes) console.log(' This bundle includes:', bundle_includes);
|
||||||
const notify_game = { title, url, status: 'failed' };
|
const notify_game = { title, url, status: 'failed' };
|
||||||
notify_games.push(notify_game); // status is updated below
|
notify_games.push(notify_game); // status is updated below
|
||||||
|
|
|
||||||
3
gog.js
3
gog.js
|
|
@ -1,4 +1,5 @@
|
||||||
import { firefox } from 'playwright-firefox'; // stealth plugin needs no outdated playwright-extra
|
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 { resolve, jsonDb, datetime, filenamify, prompt, notify, html_game_list, handleSIGINT } from './src/util.js';
|
||||||
import { cfg } from './src/config.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 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 title = match_all[1] ? match_all[1] : match_all[2];
|
||||||
const url = await banner.locator('a').first().getAttribute('href');
|
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 };
|
db.data[user][title] ||= { title, time: datetime(), url };
|
||||||
if (cfg.dryrun) process.exit(1);
|
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
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -150,14 +150,14 @@ try {
|
||||||
if (isNew) await p.close();
|
if (isNew) await p.close();
|
||||||
return daysLeft > cfg.pg_timeLeft;
|
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
|
// claim games in internal store
|
||||||
for (const card of internal) {
|
for (const card of internal) {
|
||||||
await card.scrollIntoViewIfNeeded();
|
await card.scrollIntoViewIfNeeded();
|
||||||
const title = await (await card.$('.item-card-details__body__primary')).innerText();
|
const title = await (await card.$('.item-card-details__body__primary')).innerText();
|
||||||
const slug = await (await card.$('a')).getAttribute('href');
|
const slug = await (await card.$('a')).getAttribute('href');
|
||||||
const url = 'https://gaming.amazon.com' + slug.split('?')[0];
|
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.pg_timeLeft && await skipBasedOnTime(url)) continue;
|
||||||
if (cfg.dryrun) continue;
|
if (cfg.dryrun) continue;
|
||||||
if (cfg.interactive && !await confirm()) continue;
|
if (cfg.interactive && !await confirm()) continue;
|
||||||
|
|
@ -168,7 +168,7 @@ try {
|
||||||
// console.log('Image:', img);
|
// console.log('Image:', img);
|
||||||
await card.screenshot({ path: screenshot('internal', `${filenamify(title)}.png`) });
|
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
|
// claim games in external/linked stores. Linked: origin.com, epicgames.com; Redeem-key: gog.com, legacygames.com, microsoft
|
||||||
const external_info = [];
|
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)
|
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' } ];
|
// 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) {
|
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' });
|
await page.goto(url, { waitUntil: 'domcontentloaded' });
|
||||||
if (cfg.debug) await page.pause();
|
if (cfg.debug) await page.pause();
|
||||||
const item_text = await page.innerText('[data-a-target="DescriptionItemDetails"]');
|
const item_text = await page.innerText('[data-a-target="DescriptionItemDetails"]');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue