Skip to content

Module for SoundCloud to download and get info tracks and playlists. Support Typescript and Javascript.

License

Notifications You must be signed in to change notification settings

misa198/scdl-core-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d170f2d · Jun 28, 2022

History

55 Commits
Dec 6, 2021
Sep 22, 2021
Jun 28, 2022
Jun 28, 2022
May 22, 2021
Aug 28, 2021
Aug 28, 2021
Aug 28, 2021
May 22, 2021
May 22, 2021
Jun 28, 2022
Aug 28, 2021
Aug 28, 2021
Jun 28, 2022
Jun 28, 2022
Aug 28, 2021

Repository files navigation

scdl-core

  • Module for SoundCloud to download and get info tracks and playlists.
  • Support Typescript and Javascript.

Usage

const fs = require("fs");
const { SoundCloud } = require("scdl-core");

await SoundCloud.connect();
const stream = await SoundCloud.download(
  "https://soundcloud.com/martingarrix/martin-garrix-feat-bonn-no-sleep"
);
stream.pipe(fs.createWriteStream("song.mp3"));

API

connect

// Used to get the SoundCloud client_id. Call 1 time at the top of your app.
const { SoundCloud } = require("scdl-core");
await SoundCloud.connect();
await SoundCloud.download(
  "https://soundcloud.com/martingarrix/martin-garrix-feat-bonn-no-sleep"
);
stream.pipe(fs.createWriteStream("song.mp3"));

search

const result = await SoundCloud.search({
  query: string,
  limit?: number, // Default: 20
  offset?: number, // Default: 0
  filter?: 'all' | 'albums' | 'playlists' | 'users' | 'tracks' // Default: "all"
});

tracks

getTrackByIds

const ids = [578933490, 499766382];
const tracks = await SoundCloud.tracks.getTracksByIds(ids);

getTrack

const permalink =
  "https://soundcloud.com/martingarrix/martin-garrix-feat-bonn-no-sleep";
const track = await SoundCloud.tracks.getTrack(permalink);

getTrending

const trendingTracks = await SoundCloud.tracks.getTrending({
  limit?: number, // Default: 20
  offset?: number // Default: 0
});

playlists/albums

getPlaylist/getAlbum

const permalink =
  "https://soundcloud.com/martingarrix/sets/martin-garrix-matisse-sadko";
const playlist = await SoundCloud.playlists.getPlaylist(permalink);

users

getUser

const permalink = "https://soundcloud.com/martingarrix";
const user = await SoundCloud.users.getUser(permalink);

download

const permalink =
  "https://soundcloud.com/martingarrix/martin-garrix-feat-bonn-no-sleep";
const stream = await SoundCloud.download(permalink);
stream.pipe(fs.createWriteStream("song.mp3"));

// For streaming, you can customize the `highWaterMark` value to reduce lag if the internet is not good.
// Example:
const stream = await SoundCloud.download(permalink, {
  highWaterMark: 1 << 25, // 32Mb, default is 16kb
});

Use with Discord.js

// Discord.js v12
const voiceChannel = message.member.voiceChannel;
voiceChannel
  .join()
  .then((connection) => {
    SoundCloud.download(trackPermalink).then((stream) => {
      connection.play(stream);
    });
  })
  .catch((err) => console.log(err));
// Discord.js v13
const audioPlayer = createAudioPlayer();
const voiceConnection = joinVoiceChannel({
  channelId,
  guildId,
  adapterCreator,
});
voiceConnection.subscribe(audioPlayer);
const stream = await SoundCloud.download(SONG_URL);
const audioResource = createAudioResource(stream);
audioPlayer.play(audioResource);

Install

npm install scdl-core --save

Or for Yarn users:

yarn add scdl-core

License

MIT