diff --git a/.gitignore b/.gitignore index bf00eca..e2ad194 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ deploy.sh backup.sh check.sh icons/ +!/packages/frontend/public/icons/ scripts/ Dockerfile Dockerfile.bak diff --git a/packages/backend/src/cloud/cloud-types.service.ts b/packages/backend/src/cloud/cloud-types.service.ts index 3d20553..1d40f94 100755 --- a/packages/backend/src/cloud/cloud-types.service.ts +++ b/packages/backend/src/cloud/cloud-types.service.ts @@ -12,27 +12,23 @@ export interface CloudTypeInfo { * 图标存放在 /app/dist/frontend/icons/,通过 Express static 中间件对外提供 */ /** - * 网盘图标 — 内联 SVG data URI,无需外部文件 +/** + * 网盘图标 — 使用仓库中的 PNG 图标文件 + * 图标存放在 /app/dist/frontend/icons/,通过 Express static 对外提供 */ -function makeSvgIcon(bg: string, letter: string): string { - const c = encodeURIComponent(bg); - const l = encodeURIComponent(letter); - return `data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20rx%3D%224%22%20fill%3D%22${c}%22%2F%3E%3Ctext%20x%3D%2212%22%20y%3D%2217%22%20font-size%3D%2213%22%20font-weight%3D%22bold%22%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2Csans-serif%22%3E${l}%3C%2Ftext%3E%3C%2Fsvg%3E`; -} - const ICONS: Record = { - baidu: makeSvgIcon('#4e6ef2', '百'), - aliyun: makeSvgIcon('#ff6a00', '阿'), - quark: makeSvgIcon('#07c160', '夸'), - '115': makeSvgIcon('#9b59b6', '1'), - tianyi: makeSvgIcon('#00a1d6', '天'), - '123pan': makeSvgIcon('#e74c3c', '1'), - uc: makeSvgIcon('#f39c12', 'U'), - xunlei: makeSvgIcon('#2ecc71', '迅'), - pikpak: makeSvgIcon('#8e44ad', 'P'), - magnet: 'data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20rx%3D%224%22%20fill%3D%22%236366F1%22%2F%3E%3Cpath%20d%3D%22M7%2016l5-5m-5%200l5%205m5-5l-5-5m5%200l-5%205%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20fill%3D%22none%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2211%22%20r%3D%221%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E', - ed2k: 'data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20rx%3D%224%22%20fill%3D%22%238B4513%22%2F%3E%3Ctext%20x%3D%2212%22%20y%3D%2217%22%20font-size%3D%2211%22%20font-weight%3D%22bold%22%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2Csans-serif%22%3EeD%3C%2Ftext%3E%3C%2Fsvg%3E', - others: 'data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20rx%3D%224%22%20fill%3D%22%239CA3AF%22%2F%3E%3Cpath%20d%3D%22M6%2013c0-2.8%202.2-5%205-5a5%205%200%200%201%204.5%202.7A4%204%200%200%201%2020%2014a4%204%200%200%201-3%203.9h-8A4%204%200%200%201%206%2013z%22%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-width%3D%221.5%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E', + baidu: '/icons/baidu.png', + aliyun: '/icons/aliyun.png', + quark: '/icons/quark.png', + '115': '/icons/115.png', + tianyi: '/icons/tianyi.png', + '123pan': '/icons/123pan.png', + uc: '/icons/uc.png', + xunlei: '/icons/xunlei.png', + pikpak: '/icons/pikpak.png', + magnet: '/icons/magnet.png', + ed2k: '/icons/ed2k.png', + others: '/icons/others.png', }; const ALL_CLOUD_TYPES: { type: string; label: string; icon: string }[] = [ diff --git a/packages/frontend/public/icons/115.png b/packages/frontend/public/icons/115.png new file mode 100644 index 0000000..e3148cd Binary files /dev/null and b/packages/frontend/public/icons/115.png differ diff --git a/packages/frontend/public/icons/123pan.png b/packages/frontend/public/icons/123pan.png new file mode 100644 index 0000000..c936c8e Binary files /dev/null and b/packages/frontend/public/icons/123pan.png differ diff --git a/packages/frontend/public/icons/aliyun.png b/packages/frontend/public/icons/aliyun.png new file mode 100644 index 0000000..77d49a8 Binary files /dev/null and b/packages/frontend/public/icons/aliyun.png differ diff --git a/packages/frontend/public/icons/baidu.png b/packages/frontend/public/icons/baidu.png new file mode 100644 index 0000000..1053bf1 Binary files /dev/null and b/packages/frontend/public/icons/baidu.png differ diff --git a/packages/frontend/public/icons/ed2k.png b/packages/frontend/public/icons/ed2k.png new file mode 100644 index 0000000..bba27cd Binary files /dev/null and b/packages/frontend/public/icons/ed2k.png differ diff --git a/packages/frontend/public/icons/magnet.png b/packages/frontend/public/icons/magnet.png new file mode 100644 index 0000000..7eee508 Binary files /dev/null and b/packages/frontend/public/icons/magnet.png differ diff --git a/packages/frontend/public/icons/others.png b/packages/frontend/public/icons/others.png new file mode 100644 index 0000000..cf48e91 Binary files /dev/null and b/packages/frontend/public/icons/others.png differ diff --git a/packages/frontend/public/icons/pikpak.png b/packages/frontend/public/icons/pikpak.png new file mode 100644 index 0000000..c833bd5 Binary files /dev/null and b/packages/frontend/public/icons/pikpak.png differ diff --git a/packages/frontend/public/icons/quark.png b/packages/frontend/public/icons/quark.png new file mode 100644 index 0000000..def9d10 Binary files /dev/null and b/packages/frontend/public/icons/quark.png differ diff --git a/packages/frontend/public/icons/tianyi.png b/packages/frontend/public/icons/tianyi.png new file mode 100644 index 0000000..9c01dd2 Binary files /dev/null and b/packages/frontend/public/icons/tianyi.png differ diff --git a/packages/frontend/public/icons/uc.png b/packages/frontend/public/icons/uc.png new file mode 100644 index 0000000..65f3773 Binary files /dev/null and b/packages/frontend/public/icons/uc.png differ diff --git a/packages/frontend/public/icons/xunlei.png b/packages/frontend/public/icons/xunlei.png new file mode 100644 index 0000000..c6ca7d3 Binary files /dev/null and b/packages/frontend/public/icons/xunlei.png differ diff --git a/packages/frontend/src/types/index.ts b/packages/frontend/src/types/index.ts index e1b5239..987bc97 100755 --- a/packages/frontend/src/types/index.ts +++ b/packages/frontend/src/types/index.ts @@ -52,31 +52,23 @@ export const CLOUD_COLORS: Record = { /** * 网盘图标映射 — 全部使用内联 SVG data URI,无需外部文件 - * 每个网盘类型使用其品牌色圆角底 + 首字母/中文标识 +/** + * 网盘图标映射 — 使用仓库中的 PNG 图标文件 + * 图标存储在 public/icons/ 目录下,Vite 构建时自动打包 */ -function makeSvgIcon(bg: string, letter: string): string { - const c = encodeURIComponent(bg) - const l = encodeURIComponent(letter) - return `data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20rx%3D%224%22%20fill%3D%22${c}%22%2F%3E%3Ctext%20x%3D%2212%22%20y%3D%2217%22%20font-size%3D%2213%22%20font-weight%3D%22bold%22%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2Csans-serif%22%3E${l}%3C%2Ftext%3E%3C%2Fsvg%3E` -} -const ICON_SVGS: Record = { - magnet: 'data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20rx%3D%224%22%20fill%3D%22%236366F1%22%2F%3E%3Cpath%20d%3D%22M7%2016l5-5m-5%200l5%205m5-5l-5-5m5%200l-5%205%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20fill%3D%22none%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2211%22%20r%3D%221%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E', - ed2k: 'data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20rx%3D%224%22%20fill%3D%22%238B4513%22%2F%3E%3Ctext%20x%3D%2212%22%20y%3D%2217%22%20font-size%3D%2211%22%20font-weight%3D%22bold%22%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%2Csans-serif%22%3EeD%3C%2Ftext%3E%3C%2Fsvg%3E', - others: 'data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%2224%22%20height%3D%2224%22%20rx%3D%224%22%20fill%3D%22%239CA3AF%22%2F%3E%3Cpath%20d%3D%22M6%2013c0-2.8%202.2-5%205-5a5%205%200%200%201%204.5%202.7A4%204%200%200%201%2020%2014a4%204%200%200%201-3%203.9h-8A4%204%200%200%201%206%2013z%22%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-width%3D%221.5%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E', -} export const CLOUD_ICONS: Record = { - baidu: makeSvgIcon('#4e6ef2', '百'), - aliyun: makeSvgIcon('#ff6a00', '阿'), - quark: makeSvgIcon('#07c160', '夸'), - '115': makeSvgIcon('#9b59b6', '1'), - tianyi: makeSvgIcon('#00a1d6', '天'), - '123pan': makeSvgIcon('#e74c3c', '1'), - uc: makeSvgIcon('#f39c12', 'U'), - xunlei: makeSvgIcon('#2ecc71', '迅'), - pikpak: makeSvgIcon('#8e44ad', 'P'), - magnet: ICON_SVGS.magnet, - ed2k: ICON_SVGS.ed2k, - others: ICON_SVGS.others, + baidu: '/icons/baidu.png', + aliyun: '/icons/aliyun.png', + quark: '/icons/quark.png', + '115': '/icons/115.png', + tianyi: '/icons/tianyi.png', + '123pan': '/icons/123pan.png', + uc: '/icons/uc.png', + xunlei: '/icons/xunlei.png', + pikpak: '/icons/pikpak.png', + magnet: '/icons/magnet.png', + ed2k: '/icons/ed2k.png', + others: '/icons/others.png', } /* ===== 视频解析类型 ===== */