diff --git a/public/app.js b/public/app.js index 5c98f0f..931360f 100644 --- a/public/app.js +++ b/public/app.js @@ -321,7 +321,7 @@ async function loadAssets() { const total = Number(result.data?.total ?? result.data?.TotalCount ?? items.length); if (!pageItems.length || items.length >= total || pageItems.length < pageSize) break; } - state.assets = items.filter((item) => assetItemType(item) === "image" && !isGenericAsset(item)); + state.assets = items.filter(isPersonImageAsset); state.genericAssets = items.filter(isGenericAsset); ingestHistoricalCharacters(state.assets); renderCharacterLibrary(); @@ -375,13 +375,23 @@ function assetItemType(item) { return String(item?.type || item?.asset_type || item?.AssetType || "image").toLowerCase(); } +function isPersonImageAsset(item) { + if (assetItemType(item) !== "image") return false; + const purpose = String(item?.purpose || item?.Name || "").trim(); + return /\s*[·・]\s*(正面|侧面|背面)$/.test(purpose); +} + function isGenericAsset(item) { if (assetItemType(item) === "video") return true; - return /^通用图片\s*[·・]/.test(String(item?.purpose || item?.Name || "")); + return assetItemType(item) === "image" && !isPersonImageAsset(item); } function genericAssetName(item, sourceUrl) { - return String(item.purpose || item.Name || "").replace(/^通用图片\s*[·・]\s*/, "") || fileNameFromUrl(sourceUrl) || "未命名通用素材"; + const purpose = String(item.purpose || item.Name || ""); + if (/^数字人形象\s*[·・]\s*参考图\d+$/.test(purpose)) { + return fileNameFromUrl(sourceUrl) || "未命名图片素材"; + } + return purpose.replace(/^通用图片\s*[·・]\s*/, "") || fileNameFromUrl(sourceUrl) || "未命名通用素材"; } function renderGenericAssetLibrary() { diff --git a/public/index.html b/public/index.html index 7f5c901..900ef47 100644 --- a/public/index.html +++ b/public/index.html @@ -351,6 +351,6 @@
- +