spotifydl-core-nekosune
v0.4.1
Published
Spotify downloader for node
Downloads
26
Maintainers
Readme
Spotifydl-Core
A simple package to download music tracks from spotify 🎵
Installation
NOTE:
Now Oauth2 now broken you have to use Google Chrome Cookies, todo that need install chrome by
1. wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
2. sudo dpkg -i google-chrome-stable_current_amd64.deb
3. if you on root do "google-chrome --no-sandbox" if not in root do normal "google-chrome"
Then go to YouTube and Login then close browser after use dummy account (DO NOT USE YOUR MAIN ACCOUNT)
if you using a VPS / Delecated VPS, make sure have X11 enabled if VPS / Delecated VPS has no Displays / Desktop Envionment.
then just run code then all work. but not sure how long stay working so Report Bugs/Issues.
this method only supports Linux / WSL2 Linux, havent work way round make Windows work yet.> npm i spotifydl-coreIntialization
You need to intialize the Spotify Class before acessing the methods inside it.
const Spotify = require('spotifydl-core').default
//import Spotify from 'spotifydl-core'
const credentials = {
clientId: 'your-client-id',
clientSecret: 'your-client-secret'
}
const spotify = new Spotify(credentials)Methods
NOTE: Only some methods are shown here. Checkout the docs for a more in-depth documentation
Get Track ⏭️
await spotify.getTrack(track_url)
// For Example: track_url = 'https://open.spotify.com/track/1Ub6VfiTXgyV8HnsfzrZzC?si=4412ef4ebd8141ab'
// Input: url of the track, Type: stringDownload Track/Song ⬇️
await spotify.downloadTrack(track_url, file_name, {
cookiesFromBrowser: 'chrome:~/.config/google-chrome/',
})
// For Example: track_url = 'https://open.spotify.com/track/1Ub6VfiTXgyV8HnsfzrZzC?si=4412ef4ebd8141ab' & file_name = 'song.mp3'
// Input: url of the track and name of the filename, Both Type: string
// It'll return buffer (promise) if you don't provide any filename
Get Artist 👩🎤🧑🎤
await spotify.getArtist(artist_url)
// For Example: artist_url = 'https://open.spotify.com/artist/3B9O5mYYw89fFXkwKh7jCS'
// Input: url of the artist, Type: stringGet Album 💽
await spotify.getAlbum(album_url)
// For Example: album_url = 'https://open.spotify.com/album/3u3WsbVPLT0fXiClx9GYD9?si=pfGAdL3VRiid0M3Ln_0DNg'
// Input: url of the album, Type: stringGet Playlist 🎧
await spotify.getPlylist(playlist_url)
// Input: url of the playlist, Type: stringDownload an Entire playlist
await spotify.downloadPlaylist(playlist_url, file_name, {
cookiesFromBrowser: 'chrome:~/.config/google-chrome/',
})
//It'll return an array containing the Buffer of the songs in the playlistUsage Example
const fs = require('fs-extra')
// Initialization and Authentication
const Spotify = require('spotifydl-core').default // Import the library
const spotify = new Spotify({ // Authentication
clientId: 'acc6302297e040aeb6e4ac1fbdfd62c3', // <-- add your own clientId
clientSecret: '0e8439a1280a43aba9a5bc0a16f3f009', // <-- add your own clientSecret
})
/* To learn more about clientId and Secret ,
visit https://developer.spotify.com/documentation/general/guides/app-settings/
*/
// Declaring the respective url in 'links' object
const links = {
artist: 'https://open.spotify.com/artist/7ky9g1jEjCsjNjZbYuflUJ?si=2To3fmc-T9KuyyrQ-Qp5KQ', // Url of the artist you want to gather info about
album: 'https://open.spotify.com/album/3u3WsbVPLT0fXiClx9GYD9?si=pfGAdL3VRiid0M3Ln_0DNg', // Url of the album you want to gather info about
song: 'https://open.spotify.com/track/1Ub6VfiTXgyV8HnsfzrZzC?si=4412ef4ebd8141ab' // Url of the song you want to gather info about or download
};
// Engine
(async () => {
const data = await spotify.getTrack(links.song) // Waiting for the data 🥱
console.log('Downloading: ', data.name, 'by:', data.artists.join(' ')) // Keep an eye on the progress
const song = await spotify.downloadTrack(links.song, __dirname + `/downloads/${data.artists[0]} - ${data.name}.mp3`, {
cookiesFromBrowser: 'chrome:~/.config/google-chrome/',
}) // Downloading goes brr brr
fs.writeFileSync('song.mp3', song) // Let's write the buffer to the woofer (i mean file, hehehe)
})()
//spotify.verifyCredentials().then(() => Promise.all([spotify.getTrack(links.song), spotify.getAlbum(links.album), spotify.getArtistAlbums(links.artist)]).then(console.log))🙇 Special Thanks
- Swapnil Soni: Spotify-dl
- Fent: Ytdl-core
FEW BUGS NEED FIX
- There is issue when Playlist more then 100+ it thows error to provent downloading
- theres small bug when download gets stuck as _temp.mp3 file is not deleted to convert normal file
- tweek it call out little less on API so be more smaller request not flood any APIS / Websites
- Clean up stuff dont need.
- Add my own custom backend API for predownload files if want get corrent files other then redownload back on your own API so means my custom server cache download make easyer download for you for less time.
- need look into code more see what else to add in and fixing
