mirror of
https://github.com/geekgeekrun/geekgeekrun.git
synced 2026-09-05 23:47:54 +08:00
add sage time for pausing when request count to a time
This commit is contained in:
@@ -37,6 +37,7 @@ import {
|
|||||||
SEARCH_BOX_SELECTOR,
|
SEARCH_BOX_SELECTOR,
|
||||||
} from './constant.mjs'
|
} from './constant.mjs'
|
||||||
import { parseSalary } from "@geekgeekrun/sqlite-plugin/dist/utils/parser"
|
import { parseSalary } from "@geekgeekrun/sqlite-plugin/dist/utils/parser"
|
||||||
|
import { waitForSageTimeOrJustContinue } from './sage-time.mjs'
|
||||||
const jobFilterConditionsMapByCode = {}
|
const jobFilterConditionsMapByCode = {}
|
||||||
Object.values(jobFilterConditions).forEach(arr => {
|
Object.values(jobFilterConditions).forEach(arr => {
|
||||||
arr.forEach(option => {
|
arr.forEach(option => {
|
||||||
@@ -738,6 +739,9 @@ async function toRecommendPage (hooks) {
|
|||||||
);
|
);
|
||||||
await storeStorage(page).catch(() => void 0)
|
await storeStorage(page).catch(() => void 0)
|
||||||
await sleepWithRandomDelay(2000)
|
await sleepWithRandomDelay(2000)
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'afterJobSourceChosen'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
await sleepWithRandomDelay(1500)
|
await sleepWithRandomDelay(1500)
|
||||||
await setFilterCondition(filterCondition)
|
await setFilterCondition(filterCondition)
|
||||||
@@ -931,7 +935,9 @@ async function toRecommendPage (hooks) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
requestNextPagePromiseWithResolver = null
|
requestNextPagePromiseWithResolver = null
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'afterJobListPageFetched'
|
||||||
|
})
|
||||||
await sleep(5000)
|
await sleep(5000)
|
||||||
await updateJobListData()
|
await updateJobListData()
|
||||||
tempTargetJobIndexToCheckDetail = getTempTargetJobIndexToCheckDetail()
|
tempTargetJobIndexToCheckDetail = getTempTargetJobIndexToCheckDetail()
|
||||||
@@ -975,6 +981,9 @@ async function toRecommendPage (hooks) {
|
|||||||
);
|
);
|
||||||
await sleepWithRandomDelay(2000)
|
await sleepWithRandomDelay(2000)
|
||||||
}
|
}
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'afterJobDetailFetched'
|
||||||
|
})
|
||||||
targetJobData = await page.evaluate('document.querySelector(".job-detail-box").__vue__.data')
|
targetJobData = await page.evaluate('document.querySelector(".job-detail-box").__vue__.data')
|
||||||
selectedJobData = await page.evaluate('document.querySelector(".page-jobs-main").__vue__.currentJob')
|
selectedJobData = await page.evaluate('document.querySelector(".page-jobs-main").__vue__.currentJob')
|
||||||
// save the job detail info
|
// save the job detail info
|
||||||
@@ -1002,6 +1011,9 @@ async function toRecommendPage (hooks) {
|
|||||||
}
|
}
|
||||||
else if (jobNotActiveStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
else if (jobNotActiveStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
||||||
try {
|
try {
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'beforeJobNotSuitMarked'
|
||||||
|
})
|
||||||
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.BOSS_INACTIVE)
|
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.BOSS_INACTIVE)
|
||||||
await hooks.jobMarkedAsNotSuit.promise(
|
await hooks.jobMarkedAsNotSuit.promise(
|
||||||
targetJobData,
|
targetJobData,
|
||||||
@@ -1040,6 +1052,9 @@ async function toRecommendPage (hooks) {
|
|||||||
}
|
}
|
||||||
else if (expectCityNotMatchStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
else if (expectCityNotMatchStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
||||||
try {
|
try {
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'beforeJobNotSuitMarked'
|
||||||
|
})
|
||||||
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.JOB_CITY_NOT_SUIT)
|
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.JOB_CITY_NOT_SUIT)
|
||||||
await hooks.jobMarkedAsNotSuit.promise(
|
await hooks.jobMarkedAsNotSuit.promise(
|
||||||
targetJobData,
|
targetJobData,
|
||||||
@@ -1077,6 +1092,9 @@ async function toRecommendPage (hooks) {
|
|||||||
}
|
}
|
||||||
else if (expectWorkExpNotMatchStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
else if (expectWorkExpNotMatchStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
||||||
try {
|
try {
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'beforeJobNotSuitMarked'
|
||||||
|
})
|
||||||
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.JOB_WORK_EXP_NOT_SUIT)
|
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.JOB_WORK_EXP_NOT_SUIT)
|
||||||
await hooks.jobMarkedAsNotSuit.promise(
|
await hooks.jobMarkedAsNotSuit.promise(
|
||||||
targetJobData,
|
targetJobData,
|
||||||
@@ -1114,6 +1132,9 @@ async function toRecommendPage (hooks) {
|
|||||||
}
|
}
|
||||||
else if (jobNotMatchStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
else if (jobNotMatchStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
||||||
try {
|
try {
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'beforeJobNotSuitMarked'
|
||||||
|
})
|
||||||
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.JOB_NOT_SUIT)
|
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.JOB_NOT_SUIT)
|
||||||
await hooks.jobMarkedAsNotSuit.promise(
|
await hooks.jobMarkedAsNotSuit.promise(
|
||||||
targetJobData,
|
targetJobData,
|
||||||
@@ -1154,6 +1175,9 @@ async function toRecommendPage (hooks) {
|
|||||||
}
|
}
|
||||||
else if (expectSalaryNotMatchStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
else if (expectSalaryNotMatchStrategy === MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS) {
|
||||||
try {
|
try {
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'beforeJobNotSuitMarked'
|
||||||
|
})
|
||||||
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.JOB_SALARY_NOT_SUIT)
|
const { chosenReasonInUi } = await markJobAsNotSuitInRecommendPage(MarkAsNotSuitReason.JOB_SALARY_NOT_SUIT)
|
||||||
await hooks.jobMarkedAsNotSuit.promise(
|
await hooks.jobMarkedAsNotSuit.promise(
|
||||||
targetJobData,
|
targetJobData,
|
||||||
@@ -1271,6 +1295,9 @@ async function toRecommendPage (hooks) {
|
|||||||
reject(err)
|
reject(err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'beforeJobChatStartup'
|
||||||
|
})
|
||||||
await sleepWithRandomDelay(1000)
|
await sleepWithRandomDelay(1000)
|
||||||
const startChatButtonInnerHTML = await page.evaluate('document.querySelector(".job-detail-box .op-btn.op-btn-chat")?.innerHTML.trim()')
|
const startChatButtonInnerHTML = await page.evaluate('document.querySelector(".job-detail-box .op-btn.op-btn-chat")?.innerHTML.trim()')
|
||||||
|
|
||||||
@@ -1319,6 +1346,9 @@ async function toRecommendPage (hooks) {
|
|||||||
res.zpData.bizData?.chatRemindDialog?.blockLevel === 0 &&
|
res.zpData.bizData?.chatRemindDialog?.blockLevel === 0 &&
|
||||||
/剩\d+次沟通机会/.test(res.zpData.bizData?.chatRemindDialog?.content)
|
/剩\d+次沟通机会/.test(res.zpData.bizData?.chatRemindDialog?.content)
|
||||||
) {
|
) {
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'beforeJobChatStartupAfterTwiceConfirm'
|
||||||
|
})
|
||||||
const confirmButton = await page.waitForSelector('.chat-block-dialog .chat-block-footer .sure-btn')
|
const confirmButton = await page.waitForSelector('.chat-block-dialog .chat-block-footer .sure-btn')
|
||||||
await confirmButton.click()
|
await confirmButton.click()
|
||||||
const nextRes = await waitAddFriendResponse()
|
const nextRes = await waitAddFriendResponse()
|
||||||
@@ -1328,6 +1358,9 @@ async function toRecommendPage (hooks) {
|
|||||||
res.zpData.bizCode === 1 &&
|
res.zpData.bizCode === 1 &&
|
||||||
/猎头/.test(res.zpData.bizData?.chatRemindDialog?.content)
|
/猎头/.test(res.zpData.bizData?.chatRemindDialog?.content)
|
||||||
) {
|
) {
|
||||||
|
await waitForSageTimeOrJustContinue({
|
||||||
|
tag: 'beforeJobChatStartupAfterTwiceConfirm'
|
||||||
|
})
|
||||||
const confirmButton = await page.waitForSelector(`xpath///*[contains(@class, "chat-block-dialog")]//*[contains(@class, "chat-block-footer")]//*[contains(text(), "继续")]`)
|
const confirmButton = await page.waitForSelector(`xpath///*[contains(@class, "chat-block-dialog")]//*[contains(@class, "chat-block-footer")]//*[contains(text(), "继续")]`)
|
||||||
await confirmButton.click()
|
await confirmButton.click()
|
||||||
const nextRes = await waitAddFriendResponse()
|
const nextRes = await waitAddFriendResponse()
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import { sleep } from "@geekgeekrun/utils/sleep.mjs"
|
||||||
|
|
||||||
|
let totalEnabledTimes = 0
|
||||||
|
|
||||||
|
let recordedOpCount = 0
|
||||||
|
export const waitForSageTimeOrJustContinue = async ({
|
||||||
|
tag
|
||||||
|
} = {}) => {
|
||||||
|
const tagText = tag ? ` ${tag}` : ''
|
||||||
|
if (recordedOpCount > 50) {
|
||||||
|
totalEnabledTimes++
|
||||||
|
console.log(`[SageTime${tagText}] 请求已达限制,开启;当前记录次数 ${recordedOpCount};第 ${totalEnabledTimes} 次开启`)
|
||||||
|
await sleep(5 * 60 * 1000)
|
||||||
|
console.log(`[SageTime${tagText}] 请求限制已解除,关闭;当前记录次数 ${recordedOpCount};第 ${totalEnabledTimes} 次关闭`)
|
||||||
|
recordedOpCount = 0
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(`[SageTime${tagText}] 请求未达限制;当前记录次数 ${recordedOpCount};已开启过 ${totalEnabledTimes} 次`)
|
||||||
|
recordedOpCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user