- Fixed browser generating mobile browser after the first account
- Hopefully fixed script erroring after not finding parent promotions
- Added support for MacOS (Thanks @alecm858)
- Made some changes to search result scrolling
This commit is contained in:
TheNetsky
2024-01-20 12:11:02 +01:00
parent c5beccb54b
commit 2fea17c415
4 changed files with 23 additions and 14 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "microsoft-rewards-script",
"version": "1.4.2",
"version": "1.4.3",
"description": "Automatically do tasks for Microsoft Rewards but in TS!",
"main": "index.js",
"engines": {
@@ -12,7 +12,7 @@
"ts-start": "ts-node ./src/index.ts",
"dev": "ts-node ./src/index.ts -dev",
"kill-chrome-win": "powershell -Command \"Get-Process | Where-Object { $_.MainModule.FileVersionInfo.FileDescription -eq 'Google Chrome for Testing' } | ForEach-Object { Stop-Process -Id $_.Id -Force }\"",
"create-docker" : "docker build -t microsoft-rewards-script-docker ."
"create-docker": "docker build -t microsoft-rewards-script-docker ."
},
"keywords": [
"Bing Rewards",
@@ -32,11 +32,11 @@
"typescript": "^5.3.3"
},
"dependencies": {
"axios": "^1.6.2",
"axios": "^1.6.5",
"cheerio": "^1.0.0-rc.12",
"fingerprint-generator": "^2.1.46",
"fingerprint-injector": "^2.1.46",
"playwright": "^1.40.1",
"playwright": "^1.41.1",
"ts-node": "^10.9.2"
}
}

View File

@@ -38,7 +38,7 @@ export class Workers {
// Punch Card
async doPunchCard(page: Page, data: DashboardData) {
const punchCardsUncompleted = data.punchCards?.filter(x => !x.parentPromotion.complete) ?? [] // Only return uncompleted punch cards
const punchCardsUncompleted = data.punchCards?.filter(x => !x.parentPromotion?.complete) ?? [] // Only return uncompleted punch cards
if (!punchCardsUncompleted.length) {
this.bot.log('PUNCH-CARD', 'All "Punch Cards" have already been completed')

View File

@@ -1,5 +1,6 @@
import { Page } from 'playwright'
import axios from 'axios'
import { platform } from 'os'
import { Workers } from '../Workers'
@@ -128,20 +129,25 @@ export class Search extends Workers {
}
private async bingSearch(searchPage: Page, query: string) {
const platformControlKey = platform() === 'darwin' ? 'Meta' : 'Control'
// Try a max of 5 times
for (let i = 0; i < 5; i++) {
try {
// Go back to the top
await searchPage.keyboard.press('Home')
// Go to top of the page
await searchPage.evaluate(() => {
window.scrollTo(0, 0)
})
const searchBar = '#sb_form_q'
await searchPage.waitForSelector(searchBar, { state: 'attached', timeout: 10_000 })
await searchPage.waitForSelector(searchBar, { state: 'visible', timeout: 10_000 })
await searchPage.click(searchBar) // Focus on the textarea
await this.bot.utils.wait(500)
await searchPage.keyboard.down('Control')
await searchPage.keyboard.down(platformControlKey)
await searchPage.keyboard.press('A')
await searchPage.keyboard.press('Backspace')
await searchPage.keyboard.up('Control')
await searchPage.keyboard.up(platformControlKey)
await searchPage.keyboard.type(query)
await searchPage.keyboard.press('Enter')
@@ -252,10 +258,11 @@ export class Search extends Workers {
private async randomScroll(page: Page) {
try {
// Press the arrow down key to scroll
for (let i = 0; i < this.bot.utils.randomNumber(5, 600); i++) {
await page.keyboard.press('ArrowDown')
}
const scrollAmount = this.bot.utils.randomNumber(5, 5000)
await page.evaluate((scrollAmount) => {
window.scrollBy(0, scrollAmount)
}, scrollAmount)
} catch (error) {
this.bot.log('SEARCH-RANDOM-SCROLL', 'An error occurred:' + error, 'error')

View File

@@ -125,6 +125,8 @@ export class MicrosoftRewardsBot {
// Desktop
async Desktop(account: Account) {
this.isMobile = false
const browser = await this.browserFactory.createBrowser(account.proxy, account.email)
this.homePage = await browser.newPage()