deezer converter
This commit is contained in:
parent
65b4b33677
commit
3f0d47e9e4
|
@ -0,0 +1,48 @@
|
|||
import axios from 'axios';
|
||||
import delay from 'delay';
|
||||
import {getAlbumInfo, getAlbumTracks, getTrackInfo} from '../api';
|
||||
import type {albumType, trackType} from '../types';
|
||||
|
||||
const instance = axios.create({baseURL: 'https://api.deezer.com/', timeout: 15000});
|
||||
|
||||
export const isrc2deezer = async (name: string, isrc?: string) => {
|
||||
if (!isrc) {
|
||||
throw new Error('ISRC code not found for ' + name);
|
||||
}
|
||||
|
||||
const {data} = await instance('track/isrc:' + isrc);
|
||||
if (data.error) {
|
||||
throw new Error(`No match on deezer for ${name} (ISRC: ${isrc})`);
|
||||
}
|
||||
|
||||
return await getTrackInfo(data.id);
|
||||
};
|
||||
|
||||
export const upc2deezer = async (name: string, upc?: string): Promise<[albumType, trackType[]]> => {
|
||||
if (!upc) {
|
||||
throw new Error('UPC code not found for ' + name);
|
||||
} else if (upc.length > 12) {
|
||||
upc = upc.slice(-12);
|
||||
}
|
||||
|
||||
const {data} = await instance('album/upc:' + upc);
|
||||
if (data.error) {
|
||||
throw new Error(`No match on deezer for ${name} (UPC: ${upc})`);
|
||||
}
|
||||
|
||||
const albumInfo = await getAlbumInfo(data.id);
|
||||
const albumTracks = await getAlbumTracks(data.id);
|
||||
return [albumInfo, albumTracks.data];
|
||||
};
|
||||
|
||||
// Retry on rate limit error
|
||||
instance.interceptors.response.use(async (response) => {
|
||||
if (response.data.error && Object.keys(response.data.error).length > 0) {
|
||||
if (response.data.error.code === 4) {
|
||||
await delay.range(1000, 1500);
|
||||
return await instance(response.config);
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
});
|
|
@ -0,0 +1 @@
|
|||
export * as deezerConverter from './deezer';
|
|
@ -1,5 +1,6 @@
|
|||
export {initDeezerApi} from './lib/request';
|
||||
export * from './api';
|
||||
export * from './converter';
|
||||
export * from './lib/decrypt';
|
||||
export * from './lib/get-url';
|
||||
export * from './metadata-writer';
|
||||
|
|
Loading…
Reference in New Issue