feat(spotify): expose provider through web music/auth routers

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
saopig1andClaude Opus 4.8 committed 2026-07-02 00:19:22 +08:00
1 parent 9a9f68c446
commit e1171dbcfe
3 files changed
+13 -4

No files matched your search

+3 -1
View File
@@ -12,7 +12,8 @@ export function createAuthRouter(
bilibiliProvider: MusicProvider,
logger: Logger,
cookieStore?: CookieStore,
kugouProvider?: MusicProvider
kugouProvider?: MusicProvider,
spotifyProvider?: MusicProvider
): Router {
const router = Router();
// YouTube is auth-less; we only use this instance so /auth/status can
@@ -23,6 +24,7 @@ export function createAuthRouter(
if (platform === "bilibili") return bilibiliProvider;
if (platform === "youtube") return youtubeProvider;
if (platform === "kugou" && kugouProvider) return kugouProvider;
if (platform === "spotify" && spotifyProvider) return spotifyProvider;
return platform === "qq" ? qqProvider : neteaseProvider;
}
+7 -1
View File
@@ -14,7 +14,8 @@ export function createMusicRouter(
logger: Logger,
localProvider?: MusicProvider,
config?: BotConfig,
kugouProvider?: MusicProvider
kugouProvider?: MusicProvider,
spotifyProvider?: MusicProvider
): Router {
const router = Router();
const youtubeProvider: MusicProvider = new YouTubeProvider();
@@ -28,6 +29,7 @@ export function createMusicRouter(
if (platform === "youtube") return youtubeProvider;
if (platform === "local" && localProvider) return localProvider;
if (platform === "kugou" && kugouProvider) return kugouProvider;
if (platform === "spotify" && spotifyProvider) return spotifyProvider;
return platform === "qq" ? qqProvider : neteaseProvider;
}
@@ -291,6 +293,7 @@ export function createMusicRouter(
bilibili: bilibiliProvider.getQuality(),
local: localProvider?.getQuality() ?? "original",
kugou: kugouProvider?.getQuality() ?? "128",
spotify: spotifyProvider?.getQuality() ?? "320",
});
});
@@ -313,6 +316,9 @@ export function createMusicRouter(
if ((!platform || platform === "kugou") && kugouProvider) {
kugouProvider.setQuality(quality);
}
if ((!platform || platform === "spotify") && spotifyProvider) {
spotifyProvider.setQuality(quality);
}
logger.info({ quality, platform }, "Audio quality changed");
res.json({ success: true, quality });
});
+3 -2
View File
@@ -40,6 +40,7 @@ export interface WebServerOptions {
bilibiliProvider: MusicProvider;
localProvider: MusicProvider;
kugouProvider: MusicProvider;
spotifyProvider: MusicProvider;
database: BotDatabase;
config: BotConfig;
configPath: string;
@@ -125,7 +126,7 @@ export function createWebServer(options: WebServerOptions): WebServer {
);
app.use(
"/api/music",
createMusicRouter(options.neteaseProvider, options.qqProvider, options.bilibiliProvider, logger, options.localProvider, options.config, options.kugouProvider)
createMusicRouter(options.neteaseProvider, options.qqProvider, options.bilibiliProvider, logger, options.localProvider, options.config, options.kugouProvider, options.spotifyProvider)
);
app.use("/api/player", createPlayerRouter(
options.botManager, logger, options.database,
@@ -133,7 +134,7 @@ export function createWebServer(options: WebServerOptions): WebServer {
));
app.use(
"/api/auth",
createAuthRouter(options.neteaseProvider, options.qqProvider, options.bilibiliProvider, logger, options.cookieStore, options.kugouProvider)
createAuthRouter(options.neteaseProvider, options.qqProvider, options.bilibiliProvider, logger, options.cookieStore, options.kugouProvider, options.spotifyProvider)
);
app.use("/api/favorites", requireNotGuest, createFavoritesRouter(options.database, logger));