mirror of
https://github.com/ZHANGTIANYAO1/teamspeak-music-bot.git
synced 2026-10-01 20:42:50 +08:00
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:
1 parent
9a9f68c446
commit
e1171dbcfe
3 files changed
+13
-4
No files matched your search
+3
-1
@@ -12,7 +12,8 @@ export function createAuthRouter(
|
|||||||
bilibiliProvider: MusicProvider,
|
bilibiliProvider: MusicProvider,
|
||||||
logger: Logger,
|
logger: Logger,
|
||||||
cookieStore?: CookieStore,
|
cookieStore?: CookieStore,
|
||||||
kugouProvider?: MusicProvider
|
kugouProvider?: MusicProvider,
|
||||||
|
spotifyProvider?: MusicProvider
|
||||||
): Router {
|
): Router {
|
||||||
const router = Router();
|
const router = Router();
|
||||||
// YouTube is auth-less; we only use this instance so /auth/status can
|
// 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 === "bilibili") return bilibiliProvider;
|
||||||
if (platform === "youtube") return youtubeProvider;
|
if (platform === "youtube") return youtubeProvider;
|
||||||
if (platform === "kugou" && kugouProvider) return kugouProvider;
|
if (platform === "kugou" && kugouProvider) return kugouProvider;
|
||||||
|
if (platform === "spotify" && spotifyProvider) return spotifyProvider;
|
||||||
return platform === "qq" ? qqProvider : neteaseProvider;
|
return platform === "qq" ? qqProvider : neteaseProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ export function createMusicRouter(
|
|||||||
logger: Logger,
|
logger: Logger,
|
||||||
localProvider?: MusicProvider,
|
localProvider?: MusicProvider,
|
||||||
config?: BotConfig,
|
config?: BotConfig,
|
||||||
kugouProvider?: MusicProvider
|
kugouProvider?: MusicProvider,
|
||||||
|
spotifyProvider?: MusicProvider
|
||||||
): Router {
|
): Router {
|
||||||
const router = Router();
|
const router = Router();
|
||||||
const youtubeProvider: MusicProvider = new YouTubeProvider();
|
const youtubeProvider: MusicProvider = new YouTubeProvider();
|
||||||
@@ -28,6 +29,7 @@ export function createMusicRouter(
|
|||||||
if (platform === "youtube") return youtubeProvider;
|
if (platform === "youtube") return youtubeProvider;
|
||||||
if (platform === "local" && localProvider) return localProvider;
|
if (platform === "local" && localProvider) return localProvider;
|
||||||
if (platform === "kugou" && kugouProvider) return kugouProvider;
|
if (platform === "kugou" && kugouProvider) return kugouProvider;
|
||||||
|
if (platform === "spotify" && spotifyProvider) return spotifyProvider;
|
||||||
return platform === "qq" ? qqProvider : neteaseProvider;
|
return platform === "qq" ? qqProvider : neteaseProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,6 +293,7 @@ export function createMusicRouter(
|
|||||||
bilibili: bilibiliProvider.getQuality(),
|
bilibili: bilibiliProvider.getQuality(),
|
||||||
local: localProvider?.getQuality() ?? "original",
|
local: localProvider?.getQuality() ?? "original",
|
||||||
kugou: kugouProvider?.getQuality() ?? "128",
|
kugou: kugouProvider?.getQuality() ?? "128",
|
||||||
|
spotify: spotifyProvider?.getQuality() ?? "320",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -313,6 +316,9 @@ export function createMusicRouter(
|
|||||||
if ((!platform || platform === "kugou") && kugouProvider) {
|
if ((!platform || platform === "kugou") && kugouProvider) {
|
||||||
kugouProvider.setQuality(quality);
|
kugouProvider.setQuality(quality);
|
||||||
}
|
}
|
||||||
|
if ((!platform || platform === "spotify") && spotifyProvider) {
|
||||||
|
spotifyProvider.setQuality(quality);
|
||||||
|
}
|
||||||
logger.info({ quality, platform }, "Audio quality changed");
|
logger.info({ quality, platform }, "Audio quality changed");
|
||||||
res.json({ success: true, quality });
|
res.json({ success: true, quality });
|
||||||
});
|
});
|
||||||
|
|||||||
+3
-2
@@ -40,6 +40,7 @@ export interface WebServerOptions {
|
|||||||
bilibiliProvider: MusicProvider;
|
bilibiliProvider: MusicProvider;
|
||||||
localProvider: MusicProvider;
|
localProvider: MusicProvider;
|
||||||
kugouProvider: MusicProvider;
|
kugouProvider: MusicProvider;
|
||||||
|
spotifyProvider: MusicProvider;
|
||||||
database: BotDatabase;
|
database: BotDatabase;
|
||||||
config: BotConfig;
|
config: BotConfig;
|
||||||
configPath: string;
|
configPath: string;
|
||||||
@@ -125,7 +126,7 @@ export function createWebServer(options: WebServerOptions): WebServer {
|
|||||||
);
|
);
|
||||||
app.use(
|
app.use(
|
||||||
"/api/music",
|
"/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(
|
app.use("/api/player", createPlayerRouter(
|
||||||
options.botManager, logger, options.database,
|
options.botManager, logger, options.database,
|
||||||
@@ -133,7 +134,7 @@ export function createWebServer(options: WebServerOptions): WebServer {
|
|||||||
));
|
));
|
||||||
app.use(
|
app.use(
|
||||||
"/api/auth",
|
"/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));
|
app.use("/api/favorites", requireNotGuest, createFavoritesRouter(options.database, logger));
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user