d-fi-core
d-fi is a streaming music downloader. This core module is designed to be used on future version of d-fi.
Installation
$ yarn add d-fi-core
Usage
Here's a simple example to download tracks.
import axios from 'axios';
import fs from 'fs';
import * as api from 'd-fi-core';
await api.initDeezerApi(arl_cookie);
try {
const user = await api.getUser();
console.log('Logged in as ' + user.BLOG_NAME);
} catch (err) {
console.error(err.message);
}
const track = await api.getTrackInfo(song_id);
const trackData = await api.getTrackDownloadUrl(track, 1);
const {data} = await axios.get(trackdata.trackUrl, {responseType: 'arraybuffer'});
const outFile = trackData.isEncrypted ? api.decryptDownload(data, track.SNG_ID) : data;
const trackWithMetadata = await api.addTrackTags(outFile, track, 500);
fs.writeFileSync(track.SNG_TITLE + '.mp3', trackWithMetadata);
Methods
All method returns Object
or throws Error
. Make sure to catch error on your side.
.initDeezerApi(arl_cookie);
It is recommended that you first init the app with this method using your arl cookie.
Parameters | Required | Type |
---|
arl_cookie | Yes | string |
.getTrackInfo(track_id);
Parameters | Required | Type |
---|
track_id | Yes | string |
.getLyrics(track_id);
Parameters | Required | Type |
---|
track_id | Yes | string |
.getAlbumInfo(album_id);
Parameters | Required | Type |
---|
album_id | Yes | string |
.getAlbumTracks(album_id);
Parameters | Required | Type |
---|
album_id | Yes | string |
.getPlaylistInfo(playlist_id);
Parameters | Required | Type |
---|
playlist_id | Yes | string |
.getPlaylistTracks(playlist_id);
Parameters | Required | Type |
---|
playlist_id | Yes | string |
.getArtistInfo(artist_id);
Parameters | Required | Type |
---|
artist_id | Yes | string |
.getDiscography(artist_id, limit);
Parameters | Required | Type | Default | Description |
---|
artist_id | Yes | string | - | artist id |
limit | No | number | 500 | maximum tracks to fetch |
.getProfile(user_id);
Parameters | Required | Type |
---|
user_id | Yes | string |
.searchAlternative(artist_name, song_name);
Parameters | Required | Type |
---|
artist_name | Yes | string |
song_name | Yes | string |
.searchMusic(query, types, limit);
Parameters | Required | Type | Default | Description |
---|
query | Yes | string | - | search query |
types | No | array | ['TRACK'] | array of search types |
limit | No | number | 15 | maximum item to fetch per types |
.getTrackDownloadUrl(track, quality);
Parameters | Required | Type | Description |
---|
track | Yes | string | track object |
quality | Yes | 1, 3 or 9 | 1 = 128kbps, 3 = 320kbps, 9 = flac |
.decryptDownload(data, song_id);
Parameters | Required | Type | Description |
---|
data | Yes | buffer | downloaded song buffer |
song_id | Yes | string | track id |
.addTrackTags(data, track,coverSize)
Parameters | Required | Type | Description |
---|
data | Yes | buffer | downloaded song buffer |
track | Yes | string | track object |
coverSize | No | 56-1800 | cover art size |
Donations
If you want to show your appreciation, you can donate me on ko-fi or buy me a coffee. Thanks!
Made with :heart: & :coffee: by Sayem