This commit is contained in:
949036910@qq.com
2026-06-01 00:03:56 +08:00
parent 6e1f34ac62
commit e827e9425e
3 changed files with 21 additions and 3 deletions

View File

@@ -1,3 +1,5 @@
import { publicAssetUrl } from "../utils/publicAsset.js";
const STORAGE_KEY = "aiclient_custom_subtitle_templates"; const STORAGE_KEY = "aiclient_custom_subtitle_templates";
let systemTemplatesCache = null; let systemTemplatesCache = null;
@@ -18,7 +20,7 @@ let systemTemplatesCache = null;
*/ */
export async function loadSystemSubtitleTemplates() { export async function loadSystemSubtitleTemplates() {
if (systemTemplatesCache) return systemTemplatesCache; if (systemTemplatesCache) return systemTemplatesCache;
const res = await fetch("/subtitle-templates/system-templates.json"); const res = await fetch(publicAssetUrl("subtitle-templates/system-templates.json"));
if (!res.ok) throw new Error("无法加载系统字幕模板"); if (!res.ok) throw new Error("无法加载系统字幕模板");
const data = await res.json(); const data = await res.json();
systemTemplatesCache = (data.subtitleTemplates || []).map((t) => ({ systemTemplatesCache = (data.subtitleTemplates || []).map((t) => ({

11
src/utils/publicAsset.js Normal file
View File

@@ -0,0 +1,11 @@
/**
* 解析 public/ 目录下的静态资源 URL。
* 开发环境 base 为 `/`,发行部署 base 为 `/images/newyaoyan/`(见 vite.config.js
*
* @param {string} path - 相对 public 的路径,如 subtitle-templates/system-templates.json
*/
export function publicAssetUrl(path) {
const base = import.meta.env.BASE_URL || "/";
const normalized = String(path || "").replace(/^\/+/, "");
return `${base}${normalized}`;
}

View File

@@ -1,5 +1,7 @@
/** 字幕模板预览样式(对齐 Electron SubtitlePreviewCard */ /** 字幕模板预览样式(对齐 Electron SubtitlePreviewCard */
import { publicAssetUrl } from "./publicAsset.js";
const ACCENT_KEYWORDS = [ const ACCENT_KEYWORDS = [
"自己", "自己",
"节奏", "节奏",
@@ -240,11 +242,14 @@ export function resolveSubtitlePreviewImage(path) {
const normalized = path.replace(/\\/g, "/"); const normalized = path.replace(/\\/g, "/");
if (normalized.includes("subtitle-preview-")) { if (normalized.includes("subtitle-preview-")) {
const name = normalized.split("/").pop(); const name = normalized.split("/").pop();
return `/subtitle-templates/previews/${name}`; return publicAssetUrl(`subtitle-templates/previews/${name}`);
} }
if (normalized.startsWith("extra/common/cover-templates/")) { if (normalized.startsWith("extra/common/cover-templates/")) {
const name = normalized.split("/").pop(); const name = normalized.split("/").pop();
return `/subtitle-templates/previews/${name}`; return publicAssetUrl(`subtitle-templates/previews/${name}`);
}
if (normalized.startsWith("subtitle-templates/")) {
return publicAssetUrl(normalized);
} }
return normalized; return normalized;
} }