Cog-Creators / Red-DiscordBot

A multi-function Discord bot
https://docs.discord.red
GNU General Public License v3.0
4.74k stars 2.3k forks source link

Future Audio Work #2940

Closed Drapersniper closed 3 years ago

Drapersniper commented 5 years ago

This issue is to gather features to be suggested for or worked on for Audio this supersedes and replaces #2494 due to the changes added by #2904

Open Issues:

TODO:

Requests:

Next Todo

In Edge

Done

What about sfx?

Want to suggest something?

Jackenmen commented 5 years ago

Unless this feature is already proposed somewhere, I would like to propose option to be able to use [p]prev to be able to go more than one song backwards and also to be able to use it with shuffle enabled - similarly to how it is in regular music players.

Drapersniper commented 5 years ago

Currently it will work with Shuffle (with #2904 ), but not more than 1 song, so i'll add that

Vexed01 commented 5 years ago

As we discussed in Discord, a possible feature is allowing server owners/admins to move playlists between servers they own/administrate in. A possible change to this original idea is that a non admin/owner user in server A can then copy a playlist to server B if they have admin/owner perms where the playlist is being copied to. These would only apply for guild playlists.

Drapersniper commented 5 years ago

@Vexed01 this would overcomplicate the existing playlist perms quite a bit, privacy is also a concern. and as such am Against this.

However ... Currently you'll be able to copy a playlist from guild A to the User Scope and from the User scope to the Guild scope on Server B.

This allows less cross server information display, and if they really want to copy cross server a 2 step proccess seems okay to me.

Vexed01 commented 5 years ago

That's fine, I wasn't expecting much. It was just an idea!

Jackenmen commented 5 years ago

Hmm, I have another proposition, option to limit the range for volume command? I saw someone that wanted such feature before so that he could enable users to change volume but not let them change it from for example 50% to 150% which would annoy everyone in vc.

Ianardo-DiCaprio commented 4 years ago

Ability to add multiple songs in the play command by separating the songs with a character that's not used often such as "|". Which would be used like [p]play Eminem Lucky You | Joyner ADHD and it adds both songs.

ltukezl commented 4 years ago

I mostly use redbot for playing local songs and it works pretty well for basic operation of !play "path/music.mp3" Would it be possible to have commands such as !play "folder" to enqueue all music in that folder. !local folder is extremely cumbersome since i wouldn't want to transfer all my files to new "localtracks" folder. For my use case navigation and stuff like that isn't really a concern since i'm always using "copy as path" with windows.

Drapersniper commented 4 years ago

@ltukezl possible it is, however for privacy reason I’m agaisnt being able to pass a local path to the bot for play, as of 3.3 you are able to create symbolic links so you don’t need to copy the files into the local tracks folder, the reason the local tracks folder exist is due to the aforementioned privacy concerns.

ltukezl commented 4 years ago

Fair. symlinks feels decent enought workaround. Thank you.

Drapersniper commented 4 years ago

The above said it’s not a hard no, if you can give some examples of use cases where it would prove beneficial to all users and not just yourself, I’m more than happy to look into the possibilities.

ltukezl commented 4 years ago

Since it already worked for regular mp files I didn't really concern too much about the possible privacy issues.

While the symlink does function well (EDIT subfolders with music doesn't work, returns nothing found. maybe it's on my end so i'll debug it tomorrow) , it doesn't really scale too well to my 400 albums. So my enchantment suggestions would fall either into the !local folder enchantments such as skip 10 menus and show more albums per menu. Maybe it could accept the path via DM where the owner might be more likely to post private info or with enought rights the bot could instantly delete messages that has been processed as local path / folder.

Either way I don't really have good solution on hand but I recon queuing whole folders easier would still be beneficial to some portion of users.

Drapersniper commented 4 years ago

Nothing found after you select play or nothing found as in the folder doesn’t get shown? This is no longer something that shouldn’t be in this issue please take any further issue to our discord server and we can talk there. I’m interested to understand exactly what you mean by not found as in when and where it happens

Drapersniper commented 4 years ago

Blocked by #3459

aikaterna commented 4 years ago

Have a command, most likely usable for server owners, bot owners, bot mod, bot admin that toggles on a bias for lyrics-based song titles via a yt search. This would append "lyrics" to a [p]search query on first glance (could def be implemented differently), and in regards to the idea of the audio track API/caching idea that Draper has, could prioritize cached tracks with lyrics in the song title or similar.

Drapersniper commented 4 years ago

Add a [p]mixplaylist <url> command based on the newly discovered behaviour of youtube mix playlists

Drapersniper commented 4 years ago

MAYBE: add [p]playstric <author> || <track name> which would allow using Global Cache and JDA cache directly.

Drapersniper commented 4 years ago

add [p]makeplaylist that enqueue n number of recently played tracks in the server

PredaaA commented 4 years ago

Show the enqueued playlist name (and url?) when using genre command.

fixator10 commented 4 years ago

thingie

Drapersniper commented 4 years ago

I won't be continuing work here, I wont close this issue as its a good way to congragate all feature requests and work. hopefully it assists Aika and anyone else working on Audio in the future.

NeuroAssassin commented 4 years ago

Add RPC functionality; information on doing this at #3741

Drapersniper commented 4 years ago

Add special casing for Live stream playlists Note: Users wont be mix livestream with normal songs due to special casing, but this will allow playlist to always have accurate livestream data

Drapersniper commented 4 years ago

[p]audioset role To accept a list of roles?

Drapersniper commented 4 years ago

Adding this here to cleanup original post

Completed:

Somewhere (Deffo in #3459):

In #3085:

perceptigon commented 4 years ago

As per conversation in #support could a global empty disconnect feature be added to the bot's owner's perms? That way, if 100 servers have the bot playing music to an empty VC or the bot not playing anything, it wouldn't use the excess hosting resources?

Ryonez commented 4 years ago

I'd like to seem some global audio settings for emptydisconnect and emptypause.

Personally, I don't like leaving things open if they aren't being used, and secondly because some users do feel uncomfortable about it.

I think an additional benefit would be a toggle for the bot owner to enforce these settings, so server owners/staff can't change them.

@Drapersniper (I think this was you) response on discord:

Put it there But realistically the way I'd implement is a global default that guilds can opt out of if they should choose Rather than a global rule

My response:

That's why I suggested that as a separate toggle. A bot owner might have limited bandwith and choose to allow the option to use audio, but enforce the global rules to save the bandwidth. It allows for it to be set up for the circumstances required.

Drapersniper commented 4 years ago

Implement the "something when wrong ..." kinda message mentioned in #3868

Drapersniper commented 4 years ago

image

Jackenmen commented 4 years ago

Draper told me we need something like this: image

Drapersniper commented 4 years ago

Draper told me we need something like this: image

AAAAAAAAAAAAAAAAAAAAAAA

On java requirement failure message, link to docs for instructions on how to get supported java

Kowlin commented 4 years ago

I've been told to blame @jack1142 on this.

firefox_tG7gEGCk8K firefox_Z0BhXQ6oUy

Dav-Git commented 4 years ago

Remove % in [p]volume help menu. Having it just say "Set the volume 1-150" seems more user-friendly and intuitive

Drapersniper commented 4 years ago

The way how volume will work is going to significantly change. In a future update if everything goes to plan, but I'll keep that in mind.

The problem with saying just 1-150 is that is an number without any context , that's the diff between between 100 and 110 in, eith percentage we know that that's a 10% increase and not a .. exponential increase where the value doubles every n stead

Note: could just edit the usage arg rather than the docstrings

aikaterna commented 4 years ago

Would be nice perhaps to have a Lavalink log upload command to post the spring.log file, but would only really work on internally run jars. Could help in support when folks are asking for logs. Most users can provide logs and not have much trouble getting them uploaded to hastebin or somewhere else, but this idea would make it even more easy for them. I'm not totally sold on adding this but thought I'd mention it as it may be helpful.

Drapersniper commented 4 years ago

Would be nice perhaps to have a Lavalink log upload command to post the spring.log file, but would only really work on internally run jars. Could help in support when folks are asking for logs. Most users can provide logs and not have much trouble getting them uploaded to hastebin or somewhere else, but this idea would make it even more easy for them. I'm not totally sold on adding this but thought I'd mention it as it may be helpful.

I'm actually sold. We could see if it's external and if external tell them how to find it instead. And if internal we just send the file in a message

aikaterna commented 4 years ago

Allow chaining on playlist start, like [p]playlist start playlist1 playlist2 playlist3

PredaaA commented 3 years ago

It would be really cool to implement this. For more care about resources usage. image

aikaterna commented 3 years ago

Add support for YouTube music api, non async ref can be found at https://github.com/sigma67/ytmusicapi/tree/master/ytmusicapi

aikaterna commented 3 years ago

Add a playlist search command to be able to search for tracks on a saved Red playlist, the output would return artist/title/link like many of the other song displays (queue, playlist info, etc)

Drapersniper commented 3 years ago

Would we want to also add enqueue functionality allowing you to play the search result ?

aikaterna commented 3 years ago

Possibly, my use case was trying to search a saved playlist for specific artists so that I could remove them with playlist remove commands.

npc203 commented 3 years ago

some default audio eq presets would be cool(i am aware of how to save eq configs). idk how to justify the need but somewhere on the lines of red having default songs maybe. Would be useful to show off how eq is cool.

Drapersniper commented 3 years ago

some default audio eq presets would be cool(i am aware of how to save eq configs). idk how to justify the need but somewhere on the lines of red having default songs maybe. Would be useful to show off how eq is cool.

Yeah planning to do this on the rewrite and give users a handful of premade presets such as base boos, piano, voice etc

Pogogo007 commented 3 years ago

Make Query option 5 (JDA) optional on GlobalAPI and implement on audio (Draper on disc)

wcrigger commented 3 years ago

We use RedBot to stream an Icecast URL, which is working flawlessly. However, when poking around at audio features, I came across the "[p] audioset status enable" command that updates the bot's status as to what is currently playing (sweet!). However, after enabling the feature and having the first song updated as its status, subsequent songs in the same stream are not captured, or at least not set as the status of the bot as expected. That first song it determines is playing becomes a static status for the bot.

I think it'd be really cool if RedBot could refresh its now playing data frequently (possibly at a configurable interval), and capture what is currently playing, and update its status accordingly. I believe this can be achieved by sending the "Icy-MetaData" in the request header, and by reading the response "metaint" header and parsing it accordingly. I found some example python code for this, and I think it'd be something along the lines of this:

  request.add_header('Icy-MetaData', 1)
    response = urllib2.urlopen(request)
    icy_metaint_header = response.headers.get('icy-metaint')
    if icy_metaint_header is not None:
        metaint = int(icy_metaint_header)
        read_buffer = metaint+255
        content = response.read(read_buffer)
        title = content[metaint:].split("'")[1]
        print title

...perhaps in a try/except block, where if successful, it updates the status as to what is currently playing, else, if failure, possibly blanking out the status, or outputting something generic.

Thanks in advance for the consideration. You all have something really cool here!

SnooPee508 commented 3 years ago

Hello! I have an awesome Idea! Is it possible in equalizer that bot owners can create global equalizer presets? So that adding filters like Bassboost, treble etc. If it is possible then we don't need to add separate filters command. This can come in handy :)

fmohican commented 3 years ago

Hello, Currently I face a issues with nicely and lovely Red Audio (Cog?), let's get to the point.... I setup myself an instance of red on my Windows Server, everything went fine till i want to setup few playlists from local albums.

On a first hand i search a lot how to create playlists from local files, how to setup media patch without going on C:\Users\[myuser]\AppData\Local\Red-DiscordBot\Red-DiscordBot\data\[myInstanceOfRed]\cogs\Audio\localtracks and i can't found anything. I can't find any workaround for the files path, but i found an workaround for creating playlist so, i convert all files to mp3 pack into folders and then upload to %appdata%\Local\Red-DiscordBot\Red-DiscordBot\data\[myInstanceOfRed]\cogs\Audio\localtracks, everything went fine and smooth with follow commands

.local folder [name]
playlist queue [name] --scope Global
.stop
[repeat]

So as i said everything went fine till i have to repeat operation, every playlist queue [name] --scope Global i have to wait 5 minutes to execute another, on a simple math 4 albumes (no matter how long/short are) i have to wait 20 minutes (in total). It's frustrating not to be able to go over certain limits, even if it means taking risks, since we are talking about a selfhosted instance of Red and just as frustrated is waiting a few hours to get a job done that you can do in 20 minutes at most.

To resume everything.

Transcript from discord: https://gist.github.com/fmohican/9bd522c9550ff787e8ca38c7751099d1

Drapersniper commented 3 years ago

Hello, Currently I face a issues with nicely and lovely Red Audio (Cog?), let's get to the point.... I setup myself an instance of red on my Windows Server, everything went fine till i want to setup few playlists from local albums.

On a first hand i search a lot how to create playlists from local files, how to setup media patch without going on C:\Users\[myuser]\AppData\Local\Red-DiscordBot\Red-DiscordBot\data\[myInstanceOfRed]\cogs\Audio\localtracks and i can't found anything. I can't find any workaround for the files path, but i found an workaround for creating playlist so, i convert all files to mp3 pack into folders and then upload to %appdata%\Local\Red-DiscordBot\Red-DiscordBot\data\[myInstanceOfRed]\cogs\Audio\localtracks, everything went fine and smooth with follow commands

.local folder [name]
playlist queue [name] --scope Global
.stop
[repeat]

So as i said everything went fine till i have to repeat operation, every playlist queue [name] --scope Global i have to wait 5 minutes to execute another, on a simple math 4 albumes (no matter how long/short are) i have to wait 20 minutes (in total). It's frustrating not to be able to go over certain limits, even if it means taking risks, since we are talking about a selfhosted instance of Red and just as frustrated is waiting a few hours to get a job done that you can do in 20 minutes at most.

To resume everything.

  • Possibility to create playlist from local files without any cooldown or 'workaround'.
  • Possibility to set custom cooldown on every command. (optionally a warning like, if you fall below a certain value, no more support is offered. You do it at your own risk. )

Transcript from discord: https://gist.github.com/fmohican/9bd522c9550ff787e8ca38c7751099d1

Implementation of this allow. Appending/creating a playlist from an existing local folder.

Given the size of queues and potential risk from it I will not remove the cooldown here unless there's a lot of push back. If there is then I'm removing the 3 scopes and making playlist only creatable by bot owners

fmohican commented 3 years ago

Implementation of this allow. Appending/creating a playlist from an existing local folder.

Given the size of queues and potential risk from it I will not remove the cooldown here unless there's a lot of push back. If there is then I'm removing the 3 scopes and making playlist only creatable by bot owners

There is no point for that cooldown on local files even old hdd can handle easy hundred of mp3s. There is a lot of time wasted on cooldown, as i said on transcript, for public bot it make sense, for self-hosted instance doesn't, since is my Server/IP/Files its my own responsibility to take care of them. Enforcing limits doesn't help everyone.

Also eliminating local playlists cause a dependency of platforms like youtube/spotify/etc... Don't get me wrong, i like to be in control of my data, even on discord.