feat: add BiliBili audio source integration

Implement BiliBiliProvider for video-as-audio playback using direct
BiliBili API calls (search, video info, DASH audio URL extraction).
Add QR code login support and cookie persistence. Update FFmpeg to
send Referer header for BiliBili CDN URLs. Extend platform union type
to "netease" | "qq" | "bilibili" across all interfaces. Add -b flag
for chat commands and B站 badge in web UI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
saopig1andClaude Opus 4.6 committed 2026-03-30 15:14:27 +08:00
1 parent 7d329a0db1
commit a6881403ef
15 files changed
+425 -36

No files matched your search

+4 -4
View File
@@ -5,7 +5,7 @@ export interface Song {
album: string;
duration: number; // seconds
coverUrl: string;
platform: "netease" | "qq";
platform: "netease" | "qq" | "bilibili";
}
export interface SongWithUrl extends Song {
@@ -17,7 +17,7 @@ export interface Playlist {
name: string;
coverUrl: string;
songCount: number;
platform: "netease" | "qq";
platform: "netease" | "qq" | "bilibili";
}
export interface Album {
@@ -26,7 +26,7 @@ export interface Album {
artist: string;
coverUrl: string;
songCount: number;
platform: "netease" | "qq";
platform: "netease" | "qq" | "bilibili";
}
export interface LyricLine {
@@ -54,7 +54,7 @@ export interface AuthStatus {
}
export interface MusicProvider {
readonly platform: "netease" | "qq";
readonly platform: "netease" | "qq" | "bilibili";
search(query: string, limit?: number): Promise<SearchResult>;
getSongUrl(songId: string, quality?: string): Promise<string | null>;