Giter VIP home page Giter VIP logo

spotify's Introduction

npm peer dependency version npm GitHub Repo stars Discord

Buy Me a Coffee at ko-fi.com

@distube/spotify

A DisTube custom plugin for supporting Spotify URL.

Feature

This plugin grabs the songs on Spotify then searches on YouTube and plays with DisTube.

Installation

npm install @distube/spotify@latest

Usage

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()],
});

Documentation

SpotifyPlugin([SpotifyPluginOptions])

  • SpotifyPluginOptions.parallel: Default is true. Whether or not searching the playlist in parallel.
  • SpotifyPluginOptions.emitEventsAfterFetching: Default is false. Emits addList and playSong event before or after fetching all the songs.

    If false, DisTube plays the first song -> emits addList and playSong events -> fetches all the rest
    If true, DisTube plays the first song -> fetches all the rest -> emits addList and playSong events

  • SpotifyPluginOptions.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 is US.

Example

new SpotifyPlugin({
  parallel: true,
  emitEventsAfterFetching: false,
  api: {
    clientId: "SpotifyAppClientID",
    clientSecret: "SpotifyAppClientSecret",
    topTracksCountry: "VN",
  },
});
Use SoundCloudPlugin to search instead of YouTube
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],
});

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.