From 65b4b336771dab903ce12d920e937be00e65578f Mon Sep 17 00:00:00 2001 From: Sayem Chowdhury Date: Tue, 23 Mar 2021 17:53:53 +0600 Subject: [PATCH] get url server --- src/index.ts | 1 + src/lib/get-url.ts | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/lib/get-url.ts diff --git a/src/index.ts b/src/index.ts index db9eb48..3904bcf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,5 @@ export {initDeezerApi} from './lib/request'; export * from './api'; export * from './lib/decrypt'; +export * from './lib/get-url'; export * from './metadata-writer'; diff --git a/src/lib/get-url.ts b/src/lib/get-url.ts new file mode 100644 index 0000000..b82a8ab --- /dev/null +++ b/src/lib/get-url.ts @@ -0,0 +1,60 @@ +import axios from 'axios'; + +interface getUrlType { + data: [ + { + media: [ + { + cipher: { + type: 'BF_CBC_STRIPE'; + }; + exp: number; + format: string; + media_type: 'FULL'; + nbf: number; + sources: [ + { + provider: 'ec'; + url: string; + }, + { + provider: 'ak'; + url: string; + }, + ]; + }, + ]; + }, + ]; +} + +let license_token: string | null = null; + +const getLicenseToken = async (): Promise => { + const {data} = await axios.get('https://www.deezer.com/ajax/gw-light.php', { + params: { + method: 'deezer.getUserData', + api_version: '1.0', + api_token: '', + cid: Math.floor(1e9 * Math.random()), + }, + }); + license_token = data.results.USER.OPTIONS.license_token; + return data.results.USER.OPTIONS.license_token; +}; + +export const getTrackUrlFromServer = async (track_token: string, format: string): Promise => { + const token = license_token ? license_token : await getLicenseToken(); + const {data} = await axios.post('https://media.deezer.com/v1/get_url', { + license_token: token, + media: [ + { + type: 'FULL', + formats: [{format, cipher: 'BF_CBC_STRIPE'}], + }, + ], + track_tokens: [track_token], + }); + + return data; +};