GithubHelp home page GithubHelp logo

d-fi-core's Introduction

d-fi-core Test

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';

// 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);

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 ❤️ & ☕ by Sayem

d-fi-core's People

Contributors

sayem314 avatar nkeor avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.