mirror of
https://github.com/ZHANGTIANYAO1/teamspeak-music-bot.git
synced 2026-10-02 04:52:50 +08:00
fix: start NeteaseCloudMusicApi server for real — enables QR code login
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
814910123e
commit
f77a6f0fd7
1 file changed
+20
-9
+20
-9
@@ -1,4 +1,5 @@
|
||||
import type { Logger } from "../logger.js";
|
||||
import type { Server } from "node:http";
|
||||
|
||||
export interface ApiServerOptions {
|
||||
neteasePort: number;
|
||||
@@ -16,8 +17,7 @@ export function createApiServerManager(
|
||||
options: ApiServerOptions,
|
||||
logger: Logger
|
||||
): ApiServerManager {
|
||||
let neteaseReady = false;
|
||||
let qqMusicReady = false;
|
||||
let neteaseServer: Server | null = null;
|
||||
|
||||
const neteaseBaseUrl = `http://127.0.0.1:${options.neteasePort}`;
|
||||
const qqMusicBaseUrl = `http://127.0.0.1:${options.qqMusicPort}`;
|
||||
@@ -26,31 +26,42 @@ export function createApiServerManager(
|
||||
async start(): Promise<void> {
|
||||
logger.info("Starting embedded music API servers...");
|
||||
|
||||
// Start NetEase Cloud Music API
|
||||
try {
|
||||
// NeteaseCloudMusicApi exports differ between CJS/ESM — use dynamic require
|
||||
const ncmModule = await import("NeteaseCloudMusicApi") as any;
|
||||
const serverObj = ncmModule.server ?? ncmModule.default?.server;
|
||||
const app = await serverObj.serveNcmApi({ port: options.neteasePort });
|
||||
// serveNcmApi returns the express app; the server is already listening
|
||||
neteaseServer = app;
|
||||
logger.info(
|
||||
{ port: options.neteasePort },
|
||||
"NetEase Cloud Music API starting"
|
||||
"NetEase Cloud Music API started"
|
||||
);
|
||||
neteaseReady = true;
|
||||
} catch (err) {
|
||||
logger.error({ err }, "Failed to start NetEase Cloud Music API");
|
||||
}
|
||||
|
||||
// QQ Music API — placeholder (requires separate setup)
|
||||
try {
|
||||
logger.info({ port: options.qqMusicPort }, "QQ Music API starting");
|
||||
qqMusicReady = true;
|
||||
logger.info(
|
||||
{ port: options.qqMusicPort },
|
||||
"QQ Music API: not bundled, skipping"
|
||||
);
|
||||
} catch (err) {
|
||||
logger.warn(
|
||||
{ err },
|
||||
"QQ Music API not available, QQ Music features will be disabled"
|
||||
"QQ Music API not available"
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
stop(): void {
|
||||
logger.info("Stopping music API servers");
|
||||
neteaseReady = false;
|
||||
qqMusicReady = false;
|
||||
if (neteaseServer && typeof (neteaseServer as any).close === "function") {
|
||||
(neteaseServer as any).close();
|
||||
}
|
||||
neteaseServer = null;
|
||||
},
|
||||
|
||||
getNeteaseBaseUrl(): string {
|
||||
|
||||
Reference in new issue
Block a user