diff --git a/frontend/src/components/PostEmbed.tsx b/frontend/src/components/PostEmbed.tsx index a8e7108..a7d23fc 100644 --- a/frontend/src/components/PostEmbed.tsx +++ b/frontend/src/components/PostEmbed.tsx @@ -196,6 +196,39 @@ const PostEmbed: FC = ( return } + case 'bilibili.com': + { + const videoId = url.pathname.match ( + /^\/video\/(BV[a-zA-Z0-9]{10}|av[1-9]\d*)\/?$/)?.[1] + if (!(videoId)) + break + + if (embedAutoLoadMode === 'off') + return externalLink + if (shouldLoadEmbed === false) + return manualLoadControl + + const playerUrl = new URL ('https://player.bilibili.com/player.html') + const parameter = videoId.startsWith ('BV') ? 'bvid' : 'aid' + const identifier = parameter === 'bvid' ? videoId : videoId.slice (2) + playerUrl.searchParams.set (parameter, identifier) + playerUrl.searchParams.set ('autoplay', '1') + + const page = url.searchParams.get ('p') + if (page != null && /^[1-9]\d*$/.test (page)) + playerUrl.searchParams.set ('p', page) + + return ( +