espimarisa/hibiki

[REQ] Music Commands, cont.

Closed this issue · 6 comments

Overview

Implement a simple, but powerful suite of audio playback commands (play, pause, skip, queue, search?)
This continues the original issue #1.

How?

There's a couple of good ways to go about this, but the two most popular ways are:

  • Native ytdl-core streaming. Simple to write, native, but also somewhat slow and inefficient. Additionally, YouTube API keys can be pretty pricey.
  • Lavalink. Lavalink is an audio sending service that's efficient, fast, but not native to the bot 100%. You still have to set up a JRE environment (very easy to do). However, I believe that the pros of using this outweigh the cons of not. As it streams audio without it directly sending to each shard, it saves a lot of bandwidth and stuff. Additionally, it's probably better than anything we can write. Additionally, there's some very (albeit pretty crap old code) work done on a scrapped v2.5.0 music project by @chiibiki that we can go off of.

Goals

Hopefully, we can get this functional. There are many TypeScript/JavaScript Lavalink drivers out there, and I've looked at a bunch of them. I'll finalize my selection soon and start work on it. I've pushed this to the v3.3.0 milestone.

Additionally, some nice features such as metadata retrieval could be neat. I'm not 100% sure how to go about this. Someone mentioned using the MusicBrainz API, and while possible, I've never done it before. We'll experiment around.

This issue seems to be inactive, and will automatically be closed in 7 days.

This issue seems to be inactive, and will automatically be closed in 7 days.

nononono

perhaps you should give the choice between lavalink and ytdl-core up to the person hosting it? like database providers

lavalink api seems more complicated than ytdl-core so it may give us more flexibility

i was thinking about that - I will probably push Lavalink as the primary option but work on a ytdl provider in the future. wouldn't be too tricky

We are using Lavalink and it supports YouTube, Soundcloud, and an opt-in Spotify option (if you have a client ID/secret).

These features are almost completely implemented into v3.3.0, will be commuted within the next few days, and I am marking this issue as resolved and closing it.