From 8147adeff77d4831666c0e378c56489ee357a85a Mon Sep 17 00:00:00 2001 From: Ev-1 <33662061+Ev-1@users.noreply.github.com> Date: Sun, 29 May 2022 15:55:48 +0200 Subject: [PATCH] First attempt at lavalink4 support --- musicbot/cogs/music/__init__.py | 18 +++++++++--------- musicbot/cogs/music/basic_commands.py | 5 ++--- requirements.txt | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/musicbot/cogs/music/__init__.py b/musicbot/cogs/music/__init__.py index 21641f5..5861bf0 100644 --- a/musicbot/cogs/music/__init__.py +++ b/musicbot/cogs/music/__init__.py @@ -40,19 +40,20 @@ class Music(commands.Cog): player = self.bot.lavalink.player_manager.get(ctx.guild.id) # Only add tracks that don't exceed the max track length - if maxlength := self.max_track_length(ctx.guild, player): - if track['info']['length'] > maxlength and check_max_length: - if track['info']['isStream']: + if maxlength := self.max_track_length_ms(ctx.guild, player): + if track.duration > maxlength and check_max_length: + if track.stream: length = '{live}' else: - length = timeformatter.format_ms(track['info']['length']) + length = timeformatter.format_ms(track.duration) embed.description = ctx.localizer.format_str("{enqueue.toolong}", _length=length, _max=timeformatter.format_ms(maxlength)) return embed, False # Add thumbnail, turn track into track class - thumbnail_url = await thumbnailer.ThumbNailer.identify(self, track['info']['identifier'], track['info']['uri']) + + thumbnail_url = await thumbnailer.ThumbNailer.identify(self, track.identifier, track.uri) track = lavalink.models.AudioTrack(track, ctx.author.id, thumbnail_url=thumbnail_url) # Add to player @@ -68,10 +69,9 @@ class Music(commands.Cog): inline=True) embed.title = '{enqueue.enqueued}' - thumbnail_url = track.extra["thumbnail_url"] - if thumbnail_url: - embed.set_thumbnail(url=thumbnail_url) + if "thumbnail_url" in track.extra: + embed.set_thumbnail(url=track.extra["thumbnail_url"]) if track.stream: duration = '{live}' @@ -106,7 +106,7 @@ class Music(commands.Cog): embed = ctx.localizer.format_embed(embed) return embed - def max_track_length(self, guild, player): + def max_track_length_ms(self, guild, player): if maxlength := self.bot.settings.get(guild, 'duration.max', None): is_dynamic = self.bot.settings.get(guild, 'duration.is_dynamic', 'default_duration_type') listeners = max(1, len(player.listeners)) # Avoid division by 0 diff --git a/musicbot/cogs/music/basic_commands.py b/musicbot/cogs/music/basic_commands.py index e217c84..db9d7df 100644 --- a/musicbot/cogs/music/basic_commands.py +++ b/musicbot/cogs/music/basic_commands.py @@ -319,9 +319,8 @@ async def _search(self, ctx, *, query): arguments = [(ctx, tracks[i], discord.Embed(color=ctx.me.color)) for i in range(result_count)] for index, track in enumerate(tracks, start=1): - track = track['info'] - duration = timeformatter.format_ms(int(track['length'])) - identifiers.append(f'`{index}.` [{track["title"]}]({track["uri"]}) `{duration}`') + duration = timeformatter.format_ms(int(track.duration)) + identifiers.append(f'`{index}.` [{track.title}]({track.uri}) `{duration}`') if index == result_count: break diff --git a/requirements.txt b/requirements.txt index 5366c0c..50bda4f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ discord.py == 1.7.* -lavalink == 3.1.* +git+https://github.com/Devoxin/Lavalink.py@dev #lavalink.py 4 asyncio pyyaml BeautifulSoup4