Skip to content
This repository was archived by the owner on Apr 5, 2025. It is now read-only.

Commit b60b7ac

Browse files
committed
Add TrackPlaylist for Playlist support.
Updated version.
1 parent 641b29f commit b60b7ac

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
requirements.append('sphinxcontrib-websupport')
4141
requirements.append('Pygments')
4242

43-
version = '0.1.90'
43+
version = '0.1.21'
4444

4545
readme = ''
4646
with open('README.rst') as f:

wavelink/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
__author__ = 'EvieePy'
33
__license__ = 'MIT'
44
__copyright__ = 'Copyright 2019 (c) EvieePy'
5-
__version__ = '0.1.90a'
5+
__version__ = '0.1.21a'
66

77
from .client import Client
88
from .errors import *
99
from .events import *
10-
from .player import Player, Track
10+
from .player import Player, Track, TrackPlaylist
1111
from .node import Node
1212
from .websocket import WebSocket

wavelink/node.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from urllib.parse import quote
2828

2929
from .errors import *
30-
from .player import Player, Track
30+
from .player import Player, Track, TrackPlaylist
3131
from .websocket import WebSocket
3232

3333

@@ -95,7 +95,7 @@ async def connect(self, bot: Union[commands.Bot, commands.AutoShardedBot]):
9595

9696
__log__.info(f'NODE | {self.identifier} connected:: {self.__repr__()}')
9797

98-
async def get_tracks(self, query: str) -> Optional[list]:
98+
async def get_tracks(self, query: str) -> Union[list, TrackPlaylist, None]:
9999
"""|coro|
100100
101101
Search for and return a list of Tracks for the given query.
@@ -120,6 +120,8 @@ async def get_tracks(self, query: str) -> Optional[list]:
120120
return None
121121

122122
tracks = []
123+
if data['playlistInfo']:
124+
return TrackPlaylist(data=data)
123125
for track in data['tracks']:
124126
tracks.append(Track(id_=track['track'], info=track['info']))
125127

wavelink/player.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ class Track:
4343
:ivar duration: The duration of the track.
4444
:ivar uri: The track URI. Could be None.
4545
:ivar is_stream: Bool indicating whether the track is a stream.
46+
:ivar thumb: The thumbnail associated with this track. Could be None.
4647
"""
4748

48-
__slots__ = ('id', 'info', 'query', 'title', 'ytid', 'length', 'duration', 'uri', 'is_stream', 'dead')
49+
__slots__ = ('id', 'info', 'query', 'title', 'ytid', 'length', 'duration', 'uri', 'is_stream', 'dead', 'thumb')
4950

5051
def __init__(self, id_, info, query=None):
5152
self.id = id_
@@ -61,6 +62,11 @@ def __init__(self, id_, info, query=None):
6162
self.is_stream = info.get('isStream')
6263
self.dead = False
6364

65+
if self.ytid:
66+
self.thumb = f"https://img.youtube.com/vi/{self.ytid}/default.jpg"
67+
else:
68+
self.thumb = None
69+
6470
def __str__(self):
6571
return self.title
6672

@@ -69,6 +75,18 @@ def is_dead(self):
6975
return self.dead
7076

7177

78+
class TrackPlaylist:
79+
"""Track Playlist object.
80+
81+
:ivar data: The raw playlist info data dict.
82+
:ivar tracks: The individual :class:`Track` objects from the playlist.
83+
"""
84+
85+
def __init__(self, data: dict):
86+
self.data = data
87+
self.tracks = [Track(id_=track['track'], info=track['info']) for track in data['tracks']]
88+
89+
7290
class Player:
7391

7492
def __init__(self, bot: Union[commands.Bot, commands.AutoShardedBot], guild_id: int, node):

0 commit comments

Comments
 (0)