Skip to content

Commit 9d1a5fd

Browse files
committed
added track filter
1 parent 23f4621 commit 9d1a5fd

File tree

1 file changed

+36
-8
lines changed

1 file changed

+36
-8
lines changed

ChillBot/music.py

+36-8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,32 @@ class TrackItem:
1818
Type: int
1919
"""
2020

21+
@dataclass(frozen=True)
22+
class TrackList:
23+
"""Track data list"""
24+
25+
tracks: list[TrackItem]
26+
"""List of tracks
27+
28+
Type: list[TrackItem]
29+
"""
30+
31+
def __init__(self):
32+
super().__init__()
33+
34+
def filter(self, name: str) -> TrackItem | None:
35+
"""Filters the tracks
36+
37+
Returns: TrackItem | None
38+
"""
39+
40+
data = [x for x in self.tracks if x.get('name').lower() == name.lower()]
41+
42+
if len(data) == 0:
43+
return None
44+
45+
return TrackItem(data[0].get('name'), data[0].get('plays'))
46+
2147
@dataclass(frozen=True)
2248
class ArtistItem:
2349
"""Gets the artist data"""
@@ -38,7 +64,7 @@ class ArtistList:
3864
"""Artist data list"""
3965

4066
artists: list[ArtistItem]
41-
"""The name of the artist
67+
"""List of artists
4268
4369
Type: list[ArtistItem]
4470
"""
@@ -56,8 +82,8 @@ def filter(self, name: str) -> ArtistItem | None:
5682

5783
if len(data) == 0:
5884
return None
59-
60-
return ArtistItem(data[0].get('name'), [TrackItem(x, y) for x, y in data[0].get('tracks').items()])
85+
86+
return ArtistItem(data[0].get('name'), TrackList([TrackItem(x, y) for x, y in data[0].get('tracks').items()]))
6187

6288

6389
@dataclass(frozen=True)
@@ -69,25 +95,25 @@ class MusicResponse:
6995
7096
Type: int
7197
"""
72-
artists: list[ArtistList]
98+
artists: ArtistList
7399
"""Returns the list of artists
74100
75-
Type: list[ArtistList]
101+
Type: ArtistList
76102
"""
77103

78104

79105
class Music:
80106
"""Music class for requesting Music data"""
81107

82108
@staticmethod
83-
async def get_top_ten(id: str):
109+
async def get_top_ten(id: str | int):
84110
"""Gets the top 10 music data request
85111
86112
Returns: MusicResponse
87113
"""
88114
response = await Request(
89115
headers={"Content-Type": "application/json"},
90-
params={"user_id": id}
116+
params={"user_id": str(id)}
91117
).GET(
92118
"/music"
93119
)
@@ -103,7 +129,9 @@ async def get_top_ten(id: str):
103129
ArtistList(
104130
[ArtistItem(
105131
x.get('name'),
106-
[TrackItem(x, y) for x, y in x.get('tracks').items()]
132+
TrackList(
133+
[TrackItem(x, y) for x, y in x.get('tracks').items()]
134+
)
107135
) for x in json_response.get('artists')]
108136
)
109137
)

0 commit comments

Comments
 (0)