From ad6743e9c6e848fd0c3fd92ba3bbe3601ad6a37f Mon Sep 17 00:00:00 2001 From: Choco <94597336+ChocoMeow@users.noreply.github.com> Date: Sun, 17 Sep 2023 14:13:56 +0800 Subject: [PATCH] Fixed some bugs --- cogs/basic.py | 3 +-- cogs/listeners.py | 2 +- cogs/playlist.py | 3 +-- update.py | 2 +- views/search.py | 5 ++++- voicelink/formatter.py | 10 +++++++--- voicelink/objects.py | 12 ++++-------- voicelink/pool.py | 6 +++--- voicelink/spotify/objects.py | 14 ++++++-------- web/static/js/objects.js | 13 +++++++++++++ 10 files changed, 41 insertions(+), 29 deletions(-) diff --git a/cogs/basic.py b/cogs/basic.py index dfc0b63..bca8b22 100644 --- a/cogs/basic.py +++ b/cogs/basic.py @@ -888,8 +888,7 @@ class Basic(commands.Cog): category = "News" view = HelpView(self.bot, ctx.author) embed = view.build_embed(category) - message = await ctx.send(embed=embed, view=view) - view.response = message + view.response = await ctx.send(embed=embed, view=view) @commands.hybrid_command(name="ping", aliases=get_aliases("ping")) @commands.dynamic_cooldown(cooldown_check, commands.BucketType.guild) diff --git a/cogs/listeners.py b/cogs/listeners.py index 0bcee7a..583a1b3 100644 --- a/cogs/listeners.py +++ b/cogs/listeners.py @@ -96,7 +96,7 @@ class Listeners(commands.Cog): "op": "updateGuild", "user": { "user_id": member.id, - "avatar_url": member.avatar.url, + "avatar_url": member.display_avatar.url, "name": member.name, }, "channel_name": member.voice.channel.name if is_joined else "", diff --git a/cogs/playlist.py b/cogs/playlist.py index 0d3cb7c..3e173dc 100644 --- a/cogs/playlist.py +++ b/cogs/playlist.py @@ -204,8 +204,7 @@ class Playlists(commands.Cog, name="playlist"): embed.set_footer(text=get_lang(ctx.guild.id, 'playlistFooter')) view = PlaylistView(embed, results, ctx.author) - messsage = await ctx.send(embed=embed, view=view, ephemeral=True) - view.response = messsage + view.response = await ctx.send(embed=embed, view=view, ephemeral=True) @playlist.command(name="create", aliases=get_aliases("create")) @app_commands.describe( diff --git a/update.py b/update.py index b8432b3..569f2ef 100644 --- a/update.py +++ b/update.py @@ -2,7 +2,7 @@ import requests, zipfile, os, shutil, argparse from io import BytesIO ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) -__version__ = "v2.6.6b5" +__version__ = "v2.6.7b6" GITHUB_API_URL = "https://api.github.com/repos/ChocoMeow/Vocard/releases/latest" VOCARD_URL = "https://github.com/ChocoMeow/Vocard/archive/" diff --git a/views/search.py b/views/search.py index 720021b..dbab80e 100644 --- a/views/search.py +++ b/views/search.py @@ -20,10 +20,13 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ +from __future__ import annotations import discord -from voicelink import Track +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from voicelink import Track class SearchDropdown(discord.ui.Select): def __init__(self, tracks: list[Track], get_msg: callable) -> None: diff --git a/voicelink/formatter.py b/voicelink/formatter.py index 8b4fde5..115d642 100644 --- a/voicelink/formatter.py +++ b/voicelink/formatter.py @@ -1,6 +1,10 @@ +from __future__ import annotations + import base64, io, abc, struct, dataclasses -from typing import Union, BinaryIO, Optional +from typing import Union, BinaryIO, Optional, TYPE_CHECKING +if TYPE_CHECKING: + from .objects import Track @dataclasses.dataclass(frozen=True) class Codec: @@ -180,14 +184,14 @@ class TrackDecoder: "identifier": body_reader.read_utf(), "is_stream": body_reader.read_bool(), "uri": body_reader.read_optional_utf(), - "thumbnail": None if version not in [0, 3] else body_reader.read_optional_utf(), + "artworkUrl": None if version not in [0, 3] else body_reader.read_optional_utf(), "isrc": None if version != 3 else body_reader.read_optional_utf(), "sourceName": body_reader.read_utf(), "position": body_reader.read_long() } class TrackEncoder: - def encode(self, stream: MessageOutput, track) -> None: + def encode(self, stream: MessageOutput, track: Track) -> None: body_writer = stream.start() body_writer.write_byte(0) diff --git a/voicelink/objects.py b/voicelink/objects.py index 60b0981..3a36a36 100644 --- a/voicelink/objects.py +++ b/voicelink/objects.py @@ -88,15 +88,11 @@ class Track: self._search_type: SearchType = SearchType.ytmsearch if self.spotify else search_type self.spotify_track: Track = spotify_track - self.thumbnail: str = None - self.emoji: str = emoji_source(self.source) + self.thumbnail: str = info.get("artworkUrl") + if not self.thumbnail and YOUTUBE_REGEX.match(self.uri): + self.thumbnail = f"https://img.youtube.com/vi/{self.identifier}/maxresdefault.jpg" - if artworkUrl := info.get("artworkUrl"): - self.thumbnail = artworkUrl - - elif YOUTUBE_REGEX.match(self.uri): - self.thumbnail = f"https://img.youtube.com/vi/{self.identifier}/hqdefault.jpg" - + self.emoji: str = emoji_source(self.source) self.length: float = 3000 if self.source == "soundcloud" and "/preview/" in self.identifier else info.get("length") self.requester: Member = requester diff --git a/voicelink/pool.py b/voicelink/pool.py index 703304d..6b33e2a 100644 --- a/voicelink/pool.py +++ b/voicelink/pool.py @@ -401,20 +401,20 @@ class Node: return [ Track( track_id=None, + info=spotify_results.to_dict(), requester=requester, search_type=search_type, spotify_track=spotify_results, - info=spotify_results.to_dict() ) ] tracks = [ Track( track_id=None, + info=track.to_dict(), requester=requester, search_type=search_type, spotify_track=track, - info=track.to_dict() ) for track in spotify_results.tracks if track.uri ] @@ -467,7 +467,7 @@ class Node: raise TrackLoadError("There was an error while trying to load this track.") elif load_type == "error": - exception = data["exception"] + exception = data["data"] raise TrackLoadError(f"{exception['message']} [{exception['severity']}]") elif load_type == "empty": diff --git a/voicelink/spotify/objects.py b/voicelink/spotify/objects.py index ad7a1b8..2cdd5f9 100644 --- a/voicelink/spotify/objects.py +++ b/voicelink/spotify/objects.py @@ -1,5 +1,3 @@ -from typing import List - class Track: """The base class for a Spotify Track""" @@ -16,7 +14,7 @@ class Track: def __init__(self, data: dict, image=None) -> None: self.name: str = data.get('name', 'Unknown') self.artists: str = ", ".join(artist["name"] for artist in data.get('artists')) - self.artist_id: list = [artist['id'] for artist in data.get('artists')] + self.artist_id: list[str] = [artist['id'] for artist in data.get('artists')] self.length: int = data.get('duration_ms') self.id: str = data.get('id') self.image: str = images[0]["url"] if (images := data.get("album", {}).get("images")) else image @@ -33,7 +31,7 @@ class Track: "isStream": False, "isSeekable": True, "position": 0, - "thumbnail": self.image + "artworkUrl": self.image } def __repr__(self) -> str: @@ -59,7 +57,7 @@ class Album: self.name: str = data.get('name', 'Unknown') self.artists: str = ", ".join(artist["name"] for artist in data.get('artists')) self.image: str = data["images"][0]["url"] - self.tracks: list = [Track(track, image=self.image) for track in data["tracks"]["items"]] + self.tracks: list[Track] = [Track(track, image=self.image) for track in data["tracks"]["items"]] self.total_tracks: int = data["total_tracks"] self.id: str = data.get('id') self.uri: str = data["external_urls"]["spotify"] @@ -83,7 +81,7 @@ class Artist: "name" ) def __init__(self, data: dict) -> None: - self.tracks: List[Track] = [Track(track) for track in data['tracks']] + self.tracks: list[Track] = [Track(track) for track in data['tracks']] if self.tracks: self.image: str = self.tracks[0].image self.total_tracks: int = len(self.tracks) @@ -111,9 +109,9 @@ class Playlist: "uri" ) - def __init__(self, data: dict, tracks: List[Track]) -> None: + def __init__(self, data: dict, tracks: list[Track]) -> None: self.name: str = data.get('name', 'Unknown') - self.tracks: List[Track] = tracks + self.tracks: list[Track] = tracks self.owner: str = data["owner"]["display_name"] self.total_tracks: int = data["tracks"]["total"] self.id: str = data.get('id') diff --git a/web/static/js/objects.js b/web/static/js/objects.js index b8ff078..7ccd622 100644 --- a/web/static/js/objects.js +++ b/web/static/js/objects.js @@ -130,6 +130,19 @@ const decoders = [ const source = input.readUTF(); return { track_id, title, author, length, identifier, isStream, uri, thumbnail: null, source, position: 0n }; + }, + (input, track_id) => { + const title = input.readUTF(); + const author = input.readUTF(); + const length = input.readLong(); + const identifier = input.readUTF(); + const isStream = input.readBoolean(); + const uri = input.readBoolean() ? input.readUTF() : null; + const thumbnail = input.readBoolean() ? input.readUTF() : null; + const isrc = input.readBoolean() ? input.readUTF() : null; + const source = input.readUTF(); + + return { track_id, title, author, length, identifier, isStream, uri, thumbnail, source, position: 0n }; } ] function decode(track_id) {