mirror of
https://github.com/ZHANGTIANYAO1/teamspeak-music-bot.git
synced 2026-10-01 20:42: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 { Logger } from "../logger.js";
|
||||||
|
import type { Server } from "node:http";
|
||||||
|
|
||||||
export interface ApiServerOptions {
|
export interface ApiServerOptions {
|
||||||
neteasePort: number;
|
neteasePort: number;
|
||||||
@@ -16,8 +17,7 @@ export function createApiServerManager(
|
|||||||
options: ApiServerOptions,
|
options: ApiServerOptions,
|
||||||
logger: Logger
|
logger: Logger
|
||||||
): ApiServerManager {
|
): ApiServerManager {
|
||||||
let neteaseReady = false;
|
let neteaseServer: Server | null = null;
|
||||||
let qqMusicReady = false;
|
|
||||||
|
|
||||||
const neteaseBaseUrl = `http://127.0.0.1:${options.neteasePort}`;
|
const neteaseBaseUrl = `http://127.0.0.1:${options.neteasePort}`;
|
||||||
const qqMusicBaseUrl = `http://127.0.0.1:${options.qqMusicPort}`;
|
const qqMusicBaseUrl = `http://127.0.0.1:${options.qqMusicPort}`;
|
||||||
@@ -26,31 +26,42 @@ export function createApiServerManager(
|
|||||||
async start(): Promise<void> {
|
async start(): Promise<void> {
|
||||||
logger.info("Starting embedded music API servers...");
|
logger.info("Starting embedded music API servers...");
|
||||||
|
|
||||||
|
// Start NetEase Cloud Music API
|
||||||
try {
|
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(
|
logger.info(
|
||||||
{ port: options.neteasePort },
|
{ port: options.neteasePort },
|
||||||
"NetEase Cloud Music API starting"
|
"NetEase Cloud Music API started"
|
||||||
);
|
);
|
||||||
neteaseReady = true;
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error({ err }, "Failed to start NetEase Cloud Music API");
|
logger.error({ err }, "Failed to start NetEase Cloud Music API");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// QQ Music API — placeholder (requires separate setup)
|
||||||
try {
|
try {
|
||||||
logger.info({ port: options.qqMusicPort }, "QQ Music API starting");
|
logger.info(
|
||||||
qqMusicReady = true;
|
{ port: options.qqMusicPort },
|
||||||
|
"QQ Music API: not bundled, skipping"
|
||||||
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
{ err },
|
{ err },
|
||||||
"QQ Music API not available, QQ Music features will be disabled"
|
"QQ Music API not available"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
stop(): void {
|
stop(): void {
|
||||||
logger.info("Stopping music API servers");
|
logger.info("Stopping music API servers");
|
||||||
neteaseReady = false;
|
if (neteaseServer && typeof (neteaseServer as any).close === "function") {
|
||||||
qqMusicReady = false;
|
(neteaseServer as any).close();
|
||||||
|
}
|
||||||
|
neteaseServer = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
getNeteaseBaseUrl(): string {
|
getNeteaseBaseUrl(): string {
|
||||||
|
|||||||
Reference in new issue
Block a user