getTrackDownloadUrl: return null instead of throwing an error

e.g. Deezer can't find the song in the requested format: return null
This commit is contained in:
Namkhai B 2021-08-03 16:31:51 -05:00
parent 0940987809
commit e2d488bf21
No known key found for this signature in database
GPG Key ID: 9DC021F538318528
2 changed files with 6 additions and 2 deletions

View File

@ -147,6 +147,7 @@ if (process.env.CI) {
test('DOWNLOAD TRACK128 & ADD METADATA', async (t) => {
const track = await api.getTrackInfo(SNG_ID);
const trackData = await getTrackDownloadUrl(track, 1);
if (!trackData) throw new Error("Selected track+quality are unavailable");
const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
t.truthy(data);
@ -165,6 +166,7 @@ if (process.env.CI) {
// test('TRACK128 WITHOUT ALBUM INFO', async (t) => {
// const track = await api.getTrackInfo('912254892');
// const trackData = await getTrackDownloadUrl(track, 1);
// if (!trackData) throw new Error("Selected track+quality are unavailable");
// const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
// t.truthy(data);
@ -185,6 +187,7 @@ if (process.env.CI) {
test('DOWNLOAD TRACK320 & ADD METADATA', async (t) => {
const track = await api.getTrackInfo(SNG_ID);
const trackData = await getTrackDownloadUrl(track, 3);
if (!trackData) throw new Error("Selected track+quality are unavailable");
const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
t.truthy(data);
@ -203,6 +206,7 @@ if (process.env.CI) {
test('DOWNLOAD TRACK1411 & ADD METADATA', async (t) => {
const track = await api.getTrackInfo(SNG_ID);
const trackData = await getTrackDownloadUrl(track, 9);
if (!trackData) throw new Error("Selected track+quality are unavailable");
const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
t.truthy(data);

View File

@ -65,7 +65,7 @@ const getTrackUrlFromServer = async (track_token: string, format: string): Promi
* @param track Track info json returned from `getTrackInfo`
* @param quality 1 = 128kbps, 3 = 320kbps and 9 = flac (around 1411kbps)
*/
export const getTrackDownloadUrl = async (track: trackType, quality: number): Promise<{trackUrl: string, isEncrypted: boolean, fileSize: number}> => {
export const getTrackDownloadUrl = async (track: trackType, quality: number): Promise<{trackUrl: string, isEncrypted: boolean, fileSize: number} | null> => {
let formatName: string;
switch (quality) {
case 9:
@ -113,7 +113,7 @@ export const getTrackDownloadUrl = async (track: trackType, quality: number): Pr
fileSize: fileSize,
};
}
throw new Error(`Forbidden to access ${url}`);
return null;
};
const testUrl = async (url: string): Promise<number> => {