Added base jsonlike return for player

This commit is contained in:
bacon
2024-03-10 16:07:51 +03:00
parent 01db1c254d
commit 0c2fc80485
2 changed files with 83 additions and 9 deletions

View File

@@ -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

View File

@@ -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