d-fi-core
v1.4.0
Published
Core module for d-fi
Readme
d-fi-core 
d-fi is a streaming music downloader. This core module is designed to be used on future version of d-fi.
Requirements
Node.js >=18.18.0.
Installation
npm install d-fi-core
# or
bun add d-fi-core
# or
pnpm add d-fi-coreUsage
Here's a simple example to download tracks.
import axios from 'axios';
import fs from 'fs';
import * as api from 'd-fi-core';
// Init api with arl from cookie
await api.initDeezerApi(arl_cookie);
// Verify user
try {
const user = await api.getUser();
// Successfully logged in
console.log('Logged in as ' + user.BLOG_NAME);
} catch (err) {
// Invalid arl cookie set
console.error(err.message);
}
// GET Track Object
const track = await api.getTrackInfo(song_id);
// Parse download URL for 128kbps
const trackData = await api.getTrackDownloadUrl(track, 1);
// Download track
const {data} = await axios.get(trackData.trackUrl, {responseType: 'arraybuffer'});
// Decrypt track if needed
const outFile = trackData.isEncrypted ? api.decryptDownload(data, track.SNG_ID) : data;
// Add id3 metadata
const trackWithMetadata = await api.addTrackTags(outFile, track, 500);
// Save file to disk
fs.writeFileSync(track.SNG_TITLE + '.mp3', trackWithMetadata);Read FAQ
Supported links
parseInfo(url) supports Deezer, Spotify, Tidal, YouTube, and Deezer shared links from link.deezer.com.
See parse docs for usage.
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 | object | 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 | object | 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
