ziplayer 0.1.3 → 0.1.4

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.
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpotifyPlugin = void 0;
4
+ const BasePlugin_1 = require("./BasePlugin");
5
+ /**
6
+ * This minimal Spotify plugin:
7
+ * - Parses Spotify URLs/URIs (track/playlist/album)
8
+ * - Uses Spotify's public oEmbed endpoint to fetch *display metadata* (no auth, no SDK)
9
+ * - Does NOT provide audio streams (player is expected to redirect/fallback upstream)
10
+ * - Does NOT expand playlists/albums (no SDK; oEmbed doesn't enumerate items)
11
+ */
12
+ class SpotifyPlugin extends BasePlugin_1.BasePlugin {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.name = "spotify";
16
+ this.version = "1.1.0";
17
+ }
18
+ canHandle(query) {
19
+ const q = query.toLowerCase().trim();
20
+ if (q.startsWith("spotify:"))
21
+ return true;
22
+ try {
23
+ const u = new URL(q);
24
+ return u.hostname.includes("open.spotify.com");
25
+ }
26
+ catch {
27
+ return false;
28
+ }
29
+ }
30
+ validate(url) {
31
+ if (url.startsWith("spotify:"))
32
+ return true;
33
+ try {
34
+ const u = new URL(url);
35
+ return u.hostname.includes("open.spotify.com");
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ async search(query, requestedBy) {
42
+ if (!this.validate(query)) {
43
+ return { tracks: [] };
44
+ }
45
+ const kind = this.identifyKind(query);
46
+ if (kind === "track") {
47
+ const t = await this.buildTrackFromUrlOrUri(query, requestedBy);
48
+ return { tracks: t ? [t] : [] };
49
+ }
50
+ if (kind === "playlist") {
51
+ const t = await this.buildHeaderItem(query, requestedBy, "playlist");
52
+ return { tracks: t ? [t] : [] };
53
+ }
54
+ if (kind === "album") {
55
+ const t = await this.buildHeaderItem(query, requestedBy, "album");
56
+ return { tracks: t ? [t] : [] };
57
+ }
58
+ return { tracks: [] };
59
+ }
60
+ async extractPlaylist(_input, _requestedBy) {
61
+ return [];
62
+ }
63
+ async extractAlbum(_input, _requestedBy) {
64
+ return [];
65
+ }
66
+ async getStream(_track) {
67
+ throw new Error("Spotify streaming is not supported by this plugin");
68
+ }
69
+ identifyKind(input) {
70
+ if (input.startsWith("spotify:")) {
71
+ if (input.includes(":track:"))
72
+ return "track";
73
+ if (input.includes(":playlist:"))
74
+ return "playlist";
75
+ if (input.includes(":album:"))
76
+ return "album";
77
+ return "unknown";
78
+ }
79
+ try {
80
+ const u = new URL(input);
81
+ const parts = u.pathname.split("/").filter(Boolean);
82
+ const kind = parts[0];
83
+ if (kind === "track")
84
+ return "track";
85
+ if (kind === "playlist")
86
+ return "playlist";
87
+ if (kind === "album")
88
+ return "album";
89
+ return "unknown";
90
+ }
91
+ catch {
92
+ return "unknown";
93
+ }
94
+ }
95
+ extractId(input) {
96
+ if (!input)
97
+ return null;
98
+ if (input.startsWith("spotify:")) {
99
+ const parts = input.split(":");
100
+ return parts[2] || null;
101
+ }
102
+ try {
103
+ const u = new URL(input);
104
+ const parts = u.pathname.split("/").filter(Boolean);
105
+ return parts[1] || null; // /track/<id>
106
+ }
107
+ catch {
108
+ return null;
109
+ }
110
+ }
111
+ async buildTrackFromUrlOrUri(input, requestedBy) {
112
+ const id = this.extractId(input);
113
+ if (!id)
114
+ return null;
115
+ const url = this.toShareUrl(input, "track", id);
116
+ const meta = await this.fetchOEmbed(url).catch(() => undefined);
117
+ const title = meta?.title || `Spotify Track ${id}`;
118
+ const thumbnail = meta?.thumbnail_url;
119
+ const track = {
120
+ id,
121
+ title,
122
+ url,
123
+ duration: 0,
124
+ thumbnail,
125
+ requestedBy,
126
+ source: this.name,
127
+ metadata: {
128
+ author: meta?.author_name,
129
+ provider: meta?.provider_name,
130
+ spotify_id: id,
131
+ },
132
+ };
133
+ return track;
134
+ }
135
+ async buildHeaderItem(input, requestedBy, kind) {
136
+ const id = this.extractId(input);
137
+ if (!id)
138
+ return null;
139
+ const url = this.toShareUrl(input, kind, id);
140
+ const meta = await this.fetchOEmbed(url).catch(() => undefined);
141
+ const title = meta?.title || `Spotify ${kind} ${id}`;
142
+ const thumbnail = meta?.thumbnail_url;
143
+ return {
144
+ id,
145
+ title,
146
+ url,
147
+ duration: 0,
148
+ thumbnail,
149
+ requestedBy,
150
+ source: this.name,
151
+ metadata: {
152
+ author: meta?.author_name,
153
+ provider: meta?.provider_name,
154
+ spotify_id: id,
155
+ kind,
156
+ },
157
+ };
158
+ }
159
+ toShareUrl(input, expectedKind, id) {
160
+ if (input.startsWith("spotify:")) {
161
+ return `https://open.spotify.com/${expectedKind}/${id}`;
162
+ }
163
+ try {
164
+ const u = new URL(input);
165
+ const parts = u.pathname.split("/").filter(Boolean);
166
+ const kind = parts[0] || expectedKind;
167
+ const realId = parts[1] || id;
168
+ return `https://open.spotify.com/${kind}/${realId}`;
169
+ }
170
+ catch {
171
+ return `https://open.spotify.com/${expectedKind}/${id}`;
172
+ }
173
+ }
174
+ async fetchOEmbed(pageUrl) {
175
+ const endpoint = `https://open.spotify.com/oembed?url=${encodeURIComponent(pageUrl)}`;
176
+ const res = await fetch(endpoint);
177
+ if (!res.ok)
178
+ throw new Error(`oEmbed HTTP ${res.status}`);
179
+ return res.json();
180
+ }
181
+ }
182
+ exports.SpotifyPlugin = SpotifyPlugin;
183
+ //# sourceMappingURL=SpotifyPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpotifyPlugin.js","sourceRoot":"","sources":["../../src/plugins/SpotifyPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { BasePlugin } from "./BasePlugin";
2
+ import { Track, SearchResult, StreamInfo } from "../types";
3
+ export declare class YouTubePlugin extends BasePlugin {
4
+ name: string;
5
+ version: string;
6
+ private client;
7
+ private searchClient;
8
+ private ready;
9
+ constructor();
10
+ private init;
11
+ canHandle(query: string): boolean;
12
+ validate(url: string): boolean;
13
+ search(query: string, requestedBy: string): Promise<SearchResult>;
14
+ extractPlaylist(url: string, requestedBy: string): Promise<Track[]>;
15
+ getStream(track: Track): Promise<StreamInfo>;
16
+ getRelatedTracks(trackURL: string, opts?: {
17
+ limit?: number;
18
+ offset?: number;
19
+ history?: Track[];
20
+ }): Promise<Track[]>;
21
+ getFallback(track: Track): Promise<StreamInfo>;
22
+ private extractVideoId;
23
+ private extractListId;
24
+ }
25
+ //# sourceMappingURL=YouTubePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouTubePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/YouTubePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3D,qBAAa,aAAc,SAAQ,UAAU;IAC3C,IAAI,SAAa;IACjB,OAAO,SAAW;IAElB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,KAAK,CAAgB;;YAOf,IAAI;IAclB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAUjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAiHjE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAoCnE,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAoE5C,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;KAAO,GAChE,OAAO,CAAC,KAAK,EAAE,CAAC;IA+Bb,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAWpD,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,aAAa;CAQtB"}
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YouTubePlugin = void 0;
4
+ const BasePlugin_1 = require("./BasePlugin");
5
+ const youtubei_js_1 = require("youtubei.js");
6
+ class YouTubePlugin extends BasePlugin_1.BasePlugin {
7
+ constructor() {
8
+ super();
9
+ this.name = "youtube";
10
+ this.version = "1.0.0";
11
+ this.ready = this.init();
12
+ }
13
+ async init() {
14
+ this.client = await youtubei_js_1.Innertube.create({
15
+ client_type: "ANDROID",
16
+ retrieve_player: false,
17
+ });
18
+ // Use a separate web client for search to avoid mobile parser issues
19
+ this.searchClient = await youtubei_js_1.Innertube.create({
20
+ client_type: "WEB",
21
+ retrieve_player: false,
22
+ });
23
+ youtubei_js_1.Log.setLevel(0);
24
+ }
25
+ canHandle(query) {
26
+ const q = query.toLowerCase();
27
+ const isUrl = q.startsWith("http://") || q.startsWith("https://");
28
+ return (q.includes("youtube.com") ||
29
+ q.includes("youtu.be") ||
30
+ (!isUrl && q.includes("youtube")));
31
+ }
32
+ validate(url) {
33
+ const u = url.toLowerCase();
34
+ return u.includes("youtube.com") || u.includes("youtu.be");
35
+ }
36
+ async search(query, requestedBy) {
37
+ await this.ready;
38
+ if (this.validate(query)) {
39
+ const listId = this.extractListId(query);
40
+ if (listId) {
41
+ try {
42
+ const playlist = await this.client.getPlaylist(listId);
43
+ const videos = playlist?.videos || playlist?.items || [];
44
+ const tracks = videos.map((v) => {
45
+ const id = v.id || v.video_id || v.videoId;
46
+ const title = v.title?.text ?? v.title;
47
+ const duration = toSeconds(v.duration?.text ?? v.duration);
48
+ const thumb = v.thumbnails?.[0]?.url || v.thumbnail?.url;
49
+ const author = v.author?.name ?? v.channel?.name;
50
+ const views = v.view_count ?? v.views;
51
+ return {
52
+ id: String(id),
53
+ title,
54
+ url: `https://www.youtube.com/watch?v=${id}`,
55
+ duration: Number(duration) || 0,
56
+ thumbnail: thumb,
57
+ requestedBy,
58
+ source: this.name,
59
+ metadata: { author, views, playlist: listId },
60
+ };
61
+ });
62
+ return {
63
+ tracks,
64
+ playlist: {
65
+ name: playlist?.title ||
66
+ playlist?.metadata?.title ||
67
+ `Playlist ${listId}`,
68
+ url: query,
69
+ thumbnail: playlist?.thumbnails?.[0]?.url || playlist?.thumbnail?.url,
70
+ },
71
+ };
72
+ }
73
+ catch {
74
+ const withoutList = query
75
+ .replace(/[?&]list=[^&]+/, "")
76
+ .replace(/[?&]$/, "");
77
+ return await this.search(withoutList, requestedBy);
78
+ }
79
+ }
80
+ const videoId = this.extractVideoId(query);
81
+ if (!videoId)
82
+ throw new Error("Invalid YouTube URL");
83
+ const info = await this.client.getBasicInfo(videoId);
84
+ const basic = info.basic_info ?? {};
85
+ const track = {
86
+ id: videoId,
87
+ title: basic.title ?? info.title ?? "Unknown title",
88
+ url: `https://www.youtube.com/watch?v=${videoId}`,
89
+ duration: toSeconds(basic.duration ?? info.duration) ?? 0,
90
+ thumbnail: basic.thumbnail?.[0]?.url ||
91
+ basic.thumbnail?.[basic.thumbnail?.length - 1]?.url ||
92
+ info.thumbnails?.[0]?.url,
93
+ requestedBy,
94
+ source: this.name,
95
+ metadata: {
96
+ author: basic.author ?? info.author?.name,
97
+ views: info.basic_info?.view_count ?? info.view_count,
98
+ },
99
+ };
100
+ return { tracks: [track] };
101
+ }
102
+ // Text search → return up to 10 video tracks
103
+ const res = await this.searchClient.search(query, {
104
+ type: "video",
105
+ });
106
+ const items = res?.items || res?.videos || res?.results || [];
107
+ const tracks = items.slice(0, 10).map((v) => {
108
+ const id = v.id || v.video_id || v.videoId || v.identifier;
109
+ const title = v.title?.text ?? v.title ?? v.headline ?? "Unknown title";
110
+ const duration = toSeconds(v.duration?.text ?? v.duration?.seconds ?? v.duration ?? v.length_text);
111
+ const thumbnail = v.thumbnails?.[0]?.url ||
112
+ v.thumbnail?.url ||
113
+ v.thumbnail?.thumbnails?.[0]?.url;
114
+ const author = v.author?.name ?? v.channel?.name ?? v.owner?.name;
115
+ const views = v.view_count ?? v.views ?? v.short_view_count ?? v.stats?.view_count;
116
+ const track = {
117
+ id: String(id),
118
+ title,
119
+ url: `https://www.youtube.com/watch?v=${id}`,
120
+ duration: Number(duration) || 0,
121
+ thumbnail,
122
+ requestedBy,
123
+ source: this.name,
124
+ metadata: { author, views },
125
+ };
126
+ return track;
127
+ });
128
+ return { tracks };
129
+ }
130
+ async extractPlaylist(url, requestedBy) {
131
+ await this.ready;
132
+ const listId = this.extractListId(url);
133
+ if (!listId)
134
+ return [];
135
+ try {
136
+ const playlist = await this.client.getPlaylist(listId);
137
+ const videos = playlist?.videos || playlist?.items || [];
138
+ return videos.map((v) => {
139
+ const id = v.id || v.video_id || v.videoId;
140
+ const title = v.title?.text ?? v.title;
141
+ const duration = toSeconds(v.duration?.text ?? v.duration);
142
+ const thumb = v.thumbnails?.[0]?.url || v.thumbnail?.url;
143
+ const author = v.author?.name ?? v.channel?.name;
144
+ const views = v.view_count ?? v.views;
145
+ const track = {
146
+ id: String(id),
147
+ title,
148
+ url: `https://www.youtube.com/watch?v=${id}`,
149
+ duration: Number(duration) || 0,
150
+ thumbnail: thumb,
151
+ requestedBy,
152
+ source: this.name,
153
+ metadata: { author, views, playlist: listId },
154
+ };
155
+ return track;
156
+ });
157
+ }
158
+ catch {
159
+ // If playlist fetch fails, return empty to keep optional contract intact
160
+ return [];
161
+ }
162
+ }
163
+ async getStream(track) {
164
+ await this.ready;
165
+ const id = this.extractVideoId(track.url) || track.id;
166
+ if (!id)
167
+ throw new Error("Invalid track id");
168
+ try {
169
+ const stream = await this.client.download(id, {
170
+ type: "audio",
171
+ quality: "best",
172
+ });
173
+ return {
174
+ stream,
175
+ type: "arbitrary",
176
+ metadata: track.metadata,
177
+ };
178
+ }
179
+ catch (e) {
180
+ try {
181
+ const info = await this.client.getBasicInfo(id);
182
+ // Prefer m4a audio-only formats first
183
+ let format = info?.chooseFormat?.({
184
+ type: "audio",
185
+ quality: "best",
186
+ });
187
+ if (!format && info?.formats?.length) {
188
+ const audioOnly = info.formats.filter((f) => f.mime_type?.includes("audio"));
189
+ audioOnly.sort((a, b) => (b.bitrate || 0) - (a.bitrate || 0));
190
+ format = audioOnly[0];
191
+ }
192
+ if (!format)
193
+ throw new Error("No audio format available");
194
+ let url = undefined;
195
+ if (typeof format.decipher === "function") {
196
+ url = format.decipher(this.client.session.player);
197
+ }
198
+ if (!url)
199
+ url = format.url;
200
+ if (!url)
201
+ throw new Error("No valid URL to decipher");
202
+ const res = await fetch(url);
203
+ if (!res.ok || !res.body) {
204
+ throw new Error(`HTTP ${res.status}`);
205
+ }
206
+ return {
207
+ stream: res.body,
208
+ type: "arbitrary",
209
+ metadata: {
210
+ ...track.metadata,
211
+ itag: format.itag,
212
+ mime: format.mime_type,
213
+ },
214
+ };
215
+ }
216
+ catch (inner) {
217
+ throw new Error(`Failed to get YouTube stream: ${inner?.message || inner}`);
218
+ }
219
+ }
220
+ }
221
+ async getRelatedTracks(trackURL, opts = {}) {
222
+ await this.ready;
223
+ const videoId = this.extractVideoId(trackURL);
224
+ const info = await await this.searchClient.getInfo(videoId);
225
+ const related = info?.watch_next_feed || [];
226
+ const offset = opts.offset ?? 0;
227
+ const limit = opts.limit ?? 5;
228
+ const relatedfilter = related.filter((tr) => !(opts?.history ?? []).some((t) => t.url === tr.url));
229
+ return relatedfilter.slice(offset, offset + limit).map((v) => {
230
+ const id = v.id || v.video_id || v.videoId || v.content_id;
231
+ const videometa = v?.metadata;
232
+ return {
233
+ id: String(id),
234
+ title: videometa.title.text ?? "Unknown title",
235
+ url: `https://www.youtube.com/watch?v=${id}`,
236
+ duration: Number(v.length_seconds || toSeconds(v.duration)) || 0,
237
+ thumbnail: v.thumbnails?.[0]?.url ||
238
+ v.thumbnail?.url ||
239
+ v.content_image?.image[0]?.url,
240
+ requestedBy: "auto",
241
+ source: this.name,
242
+ metadata: { author: v.author, views: v.view_count },
243
+ };
244
+ });
245
+ }
246
+ async getFallback(track) {
247
+ try {
248
+ const result = await this.search(track.title, track.requestedBy);
249
+ const first = result.tracks[0];
250
+ if (!first)
251
+ throw new Error("No fallback track found");
252
+ return await this.getStream(first);
253
+ }
254
+ catch (e) {
255
+ throw new Error(`YouTube fallback search failed: ${e?.message || e}`);
256
+ }
257
+ }
258
+ extractVideoId(input) {
259
+ try {
260
+ const u = new URL(input);
261
+ if (u.hostname.includes("youtu.be")) {
262
+ return u.pathname.split("/").filter(Boolean)[0] || null;
263
+ }
264
+ if (u.hostname.includes("youtube.com")) {
265
+ // watch?v=, shorts/, embed/
266
+ if (u.searchParams.get("v"))
267
+ return u.searchParams.get("v");
268
+ const path = u.pathname;
269
+ if (path.startsWith("/shorts/"))
270
+ return path.replace("/shorts/", "");
271
+ if (path.startsWith("/embed/"))
272
+ return path.replace("/embed/", "");
273
+ }
274
+ return null;
275
+ }
276
+ catch {
277
+ return null;
278
+ }
279
+ }
280
+ extractListId(input) {
281
+ try {
282
+ const u = new URL(input);
283
+ return u.searchParams.get("list");
284
+ }
285
+ catch {
286
+ return null;
287
+ }
288
+ }
289
+ }
290
+ exports.YouTubePlugin = YouTubePlugin;
291
+ function toSeconds(d) {
292
+ if (typeof d === "number")
293
+ return d;
294
+ if (typeof d === "string") {
295
+ // mm:ss or hh:mm:ss
296
+ const parts = d.split(":").map(Number);
297
+ if (parts.some((n) => Number.isNaN(n)))
298
+ return undefined;
299
+ if (parts.length === 3)
300
+ return parts[0] * 3600 + parts[1] * 60 + parts[2];
301
+ if (parts.length === 2)
302
+ return parts[0] * 60 + parts[1];
303
+ const asNum = Number(d);
304
+ return Number.isFinite(asNum) ? asNum : undefined;
305
+ }
306
+ if (d && typeof d === "object") {
307
+ if (typeof d.seconds === "number")
308
+ return d.seconds;
309
+ if (typeof d.milliseconds === "number")
310
+ return Math.floor(d.milliseconds / 1000);
311
+ }
312
+ return undefined;
313
+ }
314
+ //# sourceMappingURL=YouTubePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YouTubePlugin.js","sourceRoot":"","sources":["../../src/plugins/YouTubePlugin.ts"],"names":[],"mappings":"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"}
@@ -135,17 +135,20 @@ export declare class Player extends EventEmitter {
135
135
  */
136
136
  search(query: string, requestedBy: string): Promise<SearchResult>;
137
137
  /**
138
- * Play a track or search query
138
+ * Play a track, search query, search result, or play from queue
139
139
  *
140
- * @param {string | Track} query - Track URL, search query, or Track object
140
+ * @param {string | Track | SearchResult | null} query - Track URL, search query, Track object, SearchResult, or null for play
141
141
  * @param {string} requestedBy - User ID who requested the track
142
142
  * @returns {Promise<boolean>} True if playback started successfully
143
143
  * @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);
144
+ * await player.play("Never Gonna Give You Up", userId); // Search query
145
+ * await player.play("https://youtube.com/watch?v=dQw4w9WgXcQ", userId); // Direct URL
146
+ * await player.play("tts: Hello everyone!", userId); // Text-to-Speech
147
+ * await player.play(trackObject, userId); // Track object
148
+ * await player.play(searchResult, userId); // SearchResult object
149
+ * await player.play(null); // play from queue
147
150
  */
148
- play(query: string | Track, requestedBy?: string): Promise<boolean>;
151
+ play(query: string | Track | SearchResult | null, requestedBy?: string): Promise<boolean>;
149
152
  /**
150
153
  * Interrupt current music with a TTS track. Pauses music, swaps the
151
154
  * subscription to a dedicated TTS player, plays TTS, then resumes.
@@ -269,14 +272,16 @@ export declare class Player extends EventEmitter {
269
272
  */
270
273
  stop(): boolean;
271
274
  /**
272
- * Skip to the next track
275
+ * Skip to the next track or skip to a specific index
273
276
  *
277
+ * @param {number} index - Optional index to skip to (0 = next track)
274
278
  * @returns {boolean} True if skipped successfully
275
279
  * @example
276
- * const skipped = player.skip();
280
+ * const skipped = player.skip(); // Skip to next track
281
+ * const skippedToIndex = player.skip(2); // Skip to track at index 2
277
282
  * console.log(`Skipped: ${skipped}`);
278
283
  */
279
- skip(): boolean;
284
+ skip(index?: number): boolean;
280
285
  /**
281
286
  * Go back to the previous track in history and play it.
282
287
  *
@@ -287,15 +292,20 @@ export declare class Player extends EventEmitter {
287
292
  */
288
293
  previous(): Promise<boolean>;
289
294
  /**
290
- * Loop the current track
295
+ * Loop the current track or queue
291
296
  *
292
- * @param {LoopMode} mode - The loop mode to set
297
+ * @param {LoopMode | number} mode - The loop mode to set ("off", "track", "queue") or number (0=off, 1=track, 2=queue)
293
298
  * @returns {LoopMode} The loop mode
294
299
  * @example
295
- * const loopMode = player.loop("track");
300
+ * const loopMode = player.loop("track"); // Loop current track
301
+ * const loopQueue = player.loop("queue"); // Loop entire queue
302
+ * const loopTrack = player.loop(1); // Loop current track (same as "track")
303
+ * const loopQueueNum = player.loop(2); // Loop entire queue (same as "queue")
304
+ * const noLoop = player.loop("off"); // No loop
305
+ * const noLoopNum = player.loop(0); // No loop (same as "off")
296
306
  * console.log(`Loop mode: ${loopMode}`);
297
307
  */
298
- loop(mode?: LoopMode): LoopMode;
308
+ loop(mode?: LoopMode | number): LoopMode;
299
309
  /**
300
310
  * Set the auto-play mode
301
311
  *
@@ -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":"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"}