ziplayer 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -66
- package/dist/extensions/index.d.ts +1 -1
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +5 -5
- package/dist/extensions/index.js.map +1 -1
- package/dist/plugins/BasePlugin.d.ts +4 -3
- package/dist/plugins/BasePlugin.d.ts.map +1 -1
- package/dist/plugins/BasePlugin.js +4 -1
- package/dist/plugins/BasePlugin.js.map +1 -1
- package/dist/plugins/index.d.ts +10 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +159 -38
- package/dist/plugins/index.js.map +1 -1
- package/dist/structures/Player.d.ts +0 -9
- package/dist/structures/Player.d.ts.map +1 -1
- package/dist/structures/Player.js +42 -91
- package/dist/structures/Player.js.map +1 -1
- package/dist/types/plugin.d.ts +3 -1
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js.map +1 -1
- package/package.json +1 -1
- package/src/extensions/index.ts +5 -9
- package/src/plugins/BasePlugin.ts +4 -3
- package/src/plugins/index.ts +175 -41
- package/src/structures/Player.ts +39 -93
- package/src/types/plugin.ts +3 -1
- package/tsconfig.json +2 -2
package/README.md
CHANGED
|
@@ -35,13 +35,7 @@ import { voiceExt } from "@ziplayer/extension";
|
|
|
35
35
|
|
|
36
36
|
const manager = new PlayerManager({
|
|
37
37
|
plugins: [new SoundCloudPlugin(), new YouTubePlugin(), new SpotifyPlugin()],
|
|
38
|
-
extensions: [
|
|
39
|
-
new voiceExt(null, {
|
|
40
|
-
lang: "vi-VN",
|
|
41
|
-
minimalVoiceMessageDuration: 1,
|
|
42
|
-
postSilenceDelayMs: 2000,
|
|
43
|
-
}),
|
|
44
|
-
],
|
|
38
|
+
extensions: [new voiceExt()],
|
|
45
39
|
});
|
|
46
40
|
|
|
47
41
|
// Create player
|
|
@@ -50,9 +44,9 @@ const player = await manager.create(guildId, {
|
|
|
50
44
|
leaveTimeout: 30000,
|
|
51
45
|
userdata: { channel: textChannel }, // store channel for events
|
|
52
46
|
// Choose extensions for this player (by name or instances)
|
|
53
|
-
extensions: ["voiceExt"],
|
|
47
|
+
// extensions: ["voiceExt"],
|
|
54
48
|
// Apply audio filters
|
|
55
|
-
filters: ["bassboost", "normalize"],
|
|
49
|
+
// filters: ["bassboost", "normalize"],
|
|
56
50
|
});
|
|
57
51
|
|
|
58
52
|
// Connect and play
|
|
@@ -134,74 +128,48 @@ Notes
|
|
|
134
128
|
|
|
135
129
|
- The detection uses track.source that includes "tts" or query starting with `tts:`.
|
|
136
130
|
- If you need more control, call `player.interruptWithTTSTrack(track)` after building a TTS track via your plugin.
|
|
137
|
-
- For CPU-heavy TTS generation, consider offloading to `worker_threads` or a separate process and pass a stream/buffer to the
|
|
138
|
-
plugin.
|
|
139
|
-
|
|
140
|
-
### Player Lifecycle Overview
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
PlayerManager.create(guild, opts)
|
|
144
|
-
│
|
|
145
|
-
▼
|
|
146
|
-
[Player constructor]
|
|
147
|
-
- setup event listeners
|
|
148
|
-
- freeze ExtensionContext { player, manager }
|
|
149
|
-
- register plugins
|
|
150
|
-
│
|
|
151
|
-
▼
|
|
152
|
-
attachExtension(ext)
|
|
153
|
-
- set ext.player
|
|
154
|
-
- ext.onRegister?(context)
|
|
155
|
-
- ext.active?(...) → false ⇒ detach
|
|
156
|
-
│
|
|
157
|
-
▼
|
|
158
|
-
player.play(query, by)
|
|
159
|
-
- runBeforePlayHooks → extensions may mutate query/tracks/start Lavalink
|
|
160
|
-
- resolve track list / queue updates / TTS interrupt check
|
|
161
|
-
- extensionsProvideStream → extension stream overrides plugin pipeline
|
|
162
|
-
- plugin.getStream / getFallback
|
|
163
|
-
│
|
|
164
|
-
▼
|
|
165
|
-
Audio playback
|
|
166
|
-
- trackStart / queue events emitted
|
|
167
|
-
- runAfterPlayHooks with final outcome
|
|
168
|
-
│
|
|
169
|
-
▼
|
|
170
|
-
player.destroy()
|
|
171
|
-
- stop audio/voice / clear queue & plugins
|
|
172
|
-
- ext.onDestroy?(context) for each attached extension
|
|
173
|
-
- emit playerDestroy & cleanup references
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
This diagram shows how custom extensions (voice, lyrics, Lavalink, etc.) integrate across the full player lifecycle and where
|
|
177
|
-
their hooks are invoked.
|
|
178
131
|
|
|
179
|
-
### Lavalink Process
|
|
132
|
+
### extensions and Lavalink Process
|
|
180
133
|
|
|
181
134
|
Use `lavalinkExt` when you need ZiPlayer to manage an external Lavalink JVM node. The extension starts, stops, and optionally
|
|
182
135
|
restarts the Lavalink jar and forwards lifecycle events through the manager/player.
|
|
183
136
|
|
|
184
137
|
```ts
|
|
185
138
|
import { PlayerManager } from "ziplayer";
|
|
186
|
-
import { lavalinkExt } from "@ziplayer/extension";
|
|
187
|
-
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
{
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
139
|
+
import { lavalinkExt, lyricsExt, voiceExt } from "@ziplayer/extension";
|
|
140
|
+
|
|
141
|
+
const manager = new PlayerManager({
|
|
142
|
+
extensions: [
|
|
143
|
+
new lavalinkExt(null, {
|
|
144
|
+
nodes: [
|
|
145
|
+
{
|
|
146
|
+
identifier: "locallavalink",
|
|
147
|
+
password: "youshallnotpass",
|
|
148
|
+
host: "localhost",
|
|
149
|
+
port: 2333,
|
|
150
|
+
secure: false,
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
client: client,
|
|
154
|
+
searchPrefix: "scsearch",
|
|
155
|
+
}),
|
|
156
|
+
new voiceExt(null, { lang: "en-US" }),
|
|
157
|
+
new lyricsExt(null, { provider: "lrclib" }),
|
|
197
158
|
],
|
|
198
|
-
|
|
199
|
-
searchPrefix: "scsearch",
|
|
159
|
+
//etc...
|
|
200
160
|
});
|
|
201
161
|
|
|
202
|
-
|
|
203
|
-
|
|
162
|
+
//crete player:
|
|
163
|
+
const player = await manager.create("id-player", {
|
|
164
|
+
extensions: ["lavalinkExt", "voiceExt", "lyricsExt"],
|
|
165
|
+
//etc... userdata,
|
|
204
166
|
});
|
|
167
|
+
|
|
168
|
+
//connec voice
|
|
169
|
+
if (!player.connection) await player.connect(interaction?.member?.voice?.channel);
|
|
170
|
+
|
|
171
|
+
//play music
|
|
172
|
+
await player.play(query, interaction?.user);
|
|
205
173
|
```
|
|
206
174
|
|
|
207
175
|
## Events
|
|
@@ -4,12 +4,12 @@ import type { SearchResult, StreamInfo, Track, ExtensionPlayRequest, ExtensionPl
|
|
|
4
4
|
import { BaseExtension } from "./BaseExtension";
|
|
5
5
|
export { BaseExtension } from "./BaseExtension";
|
|
6
6
|
export declare class ExtensionManager {
|
|
7
|
-
private debug;
|
|
8
7
|
private extensions;
|
|
9
8
|
private player;
|
|
10
9
|
private manager;
|
|
11
10
|
private extensionContext;
|
|
12
11
|
constructor(player: Player, manager: PlayerManager);
|
|
12
|
+
debug(message?: any, ...optionalParams: any[]): void;
|
|
13
13
|
register(extension: BaseExtension): void;
|
|
14
14
|
unregister(extension: BaseExtension): boolean;
|
|
15
15
|
destroy(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAEX,YAAY,EACZ,UAAU,EACV,KAAK,EAEL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAEzB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAEX,YAAY,EACZ,UAAU,EACV,KAAK,EAEL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAEzB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAMlD,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAMpD,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAUxC,UAAU,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;IAS7C,OAAO,IAAI,IAAI;IAQf,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI5C,MAAM,IAAI,aAAa,EAAE;IAIzB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,GAAG,SAAS;IAInD,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,wBAAwB;IAc1B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAkB/E,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAkBvD,eAAe,CACpB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,QAAQ,EAAE,qBAAqB,CAAA;KAAE,CAAC;IAwCxE,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBvE"}
|
package/dist/extensions/index.js
CHANGED
|
@@ -10,11 +10,11 @@ class ExtensionManager {
|
|
|
10
10
|
this.manager = manager;
|
|
11
11
|
this.extensions = new Map();
|
|
12
12
|
this.extensionContext = Object.freeze({ player, manager });
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
}
|
|
13
|
+
}
|
|
14
|
+
debug(message, ...optionalParams) {
|
|
15
|
+
if (this.manager.debugEnabled) {
|
|
16
|
+
this.manager.emit("debug", `[ExtensionManager] ${message}`, ...optionalParams);
|
|
17
|
+
}
|
|
18
18
|
}
|
|
19
19
|
register(extension) {
|
|
20
20
|
if (this.extensions.has(extension.name)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":";;;AAgBA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,12 @@ import { SourcePlugin, Track, SearchResult, StreamInfo } from "../types";
|
|
|
2
2
|
export declare abstract class BasePlugin implements SourcePlugin {
|
|
3
3
|
abstract name: string;
|
|
4
4
|
abstract version: string;
|
|
5
|
+
priority?: number;
|
|
5
6
|
abstract canHandle(query: string): boolean;
|
|
6
7
|
abstract search(query: string, requestedBy: string): Promise<SearchResult>;
|
|
7
|
-
abstract getStream(track: Track): Promise<StreamInfo>;
|
|
8
|
-
getFallback?(track: Track): Promise<StreamInfo>;
|
|
9
|
-
getRelatedTracks?(trackURL:
|
|
8
|
+
abstract getStream(track: Track, signal?: AbortSignal): Promise<StreamInfo>;
|
|
9
|
+
getFallback?(track: Track, signal?: AbortSignal): Promise<StreamInfo>;
|
|
10
|
+
getRelatedTracks?(trackURL: Track, opts?: {
|
|
10
11
|
limit?: number;
|
|
11
12
|
offset?: number;
|
|
12
13
|
history?: Track[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzE,8BAAsB,UAAW,YAAW,YAAY;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BasePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzE,8BAAsB,UAAW,YAAW,YAAY;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAK;IAEtB,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAC1C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1E,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAE3E,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrE,gBAAgB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAInH,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,eAAe,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAGpE"}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BasePlugin = void 0;
|
|
4
4
|
class BasePlugin {
|
|
5
|
-
|
|
5
|
+
constructor() {
|
|
6
|
+
this.priority = 0;
|
|
7
|
+
}
|
|
8
|
+
getFallback(track, signal) {
|
|
6
9
|
throw new Error("getFallback not implemented");
|
|
7
10
|
}
|
|
8
11
|
getRelatedTracks(trackURL, opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasePlugin.js","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;
|
|
1
|
+
{"version":3,"file":"BasePlugin.js","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;IAAhC;QAGC,aAAQ,GAAY,CAAC,CAAC;IAqBvB,CAAC;IAfA,WAAW,CAAE,KAAY,EAAE,MAAoB;QAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAE,QAAe,EAAE,IAA6D;QAC/F,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,eAAe,CAAE,GAAW,EAAE,WAAmB;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD;AAxBD,gCAwBC"}
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -7,12 +7,12 @@ type PluginManagerOptions = {
|
|
|
7
7
|
};
|
|
8
8
|
export { BasePlugin } from "./BasePlugin";
|
|
9
9
|
export declare class PluginManager {
|
|
10
|
-
private debug;
|
|
11
10
|
private options;
|
|
12
11
|
private player;
|
|
13
12
|
private manager;
|
|
14
13
|
private plugins;
|
|
15
14
|
constructor(player: Player, manager: PlayerManager, options: PluginManagerOptions);
|
|
15
|
+
debug(message?: any, ...optionalParams: any[]): void;
|
|
16
16
|
register(plugin: BasePlugin): void;
|
|
17
17
|
unregister(name: string): boolean;
|
|
18
18
|
get(name: string): BasePlugin | undefined;
|
|
@@ -20,5 +20,14 @@ export declare class PluginManager {
|
|
|
20
20
|
findPlugin(query: string): BasePlugin | undefined;
|
|
21
21
|
clear(): void;
|
|
22
22
|
getStream(track: Track): Promise<StreamInfo | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Get related tracks for a given track
|
|
25
|
+
* @param {Track} track Track to find related tracks for
|
|
26
|
+
* @returns {Track[]} Related tracks or empty array
|
|
27
|
+
* @example
|
|
28
|
+
* const related = await player.getRelatedTracks(track);
|
|
29
|
+
* console.log(`Found ${related.length} related tracks`);
|
|
30
|
+
*/
|
|
31
|
+
getRelatedTracks(track: Track): Promise<Track[]>;
|
|
23
32
|
}
|
|
24
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAsC;gBAEzC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB;IAMjF,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAMpD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,MAAM,IAAI,UAAU,EAAE;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,KAAK,IAAI,IAAI;IAIP,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAqFzD;;;;;;;OAOG;IACG,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAuFtD"}
|
package/dist/plugins/index.js
CHANGED
|
@@ -11,11 +11,11 @@ class PluginManager {
|
|
|
11
11
|
this.player = player;
|
|
12
12
|
this.manager = manager;
|
|
13
13
|
this.options = options;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
}
|
|
14
|
+
}
|
|
15
|
+
debug(message, ...optionalParams) {
|
|
16
|
+
if (this.manager.debugEnabled) {
|
|
17
|
+
this.manager.emit("debug", `[Plugins] ${message}`, ...optionalParams);
|
|
18
|
+
}
|
|
19
19
|
}
|
|
20
20
|
register(plugin) {
|
|
21
21
|
this.plugins.set(plugin.name, plugin);
|
|
@@ -36,49 +36,170 @@ class PluginManager {
|
|
|
36
36
|
this.plugins.clear();
|
|
37
37
|
}
|
|
38
38
|
async getStream(track) {
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
if (!
|
|
42
|
-
this.debug(`
|
|
39
|
+
const timeoutMs = this.options.extractorTimeout ?? 50000;
|
|
40
|
+
const primary = this.get(track.source) || this.findPlugin(track.url);
|
|
41
|
+
if (!primary) {
|
|
42
|
+
this.debug(`No plugin found for track: ${track.title}`);
|
|
43
43
|
return null;
|
|
44
44
|
}
|
|
45
|
-
this.debug(`[Player] Getting stream for track: ${track.title}`);
|
|
46
|
-
this.debug(`[Player] Using plugin: ${plugin.name}`);
|
|
47
|
-
this.debug(`[Track] Track Info:`, track);
|
|
48
|
-
const timeoutMs = this.options.extractorTimeout ?? 50000;
|
|
49
45
|
try {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
const result = await (0, timeout_1.withTimeout)(primary.getStream(track, controller.signal), timeoutMs, "Primary timeout");
|
|
48
|
+
if (result?.stream)
|
|
49
|
+
return result;
|
|
50
|
+
throw new Error("Primary failed");
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
this.debug("Primary failed → fallback parallel");
|
|
54
|
+
}
|
|
55
|
+
// ===== FALLBACK PARALLEL =====
|
|
56
|
+
const plugins = this.getAll()
|
|
57
|
+
.filter((p) => p !== primary)
|
|
58
|
+
.map((p) => {
|
|
59
|
+
p.priority ??= 0;
|
|
60
|
+
return p;
|
|
61
|
+
})
|
|
62
|
+
.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
|
|
63
|
+
// group by priority
|
|
64
|
+
const groups = new Map();
|
|
65
|
+
for (const p of plugins) {
|
|
66
|
+
if (!groups.has(p.priority ?? 0))
|
|
67
|
+
groups.set(p.priority ?? 0, []);
|
|
68
|
+
groups.get(p.priority ?? 0).push(p);
|
|
69
|
+
}
|
|
70
|
+
for (const [priority, group] of groups) {
|
|
71
|
+
this.debug(`Running group priority=${priority}`);
|
|
72
|
+
const controller = new AbortController();
|
|
73
|
+
try {
|
|
74
|
+
const promises = group.map((p) => {
|
|
75
|
+
const run = async () => {
|
|
76
|
+
try {
|
|
77
|
+
let result = null;
|
|
78
|
+
if (p.getStream) {
|
|
79
|
+
try {
|
|
80
|
+
result = await (0, timeout_1.withTimeout)(p.getStream(track, controller.signal), timeoutMs, `Timeout ${p.name}`);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
// getStream thất bại → log rồi thử getFallback
|
|
84
|
+
this.debug(`getStream failed for ${p.name}, trying getFallback`, err);
|
|
85
|
+
}
|
|
86
|
+
if (result?.stream) {
|
|
87
|
+
this.debug(`Success via ${p.name}`);
|
|
88
|
+
controller.abort();
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (p.getFallback) {
|
|
93
|
+
result = await (0, timeout_1.withTimeout)(p.getFallback(track, controller.signal), timeoutMs, `Fallback timeout ${p.name}`);
|
|
94
|
+
if (result?.stream) {
|
|
95
|
+
this.debug(`Fallback via ${p.name}`);
|
|
96
|
+
controller.abort();
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
throw new Error("No stream");
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
if (controller.signal.aborted)
|
|
104
|
+
throw new Error("Aborted");
|
|
105
|
+
this.debug(`Failed ${p.name}`, err);
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
return run();
|
|
110
|
+
});
|
|
111
|
+
const result = await Promise.any(promises);
|
|
112
|
+
if (result?.stream)
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
this.debug(`Priority group ${priority} failed`);
|
|
117
|
+
controller.abort();
|
|
53
118
|
}
|
|
54
119
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
120
|
+
throw new Error(`All plugins failed for track: ${track.title}`);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get related tracks for a given track
|
|
124
|
+
* @param {Track} track Track to find related tracks for
|
|
125
|
+
* @returns {Track[]} Related tracks or empty array
|
|
126
|
+
* @example
|
|
127
|
+
* const related = await player.getRelatedTracks(track);
|
|
128
|
+
* console.log(`Found ${related.length} related tracks`);
|
|
129
|
+
*/
|
|
130
|
+
async getRelatedTracks(track) {
|
|
131
|
+
if (!track)
|
|
132
|
+
return [];
|
|
133
|
+
const timeoutMs = this.options.extractorTimeout ?? 15000;
|
|
134
|
+
const preferred = this.findPlugin(track.url) || this.get(track.source);
|
|
135
|
+
// ===== THỬ PREFERRED TRƯỚC =====
|
|
136
|
+
if (preferred && typeof preferred.getRelatedTracks === "function") {
|
|
137
|
+
try {
|
|
138
|
+
this.debug(`[RelatedTracks] Trying preferred: ${preferred.name}`);
|
|
139
|
+
const related = await (0, timeout_1.withTimeout)(preferred.getRelatedTracks(track, {
|
|
140
|
+
limit: 10,
|
|
141
|
+
history: this.player.queue.previousTracks,
|
|
142
|
+
}), timeoutMs, `getRelatedTracks timed out for ${preferred.name}`);
|
|
143
|
+
if (Array.isArray(related) && related.length > 0) {
|
|
144
|
+
return related;
|
|
61
145
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
146
|
+
this.debug(`[RelatedTracks] ${preferred.name} returned no results → fallback race`);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
this.debug(`[RelatedTracks] ${preferred.name} failed → fallback race`, err);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// ===== FALLBACK: RACE THEO PRIORITY GROUP =====
|
|
153
|
+
const plugins = this.getAll()
|
|
154
|
+
.filter((p) => p !== preferred && typeof p.getRelatedTracks === "function")
|
|
155
|
+
.map((p) => {
|
|
156
|
+
p.priority ??= 0;
|
|
157
|
+
return p;
|
|
158
|
+
})
|
|
159
|
+
.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
|
|
160
|
+
// group by priority
|
|
161
|
+
const groups = new Map();
|
|
162
|
+
for (const p of plugins) {
|
|
163
|
+
const key = p.priority ?? 0;
|
|
164
|
+
if (!groups.has(key))
|
|
165
|
+
groups.set(key, []);
|
|
166
|
+
groups.get(key).push(p);
|
|
167
|
+
}
|
|
168
|
+
for (const [priority, group] of groups) {
|
|
169
|
+
this.debug(`[RelatedTracks] Racing priority=${priority} (${group.map((p) => p.name).join(", ")})`);
|
|
170
|
+
const controller = new AbortController();
|
|
171
|
+
try {
|
|
172
|
+
const promises = group.map((p) => (async () => {
|
|
173
|
+
try {
|
|
174
|
+
const related = await (0, timeout_1.withTimeout)(p.getRelatedTracks(track, {
|
|
175
|
+
limit: 10,
|
|
176
|
+
history: this.player.queue.previousTracks,
|
|
177
|
+
}), timeoutMs, `getRelatedTracks timed out for ${p.name}`);
|
|
178
|
+
if (Array.isArray(related) && related.length > 0) {
|
|
179
|
+
this.debug(`[RelatedTracks] Success via ${p.name}`);
|
|
180
|
+
controller.abort();
|
|
181
|
+
return related;
|
|
182
|
+
}
|
|
183
|
+
throw new Error(`${p.name} returned no results`);
|
|
67
184
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
185
|
+
catch (err) {
|
|
186
|
+
if (controller.signal.aborted)
|
|
187
|
+
throw new Error("Aborted");
|
|
188
|
+
this.debug(`[RelatedTracks] ${p.name} failed`, err);
|
|
189
|
+
throw err;
|
|
190
|
+
}
|
|
191
|
+
})());
|
|
192
|
+
const result = await Promise.any(promises);
|
|
193
|
+
if (result)
|
|
194
|
+
return result;
|
|
76
195
|
}
|
|
77
|
-
|
|
78
|
-
|
|
196
|
+
catch {
|
|
197
|
+
this.debug(`[RelatedTracks] Priority group ${priority} all failed`);
|
|
198
|
+
controller.abort();
|
|
79
199
|
}
|
|
80
200
|
}
|
|
81
|
-
|
|
201
|
+
this.debug(`[RelatedTracks] All plugins failed for: ${track.title}`);
|
|
202
|
+
return [];
|
|
82
203
|
}
|
|
83
204
|
}
|
|
84
205
|
exports.PluginManager = PluginManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":";;;AACA,8CAA+C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -119,15 +119,6 @@ export declare class Player extends EventEmitter {
|
|
|
119
119
|
pluginCount: number;
|
|
120
120
|
ttsFiltered: boolean;
|
|
121
121
|
};
|
|
122
|
-
/**
|
|
123
|
-
* Get related tracks for a given track
|
|
124
|
-
* @param {Track} track Track to find related tracks for
|
|
125
|
-
* @returns {Track[]} Related tracks or empty array
|
|
126
|
-
* @example
|
|
127
|
-
* const related = await player.getRelatedTracks(track);
|
|
128
|
-
* console.log(`Found ${related.length} related tracks`);
|
|
129
|
-
*/
|
|
130
|
-
getRelatedTracks(track: Track): Promise<Track[]>;
|
|
131
122
|
private generateWillNext;
|
|
132
123
|
/**
|
|
133
124
|
* Play a track, search query, search result, or play from queue
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAKN,eAAe,EACf,WAAW,IAAI,kBAAkB,EAMjC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EACX,KAAK,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EAER,WAAW,EACX,YAAY,EAIZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,MAAM,CAAC,OAAO,WAAW,MAAM;IAC9B,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/F,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAChF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,MAAO,SAAQ,YAAY;IACvC,SAAgB,OAAO,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAQ;IAC1C,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAO;IACrB,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,OAAO,CAAS;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAiB;IAG/B,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,OAAO,CAAC,SAAS,CAAmC;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,YAAK,EAAE,OAAO,EAAE,aAAa;IAwDhF;;;OAGG;IACH,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}
|