ziplayer 0.2.7 → 0.3.0
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/AI-Guide.md +624 -956
- package/README.md +277 -10
- package/dist/extensions/BaseExtension.d.ts +1 -0
- package/dist/extensions/BaseExtension.d.ts.map +1 -1
- package/dist/extensions/BaseExtension.js.map +1 -1
- package/dist/extensions/index.d.ts +38 -3
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +259 -41
- package/dist/extensions/index.js.map +1 -1
- package/dist/persistence/PersistenceManager.d.ts +95 -0
- package/dist/persistence/PersistenceManager.d.ts.map +1 -0
- package/dist/persistence/PersistenceManager.js +975 -0
- package/dist/persistence/PersistenceManager.js.map +1 -0
- package/dist/plugins/BasePlugin.js +1 -1
- package/dist/plugins/BasePlugin.js.map +1 -1
- package/dist/plugins/index.d.ts +73 -8
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +647 -116
- package/dist/plugins/index.js.map +1 -1
- package/dist/structures/FilterManager.js +3 -3
- package/dist/structures/FilterManager.js.map +1 -1
- package/dist/structures/PersistenceManager.d.ts +96 -0
- package/dist/structures/PersistenceManager.d.ts.map +1 -0
- package/dist/structures/PersistenceManager.js +1008 -0
- package/dist/structures/PersistenceManager.js.map +1 -0
- package/dist/structures/Player.d.ts +157 -14
- package/dist/structures/Player.d.ts.map +1 -1
- package/dist/structures/Player.js +1163 -188
- package/dist/structures/Player.js.map +1 -1
- package/dist/structures/PlayerManager.d.ts +106 -91
- package/dist/structures/PlayerManager.d.ts.map +1 -1
- package/dist/structures/PlayerManager.js +365 -124
- package/dist/structures/PlayerManager.js.map +1 -1
- package/dist/structures/Queue.d.ts +136 -31
- package/dist/structures/Queue.d.ts.map +1 -1
- package/dist/structures/Queue.js +265 -46
- package/dist/structures/Queue.js.map +1 -1
- package/dist/structures/StreamManager.d.ts +137 -0
- package/dist/structures/StreamManager.d.ts.map +1 -0
- package/dist/structures/StreamManager.js +420 -0
- package/dist/structures/StreamManager.js.map +1 -0
- package/dist/types/index.d.ts +181 -8
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/persistence.d.ts +77 -0
- package/dist/types/persistence.d.ts.map +1 -0
- package/dist/types/persistence.js +3 -0
- package/dist/types/persistence.js.map +1 -0
- package/package.json +3 -2
- package/src/extensions/BaseExtension.ts +1 -0
- package/src/extensions/index.ts +320 -37
- package/src/plugins/BasePlugin.ts +1 -1
- package/src/plugins/index.ts +801 -139
- package/src/structures/FilterManager.ts +3 -3
- package/src/structures/Player.ts +2797 -1693
- package/src/structures/PlayerManager.ts +438 -129
- package/src/structures/Queue.ts +300 -55
- package/src/structures/StreamManager.ts +524 -0
- package/src/types/extension.ts +129 -129
- package/src/types/fillter.ts +264 -264
- package/src/types/index.ts +187 -12
- package/src/types/plugin.ts +59 -59
- package/tsconfig.json +0 -1
package/dist/types/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Readable } from "stream";
|
|
|
2
2
|
import { Player } from "../structures/Player";
|
|
3
3
|
import type { AudioFilter } from "./fillter";
|
|
4
4
|
import type { SourcePluginLike } from "./plugin";
|
|
5
|
+
import type { AudioResource } from "@discordjs/voice";
|
|
5
6
|
/**
|
|
6
7
|
* Represents a music track with metadata and streaming information.
|
|
7
8
|
*
|
|
@@ -58,6 +59,7 @@ export interface Track {
|
|
|
58
59
|
requestedBy: string;
|
|
59
60
|
source: string;
|
|
60
61
|
metadata?: Record<string, any>;
|
|
62
|
+
isLive?: boolean;
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
65
|
* Contains search results from plugins, including tracks and optional playlist information.
|
|
@@ -85,9 +87,18 @@ export interface SearchResult {
|
|
|
85
87
|
tracks: Track[];
|
|
86
88
|
playlist?: {
|
|
87
89
|
name: string;
|
|
88
|
-
url
|
|
90
|
+
url?: string;
|
|
89
91
|
thumbnail?: string;
|
|
90
|
-
};
|
|
92
|
+
} | null;
|
|
93
|
+
query?: string;
|
|
94
|
+
score?: SearchScore;
|
|
95
|
+
source?: string;
|
|
96
|
+
}
|
|
97
|
+
export interface SearchScore {
|
|
98
|
+
score: number;
|
|
99
|
+
reason: string;
|
|
100
|
+
matchedBy: "url" | "title" | "partial" | "none" | "playlist";
|
|
101
|
+
exactMatch: boolean;
|
|
91
102
|
}
|
|
92
103
|
/**
|
|
93
104
|
* Contains streaming information for audio playback.
|
|
@@ -124,7 +135,7 @@ export interface StreamInfo {
|
|
|
124
135
|
* createPlayer: true,
|
|
125
136
|
* interrupt: true,
|
|
126
137
|
* volume: 1.0,
|
|
127
|
-
*
|
|
138
|
+
* maxTimeTts: 30000
|
|
128
139
|
* }
|
|
129
140
|
* };
|
|
130
141
|
*/
|
|
@@ -155,7 +166,7 @@ export interface PlayerOptions {
|
|
|
155
166
|
/** Default TTS volume multiplier 1 => 100% */
|
|
156
167
|
volume?: number;
|
|
157
168
|
/** Max time tts playback Duration */
|
|
158
|
-
|
|
169
|
+
maxTimeTts?: number;
|
|
159
170
|
};
|
|
160
171
|
/**
|
|
161
172
|
* Optional per-player extension selection. When provided, only these
|
|
@@ -172,15 +183,130 @@ export interface PlayerOptions {
|
|
|
172
183
|
* - Multiple filters can be combined
|
|
173
184
|
*/
|
|
174
185
|
filters?: (string | AudioFilter)[];
|
|
186
|
+
/**
|
|
187
|
+
* Enable low performance mode.
|
|
188
|
+
* When enabled, heavy features such as preload and crossfade can be auto-disabled.
|
|
189
|
+
*/
|
|
190
|
+
lowPerformance?: boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Preload behavior configuration.
|
|
193
|
+
*/
|
|
194
|
+
preload?: {
|
|
195
|
+
/**
|
|
196
|
+
* Enable/disable preload explicitly.
|
|
197
|
+
* Default: true
|
|
198
|
+
*/
|
|
199
|
+
enabled?: boolean;
|
|
200
|
+
/**
|
|
201
|
+
* Auto disable preload when lowPerformance is enabled.
|
|
202
|
+
* Default: true
|
|
203
|
+
*/
|
|
204
|
+
autoDisableInLowPerformance?: boolean;
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Crossfade behavior configuration.
|
|
208
|
+
*/
|
|
209
|
+
crossfade?: {
|
|
210
|
+
/**
|
|
211
|
+
* Enable/disable crossfade explicitly.
|
|
212
|
+
* If omitted and autoEnable=true, ZiPlayer may enable it automatically.
|
|
213
|
+
*/
|
|
214
|
+
enabled?: boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Auto enable crossfade if runtime profile allows.
|
|
217
|
+
* Default: true
|
|
218
|
+
*/
|
|
219
|
+
autoEnable?: boolean;
|
|
220
|
+
/**
|
|
221
|
+
* Auto disable crossfade when lowPerformance is enabled.
|
|
222
|
+
* Default: true
|
|
223
|
+
*/
|
|
224
|
+
autoDisableInLowPerformance?: boolean;
|
|
225
|
+
/**
|
|
226
|
+
* Target crossfade duration in milliseconds.
|
|
227
|
+
* Default: 5000
|
|
228
|
+
*/
|
|
229
|
+
durationMs?: number;
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Smart transition engine settings.
|
|
233
|
+
*/
|
|
234
|
+
smartTransition?: {
|
|
235
|
+
enabled?: boolean;
|
|
236
|
+
/**
|
|
237
|
+
* Prefer genre-aware fade duration when metadata.genre is available.
|
|
238
|
+
*/
|
|
239
|
+
genreAware?: boolean;
|
|
240
|
+
/**
|
|
241
|
+
* Try to align transition with beat boundary using metadata.bpm.
|
|
242
|
+
*/
|
|
243
|
+
beatAlign?: boolean;
|
|
244
|
+
/**
|
|
245
|
+
* Base duration in milliseconds when no specific profile matched.
|
|
246
|
+
*/
|
|
247
|
+
baseDurationMs?: number;
|
|
248
|
+
minDurationMs?: number;
|
|
249
|
+
maxDurationMs?: number;
|
|
250
|
+
/**
|
|
251
|
+
* Genre profiles in milliseconds (e.g. chill, edm, pop, rock).
|
|
252
|
+
*/
|
|
253
|
+
genreDurations?: Record<string, number>;
|
|
254
|
+
/**
|
|
255
|
+
* Max wait time while trying to align to beat boundary.
|
|
256
|
+
*/
|
|
257
|
+
beatAlignMaxWaitMs?: number;
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* Recovery strategy for stream/player failures.
|
|
261
|
+
*/
|
|
262
|
+
antiStuck?: {
|
|
263
|
+
enabled?: boolean;
|
|
264
|
+
maxRetries?: number;
|
|
265
|
+
retryDelayMs?: number;
|
|
266
|
+
/**
|
|
267
|
+
* Reuse preload/current cached stream before hard retries.
|
|
268
|
+
*/
|
|
269
|
+
reusePreloadFirst?: boolean;
|
|
270
|
+
/**
|
|
271
|
+
* Temporarily force low quality during retry attempts.
|
|
272
|
+
*/
|
|
273
|
+
reduceQualityOnRetry?: boolean;
|
|
274
|
+
/**
|
|
275
|
+
* If consecutive failures exceed this threshold, allow skipping track.
|
|
276
|
+
*/
|
|
277
|
+
controlledSkipThreshold?: number;
|
|
278
|
+
};
|
|
279
|
+
/**
|
|
280
|
+
* Loudness normalization and limiter.
|
|
281
|
+
*/
|
|
282
|
+
loudnessNormalization?: {
|
|
283
|
+
enabled?: boolean;
|
|
284
|
+
/**
|
|
285
|
+
* Target LUFS (integrated). Track metadata.lufs is used if available.
|
|
286
|
+
*/
|
|
287
|
+
targetLUFS?: number;
|
|
288
|
+
/**
|
|
289
|
+
* Cap gain boost to avoid over-amplification.
|
|
290
|
+
*/
|
|
291
|
+
maxBoostDb?: number;
|
|
292
|
+
/**
|
|
293
|
+
* Cap attenuation.
|
|
294
|
+
*/
|
|
295
|
+
maxCutDb?: number;
|
|
296
|
+
/**
|
|
297
|
+
* Output ceiling multiplier (<= 1.0), acts as soft limiter ceiling.
|
|
298
|
+
*/
|
|
299
|
+
limiterCeiling?: number;
|
|
300
|
+
};
|
|
175
301
|
}
|
|
176
302
|
export interface PlayerManagerOptions {
|
|
177
303
|
plugins?: SourcePluginLike[];
|
|
178
304
|
extensions?: any[];
|
|
179
|
-
/**
|
|
180
|
-
* Timeout in milliseconds for manager-level operations (e.g. search)
|
|
181
|
-
* when running without a Player instance.
|
|
182
|
-
*/
|
|
183
305
|
extractorTimeout?: number;
|
|
306
|
+
autoCleanup?: boolean;
|
|
307
|
+
cleanupInterval?: number;
|
|
308
|
+
enableSearchCache?: boolean;
|
|
309
|
+
enableStatsCollection?: boolean;
|
|
184
310
|
}
|
|
185
311
|
/**
|
|
186
312
|
* Options for the progress bar
|
|
@@ -196,6 +322,10 @@ export interface ProgressBarOptions {
|
|
|
196
322
|
size?: number;
|
|
197
323
|
barChar?: string;
|
|
198
324
|
progressChar?: string;
|
|
325
|
+
timeFormat?: "compact" | "full";
|
|
326
|
+
showPercentage?: boolean;
|
|
327
|
+
showTime?: boolean;
|
|
328
|
+
hideProgressChar?: boolean;
|
|
199
329
|
}
|
|
200
330
|
/**
|
|
201
331
|
* Options for saving tracks
|
|
@@ -221,6 +351,43 @@ export interface SaveOptions {
|
|
|
221
351
|
/** Seek position in milliseconds to start saving from */
|
|
222
352
|
seek?: number;
|
|
223
353
|
}
|
|
354
|
+
export interface PlayerSession {
|
|
355
|
+
guildId: string;
|
|
356
|
+
queue: Track[];
|
|
357
|
+
currentTrack: Track | null;
|
|
358
|
+
volume: number;
|
|
359
|
+
loopMode: LoopMode;
|
|
360
|
+
autoPlay: boolean;
|
|
361
|
+
position: number | null;
|
|
362
|
+
extensions: string[];
|
|
363
|
+
plugins: string[];
|
|
364
|
+
userdata?: Record<string, any>;
|
|
365
|
+
}
|
|
366
|
+
export interface PreloadState {
|
|
367
|
+
resource: AudioResource | null;
|
|
368
|
+
track: Track | null;
|
|
369
|
+
abortController: AbortController | null;
|
|
370
|
+
timeoutId: NodeJS.Timeout | null;
|
|
371
|
+
isValid: boolean;
|
|
372
|
+
streamId?: string;
|
|
373
|
+
isBeingUsed: boolean;
|
|
374
|
+
}
|
|
375
|
+
export interface PlayerStats {
|
|
376
|
+
totalPlayers: number;
|
|
377
|
+
activePlayers: number;
|
|
378
|
+
pausedPlayers: number;
|
|
379
|
+
connectedPlayers: number;
|
|
380
|
+
totalTracksInQueue: number;
|
|
381
|
+
}
|
|
382
|
+
export interface StreamSlot {
|
|
383
|
+
resource: AudioResource | null;
|
|
384
|
+
track: Track | null;
|
|
385
|
+
streamId: string | null;
|
|
386
|
+
abortController: AbortController | null;
|
|
387
|
+
isValid: boolean;
|
|
388
|
+
isLoading: boolean;
|
|
389
|
+
loadPromise: Promise<void> | null;
|
|
390
|
+
}
|
|
224
391
|
export type LoopMode = "off" | "track" | "queue";
|
|
225
392
|
export interface VoiceChannel {
|
|
226
393
|
id: string;
|
|
@@ -327,6 +494,8 @@ export interface ManagerEvents {
|
|
|
327
494
|
lyricsCreate: [player: Player, track: Track, lyrics: any];
|
|
328
495
|
lyricsChange: [player: Player, track: Track, lyrics: any];
|
|
329
496
|
voiceCreate: [player: Player, evt: any];
|
|
497
|
+
stats: [stats: PlayerStats];
|
|
498
|
+
streamError: [error: Error, track: Track | null];
|
|
330
499
|
}
|
|
331
500
|
export interface PlayerEvents {
|
|
332
501
|
debug: [message: string, ...args: any[]];
|
|
@@ -362,6 +531,10 @@ export interface PlayerEvents {
|
|
|
362
531
|
filterRemoved: [filter: AudioFilter];
|
|
363
532
|
/** Emitted when all filters are cleared */
|
|
364
533
|
filtersCleared: [];
|
|
534
|
+
trackStuck: [track: Track | null];
|
|
535
|
+
streamError: [error: Error, track: Track | null];
|
|
536
|
+
/** Emitted when player stats are updated (if enabled) */
|
|
537
|
+
stats: [stats: PlayerStats];
|
|
365
538
|
}
|
|
366
539
|
export * from "./fillter";
|
|
367
540
|
export * from "./plugin";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAiiBA,4CAA0B;AAC1B,2CAAyB;AACzB,8CAA4B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { LoopMode, PlayerOptions } from "../types";
|
|
2
|
+
export interface SerializedTrack {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
url: string;
|
|
6
|
+
source: string;
|
|
7
|
+
duration: number;
|
|
8
|
+
thumbnail?: string;
|
|
9
|
+
author?: string;
|
|
10
|
+
requestedBy?: string;
|
|
11
|
+
isLive?: boolean;
|
|
12
|
+
artwork?: string;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}
|
|
15
|
+
export interface SerializedQueue {
|
|
16
|
+
tracks: SerializedTrack[];
|
|
17
|
+
current: SerializedTrack | null;
|
|
18
|
+
history: SerializedTrack[];
|
|
19
|
+
loopMode: LoopMode;
|
|
20
|
+
autoPlay: boolean;
|
|
21
|
+
position?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface SerializedPlayer {
|
|
24
|
+
guildId: string;
|
|
25
|
+
queue: SerializedQueue;
|
|
26
|
+
volume: number;
|
|
27
|
+
isPlaying: boolean;
|
|
28
|
+
isPaused: boolean;
|
|
29
|
+
options: PlayerOptions;
|
|
30
|
+
filters?: string[];
|
|
31
|
+
lastUpdate: number;
|
|
32
|
+
version: string;
|
|
33
|
+
wasDestroyed?: boolean;
|
|
34
|
+
destroyedAt?: number;
|
|
35
|
+
voiceChannelId?: string;
|
|
36
|
+
adapterCreator?: any;
|
|
37
|
+
}
|
|
38
|
+
export interface PersistenceOptions {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
provider?: "file" | "redis" | "database";
|
|
41
|
+
saveInterval?: number;
|
|
42
|
+
autoLoad?: boolean;
|
|
43
|
+
autoRestoreOnRestart?: boolean;
|
|
44
|
+
autoConnect?: boolean;
|
|
45
|
+
restoreDelay?: number;
|
|
46
|
+
maxBackups?: number;
|
|
47
|
+
maxTotalBackups?: number;
|
|
48
|
+
autoCleanupBackupsOnStart?: boolean;
|
|
49
|
+
backupRetentionDays?: number;
|
|
50
|
+
compress?: boolean;
|
|
51
|
+
filePath?: string;
|
|
52
|
+
redisUrl?: string;
|
|
53
|
+
redisPrefix?: string;
|
|
54
|
+
save?: ((key: string, data: any) => Promise<void>) | ((data: any) => Promise<void>);
|
|
55
|
+
load?: ((key: string) => Promise<any>) | (() => Promise<any>);
|
|
56
|
+
delete?: (key: string) => Promise<void>;
|
|
57
|
+
list?: () => Promise<string[]>;
|
|
58
|
+
}
|
|
59
|
+
export interface PersistenceProvider {
|
|
60
|
+
save(key: string, data: any): Promise<void>;
|
|
61
|
+
load(key: string): Promise<any>;
|
|
62
|
+
delete(key: string): Promise<void>;
|
|
63
|
+
list(): Promise<string[]>;
|
|
64
|
+
}
|
|
65
|
+
export interface DestroyedRecord {
|
|
66
|
+
guildId: string;
|
|
67
|
+
destroyedAt: number;
|
|
68
|
+
reason?: string;
|
|
69
|
+
}
|
|
70
|
+
export interface BackupInfo {
|
|
71
|
+
key: string;
|
|
72
|
+
path: string;
|
|
73
|
+
timestamp: number;
|
|
74
|
+
size: number;
|
|
75
|
+
isCompressed: boolean;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/types/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/types/persistence.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ziplayer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "A modular Discord voice player with plugin system",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ZiPlayer",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"voice",
|
|
11
11
|
"@ziplayer/plugin"
|
|
12
12
|
],
|
|
13
|
-
"homepage": "https://player.ziji.
|
|
13
|
+
"homepage": "https://player.ziji.best",
|
|
14
14
|
"bugs": {
|
|
15
15
|
"url": "https://github.com/ZiProject/ZiPlayer/issues"
|
|
16
16
|
},
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"discord-api-types": "^0.38.37",
|
|
32
32
|
"ffmpeg-static": "^5.2.0",
|
|
33
33
|
"libsodium-wrappers": "^0.7.15",
|
|
34
|
+
"lru-cache": "^11.3.6",
|
|
34
35
|
"opusscript": "^0.1.1",
|
|
35
36
|
"prism-media": "^1.3.5"
|
|
36
37
|
},
|
|
@@ -14,6 +14,7 @@ import type { Player } from "../structures/Player";
|
|
|
14
14
|
export abstract class BaseExtension implements SourceExtension {
|
|
15
15
|
abstract name: string;
|
|
16
16
|
abstract version: string;
|
|
17
|
+
priority?: number; // Higher = run first
|
|
17
18
|
abstract player: Player | null;
|
|
18
19
|
abstract active(alas: any): boolean | Promise<boolean>;
|
|
19
20
|
|