diff --git a/addons/settings.py b/addons/settings.py index 28660e4..b0c8f4f 100644 --- a/addons/settings.py +++ b/addons/settings.py @@ -10,7 +10,7 @@ class Settings: self.activity: dict = settings.get("activity", [{"listen": "/help"}]) self.embed_color: str = int(settings.get("embed_color", "0xb3b3b3"), 16) self.bot_access_user: list = settings.get("bot_access_user", []) - self.emoji_source_raw: dict = settings.get("emoji_source_raw", {}) + self.sources_settings: dict = settings.get("sources_settings", {}) self.cooldowns_settings: dict = settings.get("cooldowns", {}) self.aliases_settings: dict = settings.get("aliases", {}) self.controller: dict = settings.get("default_controller", {}) diff --git a/cogs/basic.py b/cogs/basic.py index 24ebcc3..3e5be6f 100644 --- a/cogs/basic.py +++ b/cogs/basic.py @@ -29,7 +29,7 @@ from discord.ext import commands from function import ( time as ctime, formatTime, - emoji_source, + get_source, get_lang, settings, cooldown_check, @@ -219,7 +219,7 @@ class Basic(commands.Cog): query_track = "\n".join( f"`{index}.` `[{track.formatted_length}]` **{track.title[:35]}**" for index, track in enumerate(tracks[0:10], start=1)) embed = discord.Embed(title=player.get_msg('searchTitle').format(query), description=player.get_msg( - 'searchDesc').format(emoji_source(platform), platform, len(tracks[0:10]), query_track), color=settings.embed_color) + 'searchDesc').format(get_source(platform, "emoji"), platform, len(tracks[0:10]), query_track), color=settings.embed_color) view = SearchView(tracks=tracks[0:10], lang=player.get_msg) view.response = await ctx.send(embed=embed, view=view, ephemeral=True) diff --git a/function.py b/function.py index e8b331f..191cabc 100644 --- a/function.py +++ b/function.py @@ -103,8 +103,9 @@ def formatTime(number:str) -> Optional[int]: return (int(num.tm_hour) * 3600 + int(num.tm_min) * 60 + int(num.tm_sec)) * 1000 -def emoji_source(emoji:str) -> str: - return settings.emoji_source_raw.get(emoji.lower(), "🔗") +def get_source(source: str, type: str) -> str: + source_settings: dict = settings.sources_settings.get(source.lower(), {}) + return source_settings.get(type, ("🔗" if type == "emoji" else settings.embed_color)) def gen_report() -> Optional[discord.File]: if ERROR_LOGS: diff --git a/settings Example.json b/settings Example.json index 3b3636e..cdd08b8 100644 --- a/settings Example.json +++ b/settings Example.json @@ -21,17 +21,47 @@ "port": 8000, "enable": false }, - "emoji_source_raw": { - "youtube": "<:youtube:826661982760992778>", - "youtube music": "<:youtube:826661982760992778>", - "spotify": "<:spotify:826661996615172146>", - "soundcloud": "<:soundcloud:852729280027033632>", - "twitch": "<:twitch:852729278285086741>", - "bandcamp": "<:bandcamp:864694003811221526>", - "vimeo": "<:vimeo:864694001919721473>", - "apple": "<:applemusic:994844332374884413>", - "reddit": "<:reddit:996007566863773717>", - "tiktok": "<:tiktok:996007689798811698>" + "sources_settings": { + "youtube": { + "emoji": "<:youtube:826661982760992778>", + "color": "0xFF0000" + }, + "youtube music": { + "emoji": "<:youtube:826661982760992778>", + "color": "0xFF0000" + }, + "spotify": { + "emoji": "<:spotify:826661996615172146>", + "color": "0x1DB954" + }, + "soundcloud": { + "emoji": "<:soundcloud:852729280027033632>", + "color": "0xFF7700" + }, + "twitch": { + "emoji": "<:twitch:852729278285086741>", + "color": "0x9B4AFF" + }, + "bandcamp": { + "emoji": "<:bandcamp:864694003811221526>", + "color": "0x6F98A7" + }, + "vimeo": { + "emoji": "<:vimeo:864694001919721473>", + "color": "0x1ABCEA" + }, + "apple": { + "emoji": "<:applemusic:994844332374884413>", + "color": "0xE298C4" + }, + "reddit": { + "emoji": "<:reddit:996007566863773717>", + "color": "0xFF5700" + }, + "tiktok": { + "emoji": "<:tiktok:996007689798811698>", + "color": "0x74ECE9" + } }, "default_controller": { "embeds": { diff --git a/views/playlist.py b/views/playlist.py index 0068420..e78fd4f 100644 --- a/views/playlist.py +++ b/views/playlist.py @@ -107,9 +107,9 @@ class PlaylistView(discord.ui.View): trackStr = func.get_lang(guild_id, 'playlistViewTrack') if tracks: if self.current.get("type") == "playlist": - embed.add_field(name=trackStr, value="\n".join(f"{func.emoji_source(track['sourceName'])} `{index}.` `[{func.time(track['length'])}]` **{track['title'][:30]}**" for index, track in enumerate(tracks, start=offset - 6)), inline=False) + embed.add_field(name=trackStr, value="\n".join(f"{func.get_source(track['sourceName'], 'emoji')} `{index}.` `[{func.time(track['length'])}]` **{track['title'][:30]}**" for index, track in enumerate(tracks, start=offset - 6)), inline=False) else: - embed.add_field(name=trackStr, value='\n'.join(f"{func.emoji_source(extract(track.info['uri']).domain)} `{index}.` `[{func.time(track.length)}]` **{track.title[:30]}** " for index, track in enumerate(tracks, start=offset - 6)), inline=False) + embed.add_field(name=trackStr, value='\n'.join(f"{func.get_source(extract(track.info['uri']).domain, 'emoji')} `{index}.` `[{func.time(track.length)}]` **{track.title[:30]}** " for index, track in enumerate(tracks, start=offset - 6)), inline=False) else: embed.add_field(name=trackStr, value=func.get_lang(guild_id, 'playlistNoTrack').format(self.current['name']), inline=False) diff --git a/voicelink/objects.py b/voicelink/objects.py index e0a00e4..ca7c13e 100644 --- a/voicelink/objects.py +++ b/voicelink/objects.py @@ -29,7 +29,7 @@ from tldextract import extract from .enums import SearchType from function import ( - emoji_source, + get_source, time as ctime ) @@ -94,7 +94,7 @@ class Track: if not self.thumbnail and YOUTUBE_REGEX.match(self.uri): self.thumbnail = f"https://img.youtube.com/vi/{self.identifier}/maxresdefault.jpg" - self.emoji: str = emoji_source(self.source) + self.emoji: str = get_source(self.source, "emoji") 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/placeholders.py b/voicelink/placeholders.py index 585d130..073a644 100644 --- a/voicelink/placeholders.py +++ b/voicelink/placeholders.py @@ -31,6 +31,7 @@ class Placeholders: "track_author": self.track_author, "track_duration": self.track_duration, "track_thumbnail": self.track_thumbnail, + "track_color": self.track_color, "requester": self.requester, "requester_name": self.requester_name, "requester_avatar": self.requester_avatar, @@ -78,6 +79,10 @@ class Placeholders: def requester_avatar(self, track: Track) -> str: return track.requester.display_avatar.url if track.requester else self.bot.user.display_avatar.url + @ensure_track + def track_color(self, track: Track) -> int: + return int(func.get_source(track.source, "color"), 16) + def track_thumbnail(self) -> str: if not self.player or not self.player.current: return "https://i.imgur.com/dIFBwU7.png"