From e9454d095c92de84fe8d61b2ff4b045d536f4475 Mon Sep 17 00:00:00 2001 From: jonathang4 Date: Wed, 5 Nov 2025 19:20:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=B8=8E=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E7=BB=93=E6=9E=9C=E5=85=BC=E5=AE=B9=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/controllers/images.ts | 40 ++++++++++++++++--- src/api/controllers/video.ts | 12 ++++-- src/lib/services/TaskPollingService.ts | 54 +++++++++++++++++++++++--- 3 files changed, 91 insertions(+), 15 deletions(-) diff --git a/src/api/controllers/images.ts b/src/api/controllers/images.ts index e96b9c5..41d6106 100644 --- a/src/api/controllers/images.ts +++ b/src/api/controllers/images.ts @@ -257,9 +257,23 @@ export async function generateImages( } } const imageUrls = item_list.map((item) => { - if(!item?.image?.large_images?.[0]?.image_url) - return item?.common_attr?.cover_url || null; - return item.image.large_images[0].image_url; + let res_url = null; + let idata = item?.image; + let idata2 = item?.image?.large_images; + if(!idata2 || !idata2.length){ + for(let key in idata){ + if(idata[key] && idata[key].length && idata[key].length > 0){ + if(idata[key][0].image_url){ + res_url = idata[key][0].image_url; + break; + } + } + } + }else{ + res_url = idata2[0].image_url; + } + if(res_url) return res_url; + return item?.common_attr?.cover_url || null; }); const validImageUrls = imageUrls.filter(url => url !== null); if (validImageUrls.length > 0) { @@ -503,9 +517,23 @@ export async function uploadImages( throw new APIException(EX.API_IMAGE_GENERATION_FAILED); } return item_list.map((item) => { - if(!item?.image?.large_images?.[0]?.image_url) - return item?.common_attr?.cover_url || null; - return item.image.large_images[0].image_url; + let res_url = null; + let idata = item?.image; + let idata2 = item?.image?.large_images; + if(!idata2 || !idata2.length){ + for(let key in idata){ + if(idata[key] && idata[key].length && idata[key].length > 0){ + if(idata[key][0].image_url){ + res_url = idata[key][0].image_url; + break; + } + } + } + }else{ + res_url = idata2[0].image_url; + } + if(res_url) return res_url; + return item?.common_attr?.cover_url || null; }); } diff --git a/src/api/controllers/video.ts b/src/api/controllers/video.ts index b60bfcd..fdffc56 100644 --- a/src/api/controllers/video.ts +++ b/src/api/controllers/video.ts @@ -238,9 +238,15 @@ export async function generateVideo( // and item_list is populated. // A more robust check might be needed depending on actual API behavior for success. const videoUrls = item_list.map((item) => { - if(!item?.video?.transcoded_video?.origin?.video_url) - return null; - return item.video.transcoded_video.origin.video_url; + let res_url = null; + let vdata = item?.video?.transcoded_video||{}; + for(let key in vdata){ + if(vdata[key] && vdata[key].video_url){ + res_url = vdata[key].video_url; + break; + } + } + return res_url || null; }); // Filter out nulls and check if any valid URL was generated diff --git a/src/lib/services/TaskPollingService.ts b/src/lib/services/TaskPollingService.ts index a12a3de..e5f8f06 100644 --- a/src/lib/services/TaskPollingService.ts +++ b/src/lib/services/TaskPollingService.ts @@ -260,14 +260,35 @@ export class TaskPollingService { if (task.task_type === 'image') { originalUrls = item_list.map((item) => { - if (item?.image?.large_images?.[0]?.image_url) { - return item.image.large_images[0].image_url; + let res_url = null; + let idata = item?.image; + let idata2 = item?.image?.large_images; + if(!idata2 || !idata2.length){ + for(let key in idata){ + if(idata[key] && idata[key].length && idata[key].length > 0){ + if(idata[key][0].image_url){ + res_url = idata[key][0].image_url; + break; + } + } + } + }else{ + res_url = idata2[0].image_url; } + if(res_url) return res_url; return item?.common_attr?.cover_url || null; }).filter(url => url !== null); } else { originalUrls = item_list.map((item) => { - return item?.video?.transcoded_video?.origin?.video_url || null; + let res_url = null; + let vdata = item?.video?.transcoded_video||{}; + for(let key in vdata){ + if(vdata[key] && vdata[key].video_url){ + res_url = vdata[key].video_url; + break; + } + } + return res_url || null; }).filter(url => url !== null); } @@ -415,14 +436,35 @@ export class TaskPollingService { if (task.task_type === 'image') { originalUrls = itemList.map((item) => { - if (item?.image?.large_images?.[0]?.image_url) { - return item.image.large_images[0].image_url; + let res_url = null; + let idata = item?.image; + let idata2 = item?.image?.large_images; + if(!idata2 || !idata2.length){ + for(let key in idata){ + if(idata[key] && idata[key].length && idata[key].length > 0){ + if(idata[key][0].image_url){ + res_url = idata[key][0].image_url; + break; + } + } + } + }else{ + res_url = idata2[0].image_url; } + if(res_url) return res_url; return item?.common_attr?.cover_url || null; }).filter(url => url !== null); } else { originalUrls = itemList.map((item) => { - return item?.video?.transcoded_video?.origin?.video_url || null; + let res_url = null; + let vdata = item?.video?.transcoded_video||{}; + for(let key in vdata){ + if(vdata[key] && vdata[key].video_url){ + res_url = vdata[key].video_url; + break; + } + } + return res_url || null; }).filter(url => url !== null); }