ziplayer 0.1.3 → 0.1.5

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.
Files changed (34) hide show
  1. package/README.md +212 -212
  2. package/dist/plugins/SoundCloudPlugin.d.ts +22 -0
  3. package/dist/plugins/SoundCloudPlugin.d.ts.map +1 -0
  4. package/dist/plugins/SoundCloudPlugin.js +171 -0
  5. package/dist/plugins/SoundCloudPlugin.js.map +1 -0
  6. package/dist/plugins/SpotifyPlugin.d.ts +26 -0
  7. package/dist/plugins/SpotifyPlugin.d.ts.map +1 -0
  8. package/dist/plugins/SpotifyPlugin.js +183 -0
  9. package/dist/plugins/SpotifyPlugin.js.map +1 -0
  10. package/dist/plugins/YouTubePlugin.d.ts +25 -0
  11. package/dist/plugins/YouTubePlugin.d.ts.map +1 -0
  12. package/dist/plugins/YouTubePlugin.js +314 -0
  13. package/dist/plugins/YouTubePlugin.js.map +1 -0
  14. package/dist/structures/Player.d.ts +61 -70
  15. package/dist/structures/Player.d.ts.map +1 -1
  16. package/dist/structures/Player.js +332 -355
  17. package/dist/structures/Player.js.map +1 -1
  18. package/dist/structures/PlayerManager.d.ts +5 -1
  19. package/dist/structures/PlayerManager.d.ts.map +1 -1
  20. package/dist/structures/PlayerManager.js.map +1 -1
  21. package/dist/types/index.d.ts +58 -16
  22. package/dist/types/index.d.ts.map +1 -1
  23. package/package.json +45 -45
  24. package/src/extensions/BaseExtension.ts +35 -35
  25. package/src/extensions/index.ts +32 -32
  26. package/src/index.ts +16 -16
  27. package/src/plugins/BasePlugin.ts +26 -26
  28. package/src/plugins/index.ts +32 -32
  29. package/src/structures/Player.ts +1693 -1747
  30. package/src/structures/PlayerManager.ts +416 -411
  31. package/src/structures/Queue.ts +354 -354
  32. package/src/types/index.ts +510 -470
  33. package/src/utils/timeout.ts +10 -10
  34. package/tsconfig.json +23 -23
@@ -1,8 +1,9 @@
1
1
  import { EventEmitter } from "events";
2
2
  import { VoiceConnection, AudioPlayer as DiscordAudioPlayer } from "@discordjs/voice";
3
3
  import { VoiceChannel } from "discord.js";
4
+ import { Readable } from "stream";
4
5
  import { BaseExtension } from "../extensions";
5
- import { Track, PlayerOptions, PlayerEvents, SourcePlugin, SearchResult, ProgressBarOptions, LoopMode } from "../types";
6
+ import { Track, PlayerOptions, PlayerEvents, SourcePlugin, SearchResult, ProgressBarOptions, LoopMode, SaveOptions } from "../types";
6
7
  import { Queue } from "./Queue";
7
8
  import { PluginManager } from "../plugins";
8
9
  import type { PlayerManager } from "./PlayerManager";
