Skip to content

Commit

Permalink
feat(track.service): add search by name
Browse files Browse the repository at this point in the history
  • Loading branch information
schmooky committed Sep 4, 2019
1 parent b2c4a48 commit 8e469af
Showing 1 changed file with 34 additions and 33 deletions.
67 changes: 34 additions & 33 deletions src/services/track.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,38 @@ const findPlaylist = async (username: string, playlistID: string): Promise<Track
}
};

/**
* Принимает название трека и возвращает результаты поиска
*
* @param {string} trackName Название трека
* @returns {Promise<Track[]>} Результаты поиска трека по названию
*/
const findTrackByName = async (trackName: string): Promise<Track> => {
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 Ссылка на контент
Expand Down Expand Up @@ -170,39 +202,8 @@ const findContentByURL = async (url: string): Promise<Track[]> => {
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<Track[]>} Результаты поиска трека по названию
*/
const findTrackByName = async (trackName: string): Promise<Track[]> => {
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);

Expand Down

0 comments on commit 8e469af

Please sign in to comment.