Applying all the necessary commands to use the new add_track method
This commit is contained in:
@@ -28,7 +28,6 @@ searchPlatform = {
|
||||
"apple": "amsearch",
|
||||
}
|
||||
|
||||
|
||||
async def connect_channel(ctx: commands.Context, channel: discord.VoiceChannel = None) -> voicelink.Player:
|
||||
try:
|
||||
channel = channel or ctx.author.voice.channel
|
||||
@@ -43,7 +42,6 @@ async def connect_channel(ctx: commands.Context, channel: discord.VoiceChannel =
|
||||
player: voicelink.Player = await channel.connect(cls=voicelink.Player(ctx.bot, channel, ctx))
|
||||
return player
|
||||
|
||||
|
||||
async def nowplay(ctx: commands.Context, player: voicelink.Player):
|
||||
track = player.current
|
||||
if not track:
|
||||
@@ -118,11 +116,10 @@ class Basic(commands.Cog):
|
||||
|
||||
try:
|
||||
if isinstance(tracks, voicelink.Playlist):
|
||||
for track in tracks.tracks:
|
||||
player.queue.put(track)
|
||||
await ctx.send(player.get_msg('playlistLoad').format(tracks.name, len(tracks.tracks)))
|
||||
index = await player.add_track(tracks.tracks)
|
||||
await ctx.send(player.get_msg('playlistLoad').format(tracks.name, index))
|
||||
else:
|
||||
position = player.queue.put(tracks[0])
|
||||
position = await player.add_track(tracks[0])
|
||||
await ctx.send((f"`{player.get_msg('live')}`" if tracks[0].is_stream else "") + (player.get_msg('trackLoad_pos').format(tracks[0].title, tracks[0].author, tracks[0].formatLength, position) if position >= 1 and player.is_playing else player.get_msg('trackLoad').format(tracks[0].title, tracks[0].author, tracks[0].formatLength)))
|
||||
except voicelink.QueueFull as e:
|
||||
await ctx.send(e)
|
||||
@@ -158,12 +155,11 @@ class Basic(commands.Cog):
|
||||
|
||||
try:
|
||||
if isinstance(tracks, voicelink.Playlist):
|
||||
for track in tracks.tracks:
|
||||
player.queue.put(track)
|
||||
await ctx.send(player.get_msg('playlistLoad').format(tracks.name, len(tracks.tracks)))
|
||||
index = await player.add_track(tracks.tracks)
|
||||
await ctx.send(player.get_msg('playlistLoad').format(tracks.name, index))
|
||||
else:
|
||||
player.queue.put(tracks[0])
|
||||
await ctx.send((f"`{player.get_msg('live')}`" if tracks[0].is_stream else "") + (player.get_msg('trackLoad_pos').format(tracks[0].title, tracks[0].author, tracks[0].formatLength, player.queue.count) if player.queue.count >= 1 and player.is_playing else player.get_msg('trackLoad').format(tracks[0].title, tracks[0].author, tracks[0].formatLength)))
|
||||
position = await player.add_track(tracks[0])
|
||||
await ctx.send((f"`{player.get_msg('live')}`" if tracks[0].is_stream else "") + (player.get_msg('trackLoad_pos').format(tracks[0].title, tracks[0].author, tracks[0].formatLength, position) if position >= 1 and player.is_playing else player.get_msg('trackLoad').format(tracks[0].title, tracks[0].author, tracks[0].formatLength)))
|
||||
except voicelink.QueueFull as e:
|
||||
await ctx.send(e)
|
||||
finally:
|
||||
@@ -196,8 +192,9 @@ class Basic(commands.Cog):
|
||||
if url(query):
|
||||
return await ctx.send(player.get_msg('noLinkSupport'), ephemeral=True)
|
||||
|
||||
platform = platform.lower()
|
||||
if platform != 'spotify':
|
||||
query_platform = searchPlatform.get(platform.lower(), 'ytsearch') + f":{query}"
|
||||
query_platform = searchPlatform.get(platform, 'ytsearch') + f":{query}"
|
||||
tracks = await player.get_tracks(query=query_platform, requester=ctx.author)
|
||||
else:
|
||||
tracks = await player.spotifySearch(query=query, requester=ctx.author)
|
||||
@@ -208,7 +205,7 @@ class Basic(commands.Cog):
|
||||
query_track = "\n".join(
|
||||
f"`{index}.` `[{track.formatLength}]` **{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.lower()), platform, len(tracks[0:10]), query_track), color=embed_color)
|
||||
'searchDesc').format(emoji_source(platform), platform, len(tracks[0:10]), query_track), color=embed_color)
|
||||
view = SearchView(tracks=tracks[0:10], lang=player.lang)
|
||||
message = await ctx.send(embed=embed, view=view, ephemeral=True)
|
||||
view.response = message
|
||||
@@ -217,9 +214,9 @@ class Basic(commands.Cog):
|
||||
msg = ""
|
||||
for value in view.values:
|
||||
track = tracks[int(value.split(". ")[0]) - 1]
|
||||
player.queue.put(track)
|
||||
position = await player.add_track(track)
|
||||
msg += ((f"`{player.get_msg('live')}`" if track.is_stream else "") + (player.get_msg('trackLoad_pos').format(track.title, track.author, track.formatLength,
|
||||
player.queue.count) if player.queue.count >= 1 else player.get_msg('trackLoad').format(track.title, track.author, track.formatLength)))
|
||||
position) if position >= 1 else player.get_msg('trackLoad').format(track.title, track.author, track.formatLength)))
|
||||
await ctx.send(msg)
|
||||
|
||||
if not player.is_playing:
|
||||
|
||||
@@ -149,9 +149,7 @@ class Playlists(commands.Cog, name="playlist"):
|
||||
|
||||
if value and 0 < value <= (len(tracks['tracks'])):
|
||||
tracks['tracks'] = [tracks['tracks'][value - 1]]
|
||||
for track in tracks['tracks']:
|
||||
player.queue.put(track)
|
||||
|
||||
await player.add_track(tracks['tracks'])
|
||||
await ctx.send(get_lang(ctx.guild.id, 'playlistPlay').format(result['playlist']['name'], len(tracks['tracks'][:max_t])))
|
||||
|
||||
if not player.is_playing:
|
||||
|
||||
@@ -275,18 +275,17 @@ class Player(VoiceProtocol):
|
||||
self.stop_votes.clear()
|
||||
|
||||
track: Track = self.queue.get()
|
||||
|
||||
if not track:
|
||||
if self.settings.get("autoplay", False):
|
||||
if await func.similar_track(self):
|
||||
return await self.do_next()
|
||||
if self.settings.get('controller', True):
|
||||
await self.invoke_controller()
|
||||
return
|
||||
try:
|
||||
await self.play(track, start=track.position)
|
||||
except:
|
||||
await sleep(5)
|
||||
return await self.do_next()
|
||||
else:
|
||||
try:
|
||||
await self.play(track, start=track.position)
|
||||
except:
|
||||
await sleep(5)
|
||||
return await self.do_next()
|
||||
|
||||
if self.settings.get('controller', True):
|
||||
await self.invoke_controller()
|
||||
@@ -519,6 +518,19 @@ class Player(VoiceProtocol):
|
||||
|
||||
return self._current
|
||||
|
||||
async def add_track(self, raw_tracks: Union[Track, List[Track]], at_font: bool = False) -> int:
|
||||
tracks = []
|
||||
try:
|
||||
if (isList := isinstance(raw_tracks, List)):
|
||||
for track in raw_tracks:
|
||||
self.queue.put_at_front(track) if at_font else self.queue.put(track)
|
||||
tracks.append(track)
|
||||
else:
|
||||
position = self.queue.put_at_front(raw_tracks) if at_font else self.queue.put(raw_tracks)
|
||||
tracks.append(raw_tracks)
|
||||
finally:
|
||||
return len(tracks) if isList else position
|
||||
|
||||
async def seek(self, position: float) -> float:
|
||||
"""Seeks to a position in the currently playing track milliseconds"""
|
||||
if position < 0 or position > self._current.original.length:
|
||||
|
||||
@@ -52,7 +52,7 @@ class Queue:
|
||||
return track
|
||||
|
||||
def put(self, item: Track) -> int:
|
||||
if len(self._queue) >= self._size:
|
||||
if self.count >= self._size:
|
||||
raise QueueFull(self.get_msg("voicelinkQueueFull").format(self._size))
|
||||
|
||||
if not self._duplicateTrack:
|
||||
@@ -63,17 +63,18 @@ class Queue:
|
||||
return self.count
|
||||
|
||||
def put_at_front(self, item: Track):
|
||||
if len(self._queue) >= self._size:
|
||||
if self.count >= self._size:
|
||||
raise QueueFull(self.get_msg("voicelinkQueueFull").format(self._size))
|
||||
|
||||
if not self._duplicateTrack:
|
||||
if item.uri in [track.uri for track in self._queue]:
|
||||
raise DuplicateTrack(self.get_msg("voicelinkDuplicateTrack"))
|
||||
|
||||
return self._queue.insert(self._position, item)
|
||||
self._queue.insert(self._position, item)
|
||||
return 1
|
||||
|
||||
def put_at_index(self, index: int, item: Track):
|
||||
if len(self._queue) >= self._size:
|
||||
if self.count >= self._size:
|
||||
raise QueueFull(self.get_msg("voicelinkQueueFull").format(self._size))
|
||||
|
||||
if not self._duplicateTrack:
|
||||
|
||||
Reference in New Issue
Block a user