🟢 spotify playlists now working
This commit is contained in:
@@ -7,7 +7,6 @@ import cogs.music.translate as translate
|
|||||||
|
|
||||||
|
|
||||||
from cogs.music.help import music_help
|
from cogs.music.help import music_help
|
||||||
import discord
|
|
||||||
|
|
||||||
import spotipy
|
import spotipy
|
||||||
from spotipy.oauth2 import SpotifyClientCredentials
|
from spotipy.oauth2 import SpotifyClientCredentials
|
||||||
@@ -39,16 +38,6 @@ def get_spotify_creds():
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# call play on ffmpeg exit
|
|
||||||
class AstroPlayer(discord.FFmpegPCMAudio):
|
|
||||||
def __init__(self, ctx, source, options) -> None:
|
|
||||||
#self.ctx = ctx
|
|
||||||
super().__init__(source, **options)
|
|
||||||
|
|
||||||
def _kill_process(self):
|
|
||||||
super()._kill_process()
|
|
||||||
#asyncio.create_task(play(self.ctx))
|
|
||||||
|
|
||||||
class music(commands.Cog):
|
class music(commands.Cog):
|
||||||
def __init__(self, client):
|
def __init__(self, client):
|
||||||
self.client = client
|
self.client = client
|
||||||
|
|||||||
@@ -278,6 +278,15 @@ async def grab_songs(server_id):
|
|||||||
|
|
||||||
return max, songs
|
return max, songs
|
||||||
|
|
||||||
|
# call play on ffmpeg exit
|
||||||
|
class AstroPlayer(discord.FFmpegPCMAudio):
|
||||||
|
def __init__(self, ctx, source, options) -> None:
|
||||||
|
self.ctx = ctx
|
||||||
|
super().__init__(source, **options)
|
||||||
|
|
||||||
|
def _kill_process(self):
|
||||||
|
super()._kill_process()
|
||||||
|
asyncio.run(play(self.ctx))
|
||||||
|
|
||||||
# Play and loop songs in server
|
# Play and loop songs in server
|
||||||
async def play(ctx):
|
async def play(ctx):
|
||||||
@@ -297,14 +306,4 @@ async def play(ctx):
|
|||||||
|
|
||||||
# else play next song and call play again
|
# else play next song and call play again
|
||||||
await ctx.voice_client.play(
|
await ctx.voice_client.play(
|
||||||
AstroPlayer(ctx, url, FFMPEG_OPTS))
|
AstroPlayer(ctx, url, FFMPEG_OPTS))
|
||||||
|
|
||||||
# call play on ffmpeg exit
|
|
||||||
class AstroPlayer(discord.FFmpegPCMAudio):
|
|
||||||
def __init__(self, ctx, source, options) -> None:
|
|
||||||
self.ctx = ctx
|
|
||||||
super().__init__(source, **options)
|
|
||||||
|
|
||||||
def _kill_process(self):
|
|
||||||
super()._kill_process()
|
|
||||||
asyncio.run(play(self.ctx))
|
|
||||||
@@ -23,7 +23,7 @@ def main(url, sp):
|
|||||||
if 'track' in url:
|
if 'track' in url:
|
||||||
return spotify_song(url, sp)
|
return spotify_song(url, sp)
|
||||||
elif 'playlist' in url:
|
elif 'playlist' in url:
|
||||||
return spotify_playlist(url)
|
return spotify_playlist(url, sp)
|
||||||
|
|
||||||
soundcloud_song = 'soundcloud' in url and 'sets' not in url
|
soundcloud_song = 'soundcloud' in url and 'sets' not in url
|
||||||
# Not implemented yet
|
# Not implemented yet
|
||||||
@@ -75,8 +75,38 @@ def spotify_song(url, sp):
|
|||||||
return search_song(query)
|
return search_song(query)
|
||||||
|
|
||||||
|
|
||||||
def spotify_playlist(url):
|
def spotify_playlist(url, sp):
|
||||||
return []
|
# Get the playlist uri code
|
||||||
|
code = url.split("/")[-1].split("?")[0]
|
||||||
|
|
||||||
|
# Grab the tracks if the playlist is correct
|
||||||
|
try:
|
||||||
|
results = sp.playlist_tracks(code)['items']
|
||||||
|
except spotipy.exceptions.SpotifyException:
|
||||||
|
return []
|
||||||
|
|
||||||
|
# Go through the tracks
|
||||||
|
songs = []
|
||||||
|
for track in results:
|
||||||
|
search = ""
|
||||||
|
|
||||||
|
# Fetch all artists
|
||||||
|
for artist in track['track']['artists']:
|
||||||
|
|
||||||
|
# Add all artists to search
|
||||||
|
search += f"{artist['name']}, "
|
||||||
|
|
||||||
|
# Remove last column
|
||||||
|
search = search[:-2]
|
||||||
|
search += f" - {track['track']['name']}"
|
||||||
|
|
||||||
|
searched_result = search_song(search)
|
||||||
|
if searched_result == []:
|
||||||
|
continue
|
||||||
|
|
||||||
|
songs.append(searched_result[0])
|
||||||
|
|
||||||
|
return songs
|
||||||
|
|
||||||
|
|
||||||
def song_download(url):
|
def song_download(url):
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ async def display_server_queue(ctx: Context, songs, n):
|
|||||||
title=f"{server.name}'s Queue!",
|
title=f"{server.name}'s Queue!",
|
||||||
color=config.get_color("main"))
|
color=config.get_color("main"))
|
||||||
|
|
||||||
display = f"🔊 Currently playing: ``{await queue.get_current_song(ctx.guild.id)}``\n"
|
display = f"🔊 Currently playing: ``{await queue.get_current_song(ctx.guild.id)}``\n\n"
|
||||||
for i, song in enumerate(songs):
|
for i, song in enumerate(songs):
|
||||||
display += f"``{i + 1}.`` {song[0]} - {format_time(song[1])} Queued by {song[2]}\n"
|
display += f"``{i + 1}.`` {song[0]} - {format_time(song[1])} Queued by {song[2]}\n"
|
||||||
msg.add_field(name="Songs:",
|
msg.add_field(name="Songs:",
|
||||||
|
|||||||
@@ -25,3 +25,4 @@ urllib3==2.0.2
|
|||||||
websockets==11.0.3
|
websockets==11.0.3
|
||||||
yarl==1.9.2
|
yarl==1.9.2
|
||||||
yt-dlp
|
yt-dlp
|
||||||
|
spotipy
|
||||||
|
|||||||
Reference in New Issue
Block a user