diff --git a/cogs/disabled/test.py b/cogs/disabled/test.py index 17fe0aa..628209f 100644 --- a/cogs/disabled/test.py +++ b/cogs/disabled/test.py @@ -1,6 +1,8 @@ import disnake from disnake import Option from disnake.ext import commands + +from lib import YandexPlayer from lib.Logger import logger @@ -13,13 +15,15 @@ class Testing(commands.Cog, name='Testing'): logger.info(f'Cog {__name__.split(".")[1]} is ready!.') @commands.slash_command(name='play', description='play audio test from yandex.music', options=[ - Option(name='search', description='seach track/artist'), - Option(name='type', description='type of search', - choices=['all', 'artist', 'user', 'album', 'playlist', 'track', 'podcast', 'podcast_episode']) + Option(name='search', + description='seach track/artist', + required=True), ]) - async def play(self, inter: disnake.ApplicationCommandInteraction, audio): + async def play(self, inter: disnake.ApplicationCommandInteraction, search: str): # TODO add yandex_music player with queue, playlists - pass + result = YandexPlayer.search(search) + await inter.response.send_message(result, ephemeral=True) + def setup(bot): # an extension must have a setup function diff --git a/lib/YandexPlayer.py b/lib/YandexPlayer.py index 43ebb2c..e1b1c6a 100644 --- a/lib/YandexPlayer.py +++ b/lib/YandexPlayer.py @@ -2,10 +2,80 @@ import os from yandex_music import Client -client = Client(os.getenv('Yandex_Token')).init() +client = Client('AQAAAAAzqNkbAAG8XrWGNg9A5kCakiE_9HDst58').init() -def _search(_str: str, _type: str): +def search(_str: str, _type: str = 'all') -> dict: search_result = client.search(_str, type_=_type) - print(search_result) - pass + type_ = search_result.best.type + best = search_result.best.result + # print(search_result) + if type_ == 'track': + artists = '' + if best.artists: + artists = ', '.join(artist.name for artist in best.artists) + if best.albums: + for i in best.albums: + album_id = i.id + album_title = i.title + else: + album_id = None + album_title = None + + # Generate json for track + result_json = { + "artist": { + "id": best.id, + "name": artists + }, + "track": { + "id": best.trackId, + "title": best.title + }, + "album": { + "id": album_id, + "title": album_title + } + } + elif type_ == 'artist': + result_json = { + "artist": { + "id": best.id, + "name": best.name + } + } + elif type_ == 'album': + artists = '' + if best.artists: + artists = ', '.join(artist.name for artist in best.artists) + for i in best.artists: + artist_id = i.id + artist_name = i.name + _tracks = [] + tracks = {} + album = client.albums_with_tracks(best.id) + for i, volume in enumerate(album.volumes): + if len(album.volumes) > 1: + _tracks.append(f'💿 Диск {i + 1}') + _tracks += volume + _i = 1 + for track in _tracks: + tracks[f"track_{_i}"] = { + "id": track.id, + "tittle": track.title + } + _i += 1 + + result_json = { + "artist": { + "id": artist_id, + "name": artist_name + }, + "album": { + "id": best.id, + "title": best.title + }, + "tracks": tracks + } + print(_type) + return result_json