Natively Pluggable Module

    spdl-core
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.2 • Public • Published

    spdl-core

    Spotify track downloader module. Written in pure javascript.

    Support

    You can contact us for support on our chat server

    Usage

    const fs = require('fs');
    const spdl = require('spdl-core').default;
    // Typescript: import spdl from 'spdl-core';
    
    spdl.getInfo('https://open.spotify.com/track/3fjmSxt0PskST13CSdBUFx?si=e420cd3a80834011').then(infos => {
      spdl(infos.url).then(stream => {
        stream.on('end', () => console.log('Done!'));
        stream.pipe(fs.createWriteStream(`${infos.title}.mp3`));
      });
    });

    API

    async spdl(url, options?)

    Downloads the track from the given url. Returns a readable stream Options are the options for discord-ytdl-core

    async spdl.getInfo(url)

    Gives the information of a track

    spdl.validateURL(url, type?)

    Returns true if url is a spotify link

    Limitations

    Generated download links are valid for 6 hours, and may only be downloadable from the same IP address.

    Install

    npm install spdl-core@latest

    Or for Yarn users:

    yarn add spdl-core@latest

    Make sure you're installing the latest version of spdl-core to keep up with the latest fixes.

    Discord Bot

    You'll need to install discord.js and @discordjs/opus.

    const { MessageEmbed, Client } = require('discord.js');
    const spdl = require('spdl-core');
    function formatDuration(duration) {
      let seconds = duration / 1000;
      return `${Math.floor(seconds / 60)}m ${Math.floor(seconds % 60)}s`;
    }
    
    const client = new Client();
    client.login('Your Discord Bot Token');
    client.on('ready', () => console.log('Ready'));
    
    client.on('message', async (msg) => {
      if (!msg.content.startsWith('!play')) return;
      const url = msg.content.split('!play ')[1];
      if (!spdl.validateURL(url)) return msg.channel.send('Invalid URL');
      const channel = msg.member.voice.channel;
      if (!channel) return msg.channel.send('Not in a voc channel');
      try {
        const connection = await channel.join();
        connection
          .play(await spdl(url))
          .on('error', e => console.error(e));
        const infos = await spdl.getInfo(url);
        const embed = new MessageEmbed()
          .setTitle(`Now playing: ${infos.title}`)
          .setURL(infos.url)
          .setColor('#1DB954')
          .addField('Artist', infos.artist, true)
          .addField('Duration', formatDuration(infos.duration), true)
          .setThumbnail(infos.thumbnail);
        msg.channel.send(embed);
      } catch (err) {
        console.error(err);
        msg.channel.send(`An error occurred: ${err.message}`);
      }
    });

    Note

    There is nothing illegal here, the module just searches for the song on Youtube and downloads it.

    Install

    npm i spdl-core

    DownloadsWeekly Downloads

    287

    Version

    2.0.2

    License

    MIT

    Unpacked Size

    11.1 kB

    Total Files

    5

    Last publish

    Collaborators

    • skydonald