mirror of
https://github.com/primedigitaltech/azon_seeker.git
synced 2026-02-06 23:35:44 +08:00
feat: add detailed task logic to skip invalid ASINs.
This commit is contained in:
parent
4ec4d79457
commit
169be0e142
@ -63,8 +63,6 @@ export async function exec<T, P extends Record<string, unknown>>(
|
|||||||
|
|
||||||
const tab = await browser.tabs.get(tabId);
|
const tab = await browser.tabs.get(tabId);
|
||||||
if (tab.status !== 'complete') {
|
if (tab.status !== 'complete') {
|
||||||
console.log('waitForPageLoaded');
|
|
||||||
|
|
||||||
await browser.tabs.reload(tabId);
|
await browser.tabs.reload(tabId);
|
||||||
await new Promise((resolve) => setTimeout(resolve, 2000)); // 等待刷新开始
|
await new Promise((resolve) => setTimeout(resolve, 2000)); // 等待刷新开始
|
||||||
}
|
}
|
||||||
|
|||||||
@ -140,6 +140,11 @@ function buildAmazonPageWorker(): WorkerComposable<AmazonPageWorker, AmazonPageW
|
|||||||
worker.on('item-review-collected', (ev) => {
|
worker.on('item-review-collected', (ev) => {
|
||||||
updateReviewCache(ev);
|
updateReviewCache(ev);
|
||||||
}),
|
}),
|
||||||
|
// current tab is error page
|
||||||
|
// 处理无效ASIN事件
|
||||||
|
// worker.on('invalid-asin-error', (ev) => {
|
||||||
|
// updateDetailCache({ asin: ev.asin, isInvalidAsin: true });
|
||||||
|
// }),
|
||||||
];
|
];
|
||||||
|
|
||||||
return () => unsubscribes.forEach((unsubscribe) => unsubscribe());
|
return () => unsubscribes.forEach((unsubscribe) => unsubscribe());
|
||||||
|
|||||||
@ -129,6 +129,15 @@ class AmazonPageWorkerImpl
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
const injector = new AmazonDetailPageInjector(tab);
|
const injector = new AmazonDetailPageInjector(tab);
|
||||||
|
|
||||||
|
// check if it is an error page
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 2000)); // 等待页面加载
|
||||||
|
const isErrorPage = await injector.detectErrorPage();
|
||||||
|
if (isErrorPage) {
|
||||||
|
this.emit('invalid-asin-error', { asin: params.asin });
|
||||||
|
return; // 直接返回,跳过该ASIN
|
||||||
|
}
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
//#region Await Production Introduction Element Loaded
|
//#region Await Production Introduction Element Loaded
|
||||||
await injector.waitForPageLoaded();
|
await injector.waitForPageLoaded();
|
||||||
|
|||||||
@ -45,6 +45,9 @@ export interface AmazonPageWorkerEvents {
|
|||||||
|
|
||||||
/** Error event that occurs when there is an issue with the Amazon page worker*/
|
/** Error event that occurs when there is an issue with the Amazon page worker*/
|
||||||
['error']: { message: string; url?: string };
|
['error']: { message: string; url?: string };
|
||||||
|
|
||||||
|
/** The event is fired when current tab is error page */
|
||||||
|
['invalid-asin-error']: { asin: string };
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AmazonPageWorker extends Listener<AmazonPageWorkerEvents> {
|
export interface AmazonPageWorker extends Listener<AmazonPageWorkerEvents> {
|
||||||
|
|||||||
@ -379,6 +379,14 @@ export class AmazonSearchPageInjector extends BaseInjector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class AmazonDetailPageInjector extends BaseInjector {
|
export class AmazonDetailPageInjector extends BaseInjector {
|
||||||
|
/**检测是否是错误页面 */
|
||||||
|
public async detectErrorPage(): Promise<boolean> {
|
||||||
|
return this.run(async () => {
|
||||||
|
const errorImage = document.querySelector('img[src*="error/en_US/title"]');
|
||||||
|
return !!errorImage;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**等待页面加载完成 */
|
/**等待页面加载完成 */
|
||||||
public async waitForPageLoaded() {
|
public async waitForPageLoaded() {
|
||||||
return this.run(async () => {
|
return this.run(async () => {
|
||||||
|
|||||||
@ -71,6 +71,15 @@ worker.on('item-extra-info-collect', (ev) => {
|
|||||||
content: `获取商品的额外信息`,
|
content: `获取商品的额外信息`,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
worker.on('invalid-asin-error', (ev) => {
|
||||||
|
timelines.value.push({
|
||||||
|
type: 'warning',
|
||||||
|
title: `跳过无效ASIN`,
|
||||||
|
time: new Date().toLocaleString(),
|
||||||
|
content: `ASIN ${ev.asin} 页面无效,已跳过`,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
const launch = async () => {
|
const launch = async () => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user