A DisTube custom plugin for supporting Spotify URL.
This plugin grabs the songs on Spotify then searches on YouTube and plays with DisTube.
npm install @distube/spotify@latest
const Discord = require("discord.js");
const client = new Discord.Client();
const { DisTube } = require("distube");
const { SpotifyPlugin } = require("@distube/spotify");
const distube = new DisTube(client, {
plugins: [new SpotifyPlugin()],
});
SpotifyPluginOptions.parallel
: Default istrue
. Whether or not searching the playlist in parallel.SpotifyPluginOptions.emitEventsAfterFetching
: Default isfalse
. EmitsaddList
andplaySong
event before or after fetching all the songs.If
false
, DisTube plays the first song -> emitsaddList
andplaySong
events -> fetches all the rest
Iftrue
, DisTube plays the first song -> fetches all the rest -> emitsaddList
andplaySong
eventsSpotifyPluginOptions.api
: (Optional) Spotify API options.SpotifyPluginOptions.api.clientId
: Client ID of your Spotify application (Optional - Used when the plugin cannot get the credentials automatically)SpotifyPluginOptions.api.clientSecret
: Client Secret of your Spotify application (Optional - Used when the plugin cannot get the credentials automatically)SpotifyPluginOptions.api.topTracksCountry
: Country code of the top artist tracks (ISO 3166-1 alpha-2 country code). Default isUS
.
new SpotifyPlugin({
parallel: true,
emitEventsAfterFetching: false,
api: {
clientId: "SpotifyAppClientID",
clientSecret: "SpotifyAppClientSecret",
topTracksCountry: "VN",
},
});
import { DisTube } from "distube";
import { SpotifyPlugin } from "@distube/spotify";
import { SoundCloudPlugin } from "@distube/soundcloud";
const scPlugin = new SoundCloudPlugin();
class NewSpotifyPlugin extends SpotifyPlugin {
override async search(query: string) {
try {
return new Song((await scPlugin.search(query, { limit: 1 }))[0]);
} catch {
return null;
}
}
}
const distube = new DisTube(client, {
plugins: [new NewSpotifyPlugin(), scPlugin],
});