From 8e469afb050d3c3713f88d07eafcd2e2deeaa5dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BB=D1=8C=D0=B5=D0=B2=20=D0=94?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Wed, 4 Sep 2019 23:14:46 +0300 Subject: [PATCH] feat(track.service): add search by name --- src/services/track.service.ts | 67 ++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/src/services/track.service.ts b/src/services/track.service.ts index 29a0ffb..6de91cb 100644 --- a/src/services/track.service.ts +++ b/src/services/track.service.ts @@ -131,6 +131,38 @@ const findPlaylist = async (username: string, playlistID: string): Promise} Результаты поиска трека по названию + */ +const findTrackByName = async (trackName: string): Promise => { + try { + const JsonURL = `https://api.music.yandex.net/search?type=track&text=${trackName.replace(/ /g, '%20')}&page=0`; + + const response = await axios.get(JsonURL); + + if (!response.data.result) { + return Promise.reject(Error(`${trackName} not found`)); + } + + const [track] = response.data.result.tracks.results; + + const trackInfo = await downloadInfo(track.storageDir); + const trackURL = createTrackURL(trackInfo); + + return { + ...track, + trackURL, + }; + } catch (error) { + logger.error(error); + + return error; + } +}; + /** * Принимает ссылку на контент и возвращает массив с найденным контентом * @param {string} url Ссылка на контент @@ -170,39 +202,8 @@ const findContentByURL = async (url: string): Promise => { return Promise.reject(Error(`${url} is wrong Yandex URL`)); } - return Promise.reject(Error(`${url} is wrong URL`)); - } catch (error) { - logger.error(error); - - return error; - } -}; - -/** - * Принимает название трека и возвращает результаты поиска - * - * @param {string} trackName Название трека - * @returns {Promise} Результаты поиска трека по названию - */ -const findTrackByName = async (trackName: string): Promise => { - try { - const JsonURL = `https://api.music.yandex.net/search?type=track&text=${trackName}&page=0`; - - const response = await axios.get(JsonURL); - - if (!response.data.result) { - return Promise.reject(Error(`${trackName} not found`)); - } - - const [track] = response.data.result.tracks.results; - - const trackInfo = await downloadInfo(track.storageDir); - const trackURL = createTrackURL(trackInfo); - - return { - ...track, - trackURL, - }; + const track = await findTrackByName(url); + return [track]; } catch (error) { logger.error(error);