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:
parent
0940987809
commit
e2d488bf21
|
@ -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);
|
||||
|
|
|
@ -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> => {
|
||||
|
|
Loading…
Reference in New Issue