fix: fix can`t get imgurls on the page

This commit is contained in:
PetrichorFun 2026-03-04 18:54:08 +08:00
parent 2c503a9ab6
commit 3befed6d76
4 changed files with 46 additions and 5 deletions

View File

@ -1,6 +1,6 @@
{
"name": "azon-seeker",
"displayName": "Azon Seeker v0.7.1.7-beta",
"displayName": "Azon Seeker v0.7.1.8-beta",
"version": "0.7.2",
"private": true,
"description": "Starter modify by honestfox101 and PetrichorFun",

View File

@ -16,6 +16,7 @@ export const isFirefox = navigator.userAgent.includes('Firefox');
// export const remoteHost = __DEV__ ? '127.0.0.1:8000' : '47.251.4.191:8000';
// export const remoteHost = __DEV__ ? '127.0.0.1:18000' : 'vm8nc3zr-18000.usw2.devtunnels.ms';
export const remoteHost = __DEV__ ? 'ogsm-dev.rekeymed.com:8888' : 'amzplugin.rekeymed.com';
// export const remoteHost = __DEV__ ? 'ogsm-dev.rekeymed.com:8888' : 'amzplugin.rekeymed.com';
export const remoteHost = __DEV__ ? '127.0.0.1:18000' : 'amzplugin.rekeymed.com';
// export const remoteHost = __DEV__ ? '127.0.0.1:18000' : 'amzplugin.rekeymed.com';
// export const remoteHost = '47.251.4.191:8000';

View File

@ -22,7 +22,16 @@ const httpClient = createAlova({
method.config.headers['x-public-key'] = publicKeyBase64Data;
},
responded: {
onSuccess: (response) => response.json(),
// 使用 text() 而不是 json() 来避免 Response body 被重复读取的问题
// 参考: https://github.com/alovajs/alova/issues/XXX
onSuccess: async (response) => {
const text = await response.text();
// 检查空响应
if (!text || text.trim() === '') {
return null;
}
return JSON.parse(text);
},
onError: (response: Response) => {
const message = useMessage();
message.error(`HTTP Error: ${response.status}`);

View File

@ -490,9 +490,12 @@ export class AmazonDetailPageInjector extends BaseInjector {
public async getImageUrls() {
return this.run(async () => {
const overlay = document.querySelector<HTMLElement>('.overlayRestOfImages');
if (overlay) {
// document.querySelector<HTMLElement>('#canvasCaption > a')?.click();
if (document.querySelector<HTMLElement>('#ivThumbs')!.getClientRects().length === 0) {
overlay.click();
document.querySelector<HTMLElement>('#canvasCaption > a')?.click();
// overlay.click();
await new Promise((resolve) => setTimeout(resolve, 1000));
}
}
@ -512,7 +515,35 @@ export class AmazonDetailPageInjector extends BaseInjector {
/(?<="large":")https:\/\/m.media-amazon.com\/images\/I\/[\w\d\.\-+]+(?=")/g,
);
}
document.querySelector<HTMLElement>('header > [data-action="a-popover-close"]')?.click();
// 替换原来的 forEach (第524-537行)
if (urls.length === 0) {
const divs: NodeListOf<HTMLDivElement> =
document.querySelectorAll('.ivRow div.ivThumbImage');
await new Promise((resolve) => setTimeout(resolve, 500 + ~~(500 * Math.random())));
for (const div of divs) {
// click div com
div.click();
// wait for image to load
await new Promise((resolve) => setTimeout(resolve, 100 + ~~(500 * Math.random())));
// get img dom
const imgDom = document.querySelector('#ivLargeImage > img');
// get url from img dom src attribute
if (imgDom && 'src' in imgDom) {
urls.push(imgDom.src as string);
}
}
}
// document.querySelector<HTMLElement>('header > [data-action="a-popover-close"]')?.click();
// close the image overlay if exists
document
.querySelector<HTMLElement>('#a-popover-4 > div > div:nth-child(1) > button')
?.click();
return urls;
});
}