|
@@ -14,7 +14,7 @@ async function processAdobeStock(imageId, html, finalUrl) {
|
|
|
// 1. 清理 URL 中的地区代码 (如 /hk/)
|
|
// 1. 清理 URL 中的地区代码 (如 /hk/)
|
|
|
const cleanUrl = finalUrl.replace(
|
|
const cleanUrl = finalUrl.replace(
|
|
|
/stock\.adobe\.com\/[a-z]{2}\//i,
|
|
/stock\.adobe\.com\/[a-z]{2}\//i,
|
|
|
- "stock.adobe.com/"
|
|
|
|
|
|
|
+ "stock.adobe.com/",
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 2. 提取 Keywords
|
|
// 2. 提取 Keywords
|
|
@@ -89,7 +89,7 @@ async function parseImages(imageDir) {
|
|
|
height: dimensions.height,
|
|
height: dimensions.height,
|
|
|
});
|
|
});
|
|
|
console.log(
|
|
console.log(
|
|
|
- `✅ 成功 (静态构造): ${imageId} | URL: https://www.shutterstock.com/image-photo/${imageId}`
|
|
|
|
|
|
|
+ `✅ 成功 (静态构造): ${imageId} | URL: https://www.shutterstock.com/image-photo/${imageId}`,
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 注意:Shutterstock 无需请求,不需要 sleep
|
|
// 注意:Shutterstock 无需请求,不需要 sleep
|
|
@@ -99,19 +99,26 @@ async function parseImages(imageDir) {
|
|
|
if (source === "AdobeStock") {
|
|
if (source === "AdobeStock") {
|
|
|
// AdobeStock 依然需要请求网络以获取标签
|
|
// AdobeStock 依然需要请求网络以获取标签
|
|
|
const targetUrl = `https://stock.adobe.com/${imageId}`;
|
|
const targetUrl = `https://stock.adobe.com/${imageId}`;
|
|
|
- const response = await axios.get(targetUrl, {
|
|
|
|
|
- headers: {
|
|
|
|
|
- "User-Agent":
|
|
|
|
|
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|
|
|
|
- },
|
|
|
|
|
- timeout: 10000,
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- const meta = await processAdobeStock(
|
|
|
|
|
- imageId,
|
|
|
|
|
- response.data,
|
|
|
|
|
- response.request.res.responseUrl || targetUrl
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ let meta = { from: targetUrl, tags: [] };
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ const response = await axios.get(targetUrl, {
|
|
|
|
|
+ headers: {
|
|
|
|
|
+ "User-Agent":
|
|
|
|
|
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|
|
|
|
+ },
|
|
|
|
|
+ timeout: 10000,
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ meta = await processAdobeStock(
|
|
|
|
|
+ imageId,
|
|
|
|
|
+ response.data,
|
|
|
|
|
+ response.request.res.responseUrl || targetUrl,
|
|
|
|
|
+ );
|
|
|
|
|
+ console.log(`✅ 成功: ${imageId} | Tags: [${meta.tags.join(", ")}]`);
|
|
|
|
|
+ } catch (parseErr) {
|
|
|
|
|
+ console.warn(`⚠️ Adobe 解析失败,使用默认值: ${imageId} | ${parseErr.message}`);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
results.push({
|
|
results.push({
|
|
|
id: imageId,
|
|
id: imageId,
|
|
@@ -124,10 +131,8 @@ async function parseImages(imageDir) {
|
|
|
height: dimensions.height,
|
|
height: dimensions.height,
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- console.log(`✅ 成功: ${imageId} | Tags: [${meta.tags.join(", ")}]`);
|
|
|
|
|
-
|
|
|
|
|
// Adobe 请求后执行休眠,防止请求过快
|
|
// Adobe 请求后执行休眠,防止请求过快
|
|
|
- await sleep(1500);
|
|
|
|
|
|
|
+ await sleep(2000);
|
|
|
}
|
|
}
|
|
|
} catch (err) {
|
|
} catch (err) {
|
|
|
console.error(`❌ 处理 ${filename} 失败: ${err.message}`);
|
|
console.error(`❌ 处理 ${filename} 失败: ${err.message}`);
|