@@ -64,12 +65,10 @@ export declare class Player extends EventEmitter {
64
65
  private skipLoop;
65
66
  private extensions;
66
67
  private extensionContext;
67
- private pluginCache;
68
- private readonly PLUGIN_CACHE_TTL;
69
- private pluginCacheTimestamps;
70
68
  private searchCache;
71
69
  private readonly SEARCH_CACHE_TTL;
72
70
  private searchCacheTimestamps;
71
+ private ttsPlayer;
73
72
  /**
74
73
  * Attach an extension to the player
75
74
  *
@@ -100,13 +99,12 @@ export declare class Player extends EventEmitter {
100
99
  private runAfterPlayHooks;
101
100
  private extensionsProvideSearch;
102
101
  private extensionsProvideStream;
102
+ private getStreamFromPlugin;
103
+ private Audioresource;
103
104
  /**
104
105
  * Start playing a specific track immediately, replacing the current resource.
105
106
  */
106
107
  private startTrack;
107
- private ttsPlayer;
108
- private ttsQueue;
109
- private ttsActive;
110
108
  private clearLeaveTimeout;
111
109
  private debug;
112
110
  constructor(guildId: string, options: PlayerOptions | undefined, manager: PlayerManager);
@@ -135,17 +133,20 @@ export declare class Player extends EventEmitter {
135
133
  */
136
134
  search(query: string, requestedBy: string): Promise<SearchResult>;
137
135
  /**
138
- * Play a track or search query
136
+ * Play a track, search query, search result, or play from queue
139
137
  *
140
- * @param {string | Track} query - Track URL, search query, or Track object
138
+ * @param {string | Track | SearchResult | null} query - Track URL, search query, Track object, SearchResult, or null for play
141
139
  * @param {string} requestedBy - User ID who requested the track
142
140
  * @returns {Promise<boolean>} True if playback started successfully
143
141
  * @example
144
- * await player.play("Never Gonna Give You Up", userId);
145
- * await player.play("https://youtube.com/watch?v=dQw4w9WgXcQ", userId);
146
- * await player.play("tts: Hello everyone!", userId);
142
+ * await player.play("Never Gonna Give You Up", userId); // Search query
143
+ * await player.play("https://youtube.com/watch?v=dQw4w9WgXcQ", userId); // Direct URL
144
+ * await player.play("tts: Hello everyone!", userId); // Text-to-Speech
145
+ * await player.play(trackObject, userId); // Track object
146
+ * await player.play(searchResult, userId); // SearchResult object
147
+ * await player.play(null); // play from queue
147
148
  */
148
- play(query: string | Track, requestedBy?: string): Promise<boolean>;
149
+ play(query: string | Track | SearchResult | null, requestedBy?: string): Promise<boolean>;
149
150
  /**
150
151
  * Interrupt current music with a TTS track. Pauses music, swaps the
151
152
  * subscription to a dedicated TTS player, plays TTS, then resumes.
@@ -156,42 +157,6 @@ export declare class Player extends EventEmitter {
156
157
  * await player.interruptWithTTSTrack(track);
157
158
  */
158
159
  interruptWithTTSTrack(track: Track): Promise<void>;
159
- /**
160
- * Play queued TTS items sequentially
161
- *
162
- * @returns {Promise<void>}
163
- * @example
164
- * await player.playNextTTS();
165
- */
166
- private playNextTTS;
167
- /**
168
- * Get cached plugin or find and cache a new one
169
- * @param track The track to find plugin for
170
- * @returns The matching plugin or null if not found
171
- */
172
- private getCachedPlugin;
173
- /**
174
- * Clear expired cache entries
175
- */
176
- private clearExpiredCache;
177
- /**
178
- * Clear all plugin cache entries
179
- * @example
180
- * player.clearPluginCache();
181
- */
182
- clearPluginCache(): void;
183
- /**
184
- * Get plugin cache statistics
185
- * @returns Cache statistics
186
- * @example
187
- * const stats = player.getPluginCacheStats();
188
- * console.log(`Cache size: ${stats.size}, Hit rate: ${stats.hitRate}%`);
189
- */
190
- getPluginCacheStats(): {
191
- size: number;
192
- hitRate: number;
193
- expiredEntries: number;
194
- };
195
160
  /**
196
161
  * Get cached search result or null if not found/expired
197
162
  * @param query The search query
@@ -214,18 +179,6 @@ export declare class Player extends EventEmitter {
214
179
  * player.clearSearchCache();
215
180
  */
216
181
  clearSearchCache(): void;
217
- /**
218
- * Get search cache statistics
219
- * @returns Search cache statistics
220
- * @example
221
- * const stats = player.getSearchCacheStats();
222
- * console.log(`Search cache size: ${stats.size}, Expired: ${stats.expiredEntries}`);
223
- */
224
- getSearchCacheStats(): {
225
- size: number;
226
- expiredEntries: number;
227
- queries: string[];
228
- };
229
182
  /**
230
183
  * Debug method to check for duplicate search calls
231
184
  * @param query The search query to check
@@ -237,8 +190,6 @@ export declare class Player extends EventEmitter {
237
190
  pluginCount: number;
238
191
  ttsFiltered: boolean;
239
192
  };
240
- /** Build AudioResource for a given track using the plugin pipeline */
241
- private resourceFromTrack;
242
193
  private generateWillNext;
243
194
  private playNext;
244
195
  /**
@@ -269,14 +220,16 @@ export declare class Player extends EventEmitter {
269
220
  */
270
221
  stop(): boolean;
271
222
  /**
272
- * Skip to the next track
223
+ * Skip to the next track or skip to a specific index
273
224
  *
225
+ * @param {number} index - Optional index to skip to (0 = next track)
274
226
  * @returns {boolean} True if skipped successfully
275
227
  * @example
276
- * const skipped = player.skip();
228
+ * const skipped = player.skip(); // Skip to next track
229
+ * const skippedToIndex = player.skip(2); // Skip to track at index 2
277
230
  * console.log(`Skipped: ${skipped}`);
278
231
  */
279
- skip(): boolean;
232
+ skip(index?: number): boolean;
280
233
  /**
281
234
  * Go back to the previous track in history and play it.
282
235
  *
@@ -287,15 +240,20 @@ export declare class Player extends EventEmitter {
287
240
  */
288
241
  previous(): Promise<boolean>;
289
242
  /**
290
- * Loop the current track
243
+ * Loop the current track or queue
291
244
  *
292
- * @param {LoopMode} mode - The loop mode to set
245
+ * @param {LoopMode | number} mode - The loop mode to set ("off", "track", "queue") or number (0=off, 1=track, 2=queue)
293
246
  * @returns {LoopMode} The loop mode
294
247
  * @example
295
- * const loopMode = player.loop("track");
248
+ * const loopMode = player.loop("track"); // Loop current track
249
+ * const loopQueue = player.loop("queue"); // Loop entire queue
250
+ * const loopTrack = player.loop(1); // Loop current track (same as "track")
251
+ * const loopQueueNum = player.loop(2); // Loop entire queue (same as "queue")
252
+ * const noLoop = player.loop("off"); // No loop
253
+ * const noLoopNum = player.loop(0); // No loop (same as "off")
296
254
  * console.log(`Loop mode: ${loopMode}`);
297
255
  */
298
- loop(mode?: LoopMode): LoopMode;
256
+ loop(mode?: LoopMode | number): LoopMode;
299
257
  /**
300
258
  * Set the auto-play mode
301
259
  *
@@ -462,5 +420,38 @@ export declare class Player extends EventEmitter {
462
420
  * console.log(`Related tracks: ${relatedTracks?.length}`);
463
421
  */
464
422
  get relatedTracks(): Track[] | null;
423
+ /**
424
+ * Save a track's stream to a file and return a Readable stream
425
+ *
426
+ * @param {Track} track - The track to save
427
+ * @param {SaveOptions | string} options - Save options or filename string (for backward compatibility)
428
+ * @returns {Promise<Readable>} A Readable stream containing the audio data
429
+ * @example
430
+ * // Save current track to file
431
+ * const track = player.currentTrack;
432
+ * if (track) {
433
+ * const stream = await player.save(track);
434
+ *
435
+ * // Use fs to write the stream to file
436
+ * const fs = require('fs');
437
+ * const writeStream = fs.createWriteStream('saved-song.mp3');
438
+ * stream.pipe(writeStream);
439
+ *
440
+ * writeStream.on('finish', () => {
441
+ * console.log('File saved successfully!');
442
+ * });
443
+ * }
444
+ *
445
+ * // Save any track by URL
446
+ * const searchResult = await player.search("Never Gonna Give You Up", userId);
447
+ * if (searchResult.tracks.length > 0) {
448
+ * const stream = await player.save(searchResult.tracks[0]);
449
+ * // Handle the stream...
450
+ * }
451
+ *
452
+ * // Backward compatibility - filename as string
453
+ * const stream = await player.save(track, "my-song.mp3");
454
+ */
455
+ save(track: Track, options?: SaveOptions | string): Promise<Readable>;
465
456
  }
466
457
  //# sourceMappingURL=Player.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}
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,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACN,KAAK,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EAER,WAAW,EACX,MAAM,UAAU,CAAC;AASlB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,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,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,UAAU,CAAuB;IACzC,OAAO,CAAC,gBAAgB,CAAoB;IAG5C,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,OAAO,CAAC,qBAAqB,CAA6B;IAE1D,OAAO,CAAC,SAAS,CAAmC;IACpD;;;;;;OAMG;IACI,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAOtD;;;;;;OAMG;IACI,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAUtD;;;;;;;OAOG;IACI,aAAa,IAAI,SAAS,aAAa,EAAE;IAIhD,OAAO,CAAC,wBAAwB;YAalB,kBAAkB;YA0ClB,iBAAiB;YAkBjB,uBAAuB;YAkBvB,uBAAuB;YAkBvB,mBAAmB;YA6CnB,aAAa;IAiC3B;;OAEG;YACW,UAAU;IA8CxB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,KAAK;gBAMD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,YAAK,EAAE,OAAO,EAAE,aAAa;IA6ChF,OAAO,CAAC,mBAAmB;IA2D3B,OAAO,CAAC,eAAe;IAYvB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKrC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKnC;;;;;;;OAOG;IACG,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAmC9D;;;;;;;;;OASG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsEvE;;;;;;;;;;;;;OAaG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoJ/F;;;;;;;;OAQG;IACU,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAiE/D;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;;;OAIG;IACI,gBAAgB,IAAI,IAAI;IAO/B;;;;OAIG;IACI,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;QACvC,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;KACrB;YAsBa,gBAAgB;YAwChB,QAAQ;IAqCtB;;;;;;;OAOG;IACH,KAAK,IAAI,OAAO;IAQhB;;;;;;;OAOG;IACH,MAAM,IAAI,OAAO;IAgBjB;;;;;;;OAOG;IACH,IAAI,IAAI,OAAO;IAUf;;;;;;;;;OASG;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAoC7B;;;;;;;OAOG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IASlC;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ;IAqBxC;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO;IAIjC;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IA+BlC;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAKf;;;;;;OAMG;IACH,UAAU,IAAI,IAAI;IAKlB;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCpG;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IASnC;;;;;;;;OAQG;IACH,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM;IAiBxD;;;;;;;OAOG;IACH,OAAO;;;;;IAmBP;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAY9B,OAAO,CAAC,aAAa;IAcrB;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAoCf;;;;;;;OAOG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;;;OAOG;IACH,IAAI,YAAY,IAAI,KAAK,GAAG,IAAI,CAE/B;IAED;;;;;;;OAOG;IACH,IAAI,aAAa,IAAI,KAAK,GAAG,IAAI,CAEhC;IAED;;;;;;;OAOG;IACH,IAAI,cAAc,IAAI,KAAK,EAAE,CAE5B;IAED;;;;;;;OAOG;IACH,IAAI,cAAc,IAAI,KAAK,EAAE,CAE5B;IAED;;;;;;;OAOG;IACH,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAE/B;IAED;;;;;;;OAOG;IACH,IAAI,aAAa,IAAI,KAAK,EAAE,GAAG,IAAI,CAElC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAqF3E"}