fix: 修复哔哩哔哩平台封面图无法显示的问题

- 后端 Bilibili 适配器添加 URL 规范化,处理协议相对路径和 http 协议
- 前端 Image 组件添加 referrerPolicy="no-referrer" 绕过 CDN 防盗链

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
wxs
2026-03-03 15:55:06 +08:00
co-authored by Claude Opus 4.6
parent 6cc703ada2
commit e933c71b3d
3 changed files with 13 additions and 2 deletions
@@ -1,6 +1,13 @@
import type { ContentItem, PlatformAdapter } from "@muse/shared";
import { tikhubFetch } from "../tikhub";
/** Ensure Bilibili URLs use https:// (API may return protocol-relative "//..." or http) */
function normalizeUrl(url: string): string {
if (url.startsWith("//")) return `https:${url}`;
if (url.startsWith("http://")) return url.replace("http://", "https://");
return url;
}
export class BilibiliAdapter implements PlatformAdapter {
async fetchTrending(count: number): Promise<ContentItem[]> {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -44,10 +51,10 @@ export class BilibiliAdapter implements PlatformAdapter {
return {
id: String(aid || bvid),
title: raw?.title || "无标题",
cover_url: raw?.pic || undefined,
cover_url: raw?.pic ? normalizeUrl(raw.pic) : undefined,
video_url: undefined,
author_name: owner?.name || raw?.author || "未知作者",
author_avatar: owner?.face || undefined,
author_avatar: owner?.face ? normalizeUrl(owner.face) : undefined,
play_count: stat?.view ?? undefined,
like_count: stat?.like ?? undefined,
collect_count: stat?.favorite ?? undefined,