mirror of
https://github.com/d-fi/d-fi-core.git
synced 2025-07-27 15:44:26 +02:00
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) => {
|
test('DOWNLOAD TRACK128 & ADD METADATA', async (t) => {
|
||||||
const track = await api.getTrackInfo(SNG_ID);
|
const track = await api.getTrackInfo(SNG_ID);
|
||||||
const trackData = await getTrackDownloadUrl(track, 1);
|
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'});
|
const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
|
||||||
|
|
||||||
t.truthy(data);
|
t.truthy(data);
|
||||||
@ -165,6 +166,7 @@ if (process.env.CI) {
|
|||||||
// test('TRACK128 WITHOUT ALBUM INFO', async (t) => {
|
// test('TRACK128 WITHOUT ALBUM INFO', async (t) => {
|
||||||
// const track = await api.getTrackInfo('912254892');
|
// const track = await api.getTrackInfo('912254892');
|
||||||
// const trackData = await getTrackDownloadUrl(track, 1);
|
// 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'});
|
// const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
|
||||||
|
|
||||||
// t.truthy(data);
|
// t.truthy(data);
|
||||||
@ -185,6 +187,7 @@ if (process.env.CI) {
|
|||||||
test('DOWNLOAD TRACK320 & ADD METADATA', async (t) => {
|
test('DOWNLOAD TRACK320 & ADD METADATA', async (t) => {
|
||||||
const track = await api.getTrackInfo(SNG_ID);
|
const track = await api.getTrackInfo(SNG_ID);
|
||||||
const trackData = await getTrackDownloadUrl(track, 3);
|
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'});
|
const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
|
||||||
|
|
||||||
t.truthy(data);
|
t.truthy(data);
|
||||||
@ -203,6 +206,7 @@ if (process.env.CI) {
|
|||||||
test('DOWNLOAD TRACK1411 & ADD METADATA', async (t) => {
|
test('DOWNLOAD TRACK1411 & ADD METADATA', async (t) => {
|
||||||
const track = await api.getTrackInfo(SNG_ID);
|
const track = await api.getTrackInfo(SNG_ID);
|
||||||
const trackData = await getTrackDownloadUrl(track, 9);
|
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'});
|
const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
|
||||||
|
|
||||||
t.truthy(data);
|
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 track Track info json returned from `getTrackInfo`
|
||||||
* @param quality 1 = 128kbps, 3 = 320kbps and 9 = flac (around 1411kbps)
|
* @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;
|
let formatName: string;
|
||||||
switch (quality) {
|
switch (quality) {
|
||||||
case 9:
|
case 9:
|
||||||
@ -113,7 +113,7 @@ export const getTrackDownloadUrl = async (track: trackType, quality: number): Pr
|
|||||||
fileSize: fileSize,
|
fileSize: fileSize,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
throw new Error(`Forbidden to access ${url}`);
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
const testUrl = async (url: string): Promise<number> => {
|
const testUrl = async (url: string): Promise<number> => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user