@khang07/zing-mp3-api 1.0.1 → 1.3.2

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/dist/esm/index.js CHANGED
@@ -1,10 +1,21 @@
1
1
  import axios from 'axios';
2
2
  import m3u8stream from 'm3u8stream';
3
- import { Readable, PassThrough } from 'node:stream';
3
+ import { PassThrough } from 'node:stream';
4
+ import { URL } from 'node:url';
4
5
  import { Cookies } from './utils/cookies.js';
5
6
  import { createSignature } from './utils/encrypt.js';
6
7
  import { Lapse } from './utils/lapse.js';
7
- class ZingClient {
8
+ import { createArtist, createMedia, createSearchMedia, createPlayList, createSearchArtist, createSearchPlayList } from './utils/refined.js';
9
+ const isURL = (value) => {
10
+ try {
11
+ new URL(value);
12
+ return true;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ };
18
+ class Client {
8
19
  static BASE_URL = 'https://zingmp3.vn/';
9
20
  static VERSION_URL_V1 = '1.6.34';
10
21
  static VERSION_URL_V2 = '1.13.13';
@@ -12,35 +23,45 @@ class ZingClient {
12
23
  static SECRET_KEY_V2 = '10a01dcf33762d3a204cb96429918ff6';
13
24
  static API_KEY_V1 = '88265e23d4284f25963e6eedac8fbfa3';
14
25
  static API_KEY_V2 = '38e8643fb0dc04e8d65b99994d3dafff';
15
- jar;
16
- instance;
17
- get ctime() {
18
- return Math.floor(Date.now() / 1000).toString();
26
+ static API_VIDEO_PATH = '/api/v2/page/get/video';
27
+ static API_MUSIC_PATH = '/api/v2/song/get/streaming';
28
+ static EXTRA_API_MUSIC_PATH = '/api/song/get-song-info';
29
+ static API_SEARCH_PATH = '/api/v2/search';
30
+ static API_PLAYLIST_PATH = '/api/v2/page/get/playlist';
31
+ static API_MEDIA_DETAILS_PATH = '/api/v2/song/get/info';
32
+ static API_ARTIST_PATH = '/api/v2/page/get/artist';
33
+ static getIDFromURL(url) {
34
+ if (typeof url !== 'string' || !url.trim().length)
35
+ throw new Lapse('URL must be a non-empty string', 'ERROR_INVALID_URL');
36
+ const match = url.match(/\/([A-Z0-9]{8})\.html(?:\?|#|$)/i) || url.match(/^https?:\/\/zingmp3\.vn\/([^/?#]+)\/?(?:[?#].*)?$/i);
37
+ if (!match)
38
+ throw new Lapse('Could not extract ID from URL', 'ERROR_INVALID_URL');
39
+ return match[1];
19
40
  }
20
- maxRate;
41
+ ctime = Math.floor(Date.now() / 1000).toString();
42
+ instance;
43
+ maxLoad;
44
+ maxHighWaterMark;
45
+ userAgent;
46
+ jar;
21
47
  constructor(options = {}) {
22
- this.maxRate = [
23
- options?.maxRate?.[0] ?? 100 * 1024,
24
- options?.maxRate?.[1] ?? 16 * 1024
25
- ];
26
- this.jar = new Cookies();
27
- const axiosOptions = {
28
- baseURL: ZingClient.BASE_URL,
48
+ this.maxLoad = options.maxLoad ?? 1024 * 1024;
49
+ this.maxHighWaterMark = options.maxHighWaterMark ?? 16 * 1024;
50
+ this.userAgent = options?.userAgent ?? 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3';
51
+ this.jar = options.jar instanceof Cookies ? options.jar : new Cookies();
52
+ this.instance = axios.create({
53
+ baseURL: Client.BASE_URL,
29
54
  params: {
30
- version: ZingClient.VERSION_URL_V1,
31
- apiKey: ZingClient.API_KEY_V1,
55
+ version: Client.VERSION_URL_V1,
56
+ apiKey: Client.API_KEY_V1,
32
57
  ctime: this.ctime
33
58
  },
34
- maxRate: [
35
- 100 * 1024,
36
- this.maxRate[0]
37
- ],
59
+ maxRate: this.maxLoad,
38
60
  headers: {
39
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
61
+ 'User-Agent': this.userAgent
40
62
  }
41
- };
42
- this.instance = axios.create(axiosOptions);
43
- this.instance.interceptors.request.use((options) => {
63
+ });
64
+ this.instance.interceptors.request.use(async (options) => {
44
65
  const base = options.baseURL ?? '';
45
66
  const url = new URL(options.url ?? '/', base).toString();
46
67
  const additionalHeaders = this.jar.applyToHeaders(url);
@@ -53,38 +74,37 @@ class ZingClient {
53
74
  const requestUrl = response.request?.res?.responseUrl ?? response.config.url;
54
75
  if (requestUrl && Array.isArray(setCookie))
55
76
  this.jar.setCookies(setCookie, requestUrl);
56
- return response;
77
+ return response.data;
57
78
  });
58
79
  }
80
+ async ensureCookies() {
81
+ if (this.jar.getCookies(Client.BASE_URL).length === 0)
82
+ void await this.instance.get('/');
83
+ }
59
84
  async video(videoID) {
60
- if (typeof videoID !== 'string' || !videoID.length)
85
+ const value = videoID instanceof URL ? videoID.toString() : videoID;
86
+ if (typeof value !== 'string' || !value.trim().length)
61
87
  throw new Lapse('ID must be a non-empty string', 'ERROR_INVALID_ID');
62
- const uri = '/api/v2/page/get/video';
63
88
  try {
64
- if (this.jar.getCookies(ZingClient.BASE_URL).length === 0)
65
- await this.instance.get('/');
66
- const response = await this.instance.get(uri, {
89
+ videoID = isURL(value) ? Client.getIDFromURL(value) : value;
90
+ void await this.ensureCookies();
91
+ const response = await this.instance.get(Client.API_VIDEO_PATH, {
67
92
  params: {
68
93
  id: videoID,
69
- sig: createSignature(uri, 'ctime=' + this.ctime + 'id=' + videoID + 'version=' + ZingClient.VERSION_URL_V1, ZingClient.SECRET_KEY_V1)
70
- },
71
- maxRate: [
72
- 100 * 1024,
73
- this.maxRate[0]
74
- ]
94
+ sig: createSignature(Client.API_VIDEO_PATH, 'ctime=' + this.ctime + 'id=' + videoID + 'version=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
95
+ }
75
96
  });
76
- const body = response.data;
77
- if (body.err !== 0)
78
- throw new Lapse(body.msg, 'ERROR_VIDEO_NOT_FOUND');
79
- const videoURL = body.data?.streaming?.hls?.['360p'];
97
+ if (response.err !== 0)
98
+ throw new Lapse('Video could not be found', 'ERROR_VIDEO_NOT_FOUND', response.err, response);
99
+ const videoURL = response.data?.streaming?.hls?.['720p'] || response.data?.streaming?.hls?.['360p'];
80
100
  if (!videoURL || !videoURL.length)
81
101
  throw new Lapse('Streaming URL not found', 'ERROR_STREAM_URL_NOT_FOUND');
82
- const streamVideo = m3u8stream(videoURL);
83
- streamVideo.once('error', (error) => {
102
+ const source = m3u8stream(videoURL);
103
+ source.once('error', (error) => {
84
104
  const lapse = new Lapse('Stream download failed', 'ERROR_STREAM_DOWNLOAD', void 0, error);
85
- streamVideo.destroy(lapse);
105
+ source.destroy(lapse);
86
106
  });
87
- return streamVideo;
107
+ return source;
88
108
  }
89
109
  catch (error) {
90
110
  if (error instanceof Lapse)
@@ -92,86 +112,87 @@ class ZingClient {
92
112
  throw new Lapse('Failed to fetch video stream', 'ERROR_VIDEO_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
93
113
  }
94
114
  }
95
- videoSyncLike(videoID) {
96
- const video = new PassThrough({ highWaterMark: this.maxRate[1] });
115
+ videoSync(videoID) {
116
+ const video = new PassThrough({ highWaterMark: this.maxHighWaterMark });
117
+ let copySource;
118
+ let closed = false;
119
+ let sourceDestroyed = false;
120
+ const destroy = () => {
121
+ if (!copySource || sourceDestroyed)
122
+ return;
123
+ sourceDestroyed = true;
124
+ if (!copySource)
125
+ return;
126
+ copySource.unpipe(video);
127
+ if (!copySource.destroyed)
128
+ copySource.destroy();
129
+ };
130
+ const closer = () => {
131
+ closed = true;
132
+ destroy();
133
+ };
134
+ video.once('close', closer);
135
+ video.once('error', closer);
97
136
  void this.video(videoID)
98
137
  .then((source) => {
138
+ copySource = source;
99
139
  source.once('error', (error) => {
100
140
  const lapse = error instanceof Lapse ? error : new Lapse('Stream download failed', 'ERROR_STREAM_DOWNLOAD', void 0, error);
101
141
  video.destroy(lapse);
102
142
  });
103
- const destroy = () => {
104
- if (!source.destroyed)
105
- source.destroy();
106
- };
107
- video.once('close', destroy);
108
- video.once('error', destroy);
143
+ if (closed || video.destroyed) {
144
+ destroy();
145
+ return;
146
+ }
109
147
  source.pipe(video);
110
148
  })
111
149
  .catch((error) => {
112
- if (error instanceof Lapse)
113
- throw error;
114
- throw new Lapse('Failed to fetch video stream', 'ERROR_VIDEO_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
150
+ const lapse = error instanceof Lapse ? error : new Lapse('Failed to fetch video stream', 'ERROR_VIDEO_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
151
+ video.destroy(lapse);
115
152
  });
116
153
  return video;
117
154
  }
118
155
  async music(musicID) {
119
- if (typeof musicID !== 'string' || !musicID.trim().length)
156
+ const value = musicID instanceof URL ? musicID.toString() : musicID;
157
+ if (typeof value !== 'string' || !value.trim().length)
120
158
  throw new Lapse('ID must be a non-empty string', 'ERROR_INVALID_ID');
121
- let musicURL;
122
- const uri = '/api/v2/song/get/streaming';
123
159
  try {
124
- if (this.jar.getCookies(ZingClient.BASE_URL).length === 0)
125
- await this.instance.get('/');
126
- const response = await this.instance.get(uri, {
160
+ musicID = isURL(value) ? Client.getIDFromURL(value) : value;
161
+ void await this.ensureCookies();
162
+ const response = await this.instance.get(Client.API_MUSIC_PATH, {
127
163
  params: {
128
164
  id: musicID,
129
- sig: createSignature(uri, 'ctime=' + this.ctime + 'id=' + musicID + 'version=' + ZingClient.VERSION_URL_V1, ZingClient.SECRET_KEY_V1)
130
- },
131
- maxRate: [
132
- 100 * 1024,
133
- this.maxRate[0]
134
- ]
165
+ sig: createSignature(Client.API_MUSIC_PATH, 'ctime=' + this.ctime + 'id=' + musicID + 'version=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
166
+ }
135
167
  });
136
- const body = response.data;
137
- if (body.err === -1150) {
138
- let retrySuccess = false;
139
- const uri_v2 = '/api/song/get-song-info';
140
- for (let step = 0; step < 2; step++) {
141
- const retry = await this.instance.get(uri_v2, {
168
+ let musicURL = response.data?.[320] && response.data[320] !== 'VIP' ? response.data[320] : response.data?.[128];
169
+ if (response.err === -1150) {
170
+ const retry = async (step, before) => {
171
+ if (step > 3)
172
+ throw new Lapse('Music requested by VIP, PRI', 'ERROR_MUSIC_VIP_ONLY', before ? before.err : void 0, before);
173
+ const retryData = await this.instance.get(Client.EXTRA_API_MUSIC_PATH, {
142
174
  params: {
143
175
  id: musicID,
144
- api_key: ZingClient.API_KEY_V2,
145
- sig: createSignature('/song/get-song-info', 'ctime=' + this.ctime + 'id=' + musicID, ZingClient.SECRET_KEY_V2),
176
+ api_key: Client.API_KEY_V2,
177
+ sig: createSignature('/song/get-song-info', 'ctime=' + this.ctime + 'id=' + musicID, Client.SECRET_KEY_V2),
146
178
  version: void 0,
147
179
  apiKey: void 0
148
- },
149
- maxRate: [
150
- 100 * 1024,
151
- this.maxRate[0]
152
- ]
180
+ }
153
181
  });
154
- if (retry.data.err === 0) {
155
- retrySuccess = true;
156
- musicURL = retry.data.data?.streaming?.default?.[128];
157
- break;
158
- }
159
- }
160
- if (!retrySuccess)
161
- throw new Lapse('Music requested by VIP, PRI', 'ERROR_MUSIC_VIP_ONLY');
182
+ if (retryData.err === 0)
183
+ return retryData.data?.streaming?.default?.[128];
184
+ return retry(step + 1, retryData);
185
+ };
186
+ musicURL = await retry(0);
162
187
  }
163
- else if (body.err === 0)
164
- musicURL = body.data?.[128];
165
- else
166
- throw new Lapse('This song could not be found', 'ERROR_MUSIC_NOT_FOUND');
167
188
  if (!musicURL || !musicURL.length)
168
189
  throw new Lapse('Streaming URL not found', 'ERROR_STREAM_URL_NOT_FOUND');
169
- const streamMusic = await this.instance.get(musicURL, { responseType: 'stream' });
170
- streamMusic.data.once('error', (error) => {
171
- const lapse = new Lapse('Stream download failed', 'ERROR_STREAM_DOWNLOAD', streamMusic.status, error);
172
- streamMusic.data.destroy(lapse);
190
+ const source = await this.instance.get(musicURL, { responseType: 'stream' });
191
+ source.once('error', (error) => {
192
+ const lapse = new Lapse('Stream download failed', 'ERROR_STREAM_DOWNLOAD', void 0, error);
193
+ source.destroy(lapse);
173
194
  });
174
- return streamMusic.data;
195
+ return source;
175
196
  }
176
197
  catch (error) {
177
198
  if (error instanceof Lapse)
@@ -179,36 +200,214 @@ class ZingClient {
179
200
  throw new Lapse('Failed to fetch music stream', 'ERROR_MUSIC_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
180
201
  }
181
202
  }
182
- musicSyncLike(musicID) {
183
- const music = new PassThrough({ highWaterMark: this.maxRate[1] });
203
+ musicSync(musicID) {
204
+ const music = new PassThrough({ highWaterMark: this.maxHighWaterMark });
205
+ let copySource;
206
+ let closed = false;
207
+ let sourceDestroyed = false;
208
+ const destroy = () => {
209
+ if (!copySource || sourceDestroyed)
210
+ return;
211
+ sourceDestroyed = true;
212
+ copySource.unpipe(music);
213
+ if (!copySource.destroyed)
214
+ copySource.destroy();
215
+ };
216
+ const closer = () => {
217
+ closed = true;
218
+ destroy();
219
+ };
220
+ music.once('close', closer);
221
+ music.once('error', closer);
184
222
  void this.music(musicID)
185
223
  .then((source) => {
224
+ copySource = source;
186
225
  source.once('error', (error) => {
187
226
  const lapse = error instanceof Lapse ? error : new Lapse('Stream download failed', 'ERROR_STREAM_DOWNLOAD', void 0, error);
188
227
  music.destroy(lapse);
189
228
  });
190
- const destroy = () => {
191
- if (!source.destroyed)
192
- source.destroy();
193
- };
194
- music.once('close', destroy);
195
- music.once('error', destroy);
229
+ if (closed || music.destroyed) {
230
+ destroy();
231
+ return;
232
+ }
196
233
  source.pipe(music);
197
234
  })
198
235
  .catch((error) => {
199
- if (error instanceof Lapse)
200
- throw error;
201
- throw new Lapse('Failed to fetch music stream', 'ERROR_MUSIC_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
236
+ const lapse = error instanceof Lapse ? error : new Lapse('Failed to fetch music stream', 'ERROR_MUSIC_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
237
+ music.destroy(lapse);
202
238
  });
203
239
  return music;
204
240
  }
241
+ async playlist(playlistID) {
242
+ const value = playlistID instanceof URL ? playlistID.toString() : playlistID;
243
+ if (typeof value !== 'string' || !value.trim().length)
244
+ throw new Lapse('ID must be a non-empty string', 'ERROR_INVALID_ID');
245
+ try {
246
+ playlistID = isURL(value) ? Client.getIDFromURL(value) : value;
247
+ void await this.ensureCookies();
248
+ const response = await this.instance.get(Client.API_PLAYLIST_PATH, {
249
+ params: {
250
+ id: playlistID,
251
+ sig: createSignature(Client.API_PLAYLIST_PATH, 'ctime=' + this.ctime + 'id=' + playlistID + 'version=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
252
+ }
253
+ });
254
+ if (response.err !== 0)
255
+ throw new Lapse('Could not find playlist', 'ERROR_PLAYLIST_NOT_FOUND', response.err, response);
256
+ return createPlayList(response.data);
257
+ }
258
+ catch (error) {
259
+ if (error instanceof Lapse)
260
+ throw error;
261
+ throw new Lapse('Failed to fetch playlist', 'ERROR_PLAYLIST_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
262
+ }
263
+ }
264
+ async artist(aliasID) {
265
+ const value = aliasID instanceof URL ? aliasID.toString() : aliasID;
266
+ if (typeof value !== 'string' || !value.trim().length)
267
+ throw new Lapse('ID must be a non-empty string', 'ERROR_INVALID_ID');
268
+ try {
269
+ aliasID = isURL(value) ? Client.getIDFromURL(value) : value;
270
+ void await this.ensureCookies();
271
+ const response = await this.instance.get(Client.API_ARTIST_PATH, {
272
+ params: {
273
+ alias: aliasID,
274
+ sig: createSignature(Client.API_ARTIST_PATH, 'ctime=' + this.ctime + 'version=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
275
+ }
276
+ });
277
+ if (response.err === -108)
278
+ throw new Lapse('Artist not found', 'ERROR_ARTIST_NOT_FOUND', response.err, response);
279
+ if (response.err !== 0)
280
+ throw new Lapse('Could not fetch artist', 'ERROR_ARTIST_FETCH', response.err, response);
281
+ return createArtist(response.data);
282
+ }
283
+ catch (error) {
284
+ if (error instanceof Lapse)
285
+ throw error;
286
+ throw new Lapse('Failed to fetch artist', 'ERROR_ARTIST_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
287
+ }
288
+ }
289
+ async mediaDetails(mediaID) {
290
+ const value = mediaID instanceof URL ? mediaID.toString() : mediaID;
291
+ if (typeof value !== 'string' || !value.trim().length)
292
+ throw new Lapse('ID must be a non-empty string', 'ERROR_INVALID_ID');
293
+ try {
294
+ mediaID = isURL(value) ? Client.getIDFromURL(value) : value;
295
+ void await this.ensureCookies();
296
+ const response = await this.instance.get(Client.API_MEDIA_DETAILS_PATH, {
297
+ params: {
298
+ id: mediaID,
299
+ sig: createSignature(Client.API_MEDIA_DETAILS_PATH, 'ctime=' + this.ctime + 'id=' + mediaID + 'version=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
300
+ }
301
+ });
302
+ if (response.err === -1023)
303
+ throw new Lapse('Media not found', 'ERROR_MEDIA_NOT_FOUND', response.err, response);
304
+ if (response.err !== 0)
305
+ throw new Lapse('Could not fetch media', 'ERROR_MEDIA_FETCH', response.err, response);
306
+ return createMedia(response.data);
307
+ }
308
+ catch (error) {
309
+ if (error instanceof Lapse)
310
+ throw error;
311
+ throw new Lapse('Failed to fetch media', 'ERROR_MEDIA_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
312
+ }
313
+ }
314
+ async searchMusic(query) {
315
+ if (typeof query !== 'string' || !query.trim().length)
316
+ throw new Lapse('Query must be a non-empty string', 'ERROR_INVALID_QUERY');
317
+ try {
318
+ void await this.ensureCookies();
319
+ const response = await this.instance.get(Client.API_SEARCH_PATH, {
320
+ params: {
321
+ q: query,
322
+ type: 'song',
323
+ page: 1,
324
+ count: 20,
325
+ sig: createSignature(Client.API_SEARCH_PATH, 'count=20ctime=' + this.ctime + 'page=1type=songversion=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
326
+ }
327
+ });
328
+ if (response.err !== 0)
329
+ throw new Lapse('Search could not be fetched', 'ERROR_SEARCH_FAILED', response.err, response);
330
+ return response.data.items.map(createMedia);
331
+ }
332
+ catch (error) {
333
+ if (error instanceof Lapse)
334
+ throw error;
335
+ throw new Lapse('Search could not be fetch', 'ERROR_SEARCH_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
336
+ }
337
+ }
338
+ async searchVideo(query) {
339
+ if (typeof query !== 'string' || !query.trim().length)
340
+ throw new Lapse('Query must be a non-empty string', 'ERROR_INVALID_QUERY');
341
+ try {
342
+ void await this.ensureCookies();
343
+ const response = await this.instance.get(Client.API_SEARCH_PATH, {
344
+ params: {
345
+ q: query,
346
+ type: 'video',
347
+ page: 1,
348
+ count: 20,
349
+ sig: createSignature(Client.API_SEARCH_PATH, 'count=20ctime=' + this.ctime + 'page=1type=videoversion=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
350
+ }
351
+ });
352
+ if (response.err !== 0)
353
+ throw new Lapse('Search could not be fetched', 'ERROR_SEARCH_FAILED', response.err, response);
354
+ return response.data.items.filter(item => item.artists).map(createSearchMedia);
355
+ }
356
+ catch (error) {
357
+ if (error instanceof Lapse)
358
+ throw error;
359
+ throw new Lapse('Search could not be fetch', 'ERROR_SEARCH_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
360
+ }
361
+ }
362
+ async searchList(query) {
363
+ if (typeof query !== 'string' || !query.trim().length)
364
+ throw new Lapse('Query must be a non-empty string', 'ERROR_INVALID_QUERY');
365
+ try {
366
+ void await this.ensureCookies();
367
+ const response = await this.instance.get(Client.API_SEARCH_PATH, {
368
+ params: {
369
+ q: query,
370
+ type: 'playlist',
371
+ page: 1,
372
+ count: 20,
373
+ sig: createSignature(Client.API_SEARCH_PATH, 'count=20ctime=' + this.ctime + 'page=1type=playlistversion=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
374
+ }
375
+ });
376
+ if (response.err !== 0)
377
+ throw new Lapse('Search could not be fetched', 'ERROR_SEARCH_FAILED', response.err, response);
378
+ return response.data.items.map(createSearchPlayList);
379
+ }
380
+ catch (error) {
381
+ if (error instanceof Lapse)
382
+ throw error;
383
+ throw new Lapse('Search could not be fetch', 'ERROR_SEARCH_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
384
+ }
385
+ }
386
+ async searchArtist(query) {
387
+ if (typeof query !== 'string' || !query.trim().length)
388
+ throw new Lapse('Query must be a non-empty string', 'ERROR_INVALID_QUERY');
389
+ try {
390
+ void await this.ensureCookies();
391
+ const response = await this.instance.get(Client.API_SEARCH_PATH, {
392
+ params: {
393
+ q: query,
394
+ type: 'artist',
395
+ page: 1,
396
+ count: 20,
397
+ sig: createSignature(Client.API_SEARCH_PATH, 'count=20ctime=' + this.ctime + 'page=1type=artistversion=' + Client.VERSION_URL_V1, Client.SECRET_KEY_V1)
398
+ }
399
+ });
400
+ if (response.err !== 0)
401
+ throw new Lapse('Search could not be fetched', 'ERROR_SEARCH_FAILED', response.err, response);
402
+ return response.data.items.map(createSearchArtist);
403
+ }
404
+ catch (error) {
405
+ if (error instanceof Lapse)
406
+ throw error;
407
+ throw new Lapse('Search could not be fetch', 'ERROR_SEARCH_FETCH', axios.isAxiosError(error) ? error.response?.status : void 0, error);
408
+ }
409
+ }
205
410
  }
206
- const clientOptions = {
207
- maxRate: [
208
- 100 * 1024,
209
- 16 * 1024
210
- ]
211
- };
212
- const client = new ZingClient(clientOptions);
213
- export { client as default, ZingClient };
411
+ const client = new Client();
412
+ export { client as default, Client };
214
413
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"source/","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"source/","sources":["index.ts"],"names":[],"mappings":"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"}