Skip to content

Commit 51fcf99

Browse files
committed
Add fetch_livestreams
1 parent 24bcd2c commit 51fcf99

File tree

2 files changed

+49
-4
lines changed

2 files changed

+49
-4
lines changed

src/kickpy/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Async library for Kick.com API and webhooks"""
22

3-
__version__ = "0.0.51"
3+
__version__ = "0.0.52"

src/kickpy/client.py

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,13 @@ async def fetch_channel(self, user_id: int) -> Channel:
170170
data = await self._fetch_api("GET", "channels", params={"broadcaster_user_id": user_id})
171171
return Channel.from_dict(data["data"][0])
172172

173-
async def fetch_livestreams(self, user_id: int) -> list[LiveStream]:
174-
"""Get livestreams by the user ID.
173+
async def fetch_livestream(self, user_id: int) -> LiveStream:
174+
"""Get livestream by the user ID.
175175
176176
Parameters
177177
----------
178178
user_id: int
179-
The user ID to get livestreams from.
179+
The user ID to get livestream from.
180180
181181
Returns
182182
-------
@@ -186,6 +186,51 @@ async def fetch_livestreams(self, user_id: int) -> list[LiveStream]:
186186
data = await self._fetch_api("GET", "livestreams", params={"user_id": user_id})
187187
return LiveStream.from_dict(data["data"][0])
188188

189+
async def fetch_livestreams(
190+
self,
191+
user_id: int | None,
192+
category_id: int | None,
193+
language: str | None,
194+
limit: int | None,
195+
sort: str = "viewer_count",
196+
) -> list[LiveStream]:
197+
"""Get livestreams.
198+
199+
Parameters
200+
----------
201+
user_id: int
202+
The user ID to get livestream from.
203+
category_id: int
204+
The category ID to get livestream from.
205+
language: str
206+
The language to get livestream from.
207+
limit: int
208+
The limit of livestreams to get.
209+
sort: str
210+
The sort order of livestreams. Either 'viewer_count' or 'created_at'.
211+
212+
Returns
213+
-------
214+
list[LiveStream]
215+
A list of livestream data.
216+
"""
217+
if sort not in {"viewer_count", "created_at"}:
218+
raise ValueError("Invalid sort order. Must be either 'viewer_count' or 'created_at'.")
219+
220+
params = {}
221+
if user_id:
222+
params["user_id"] = user_id
223+
if category_id:
224+
params["category_id"] = category_id
225+
if language:
226+
params["language"] = language
227+
if limit:
228+
params["limit"] = limit
229+
params["sort"] = sort
230+
231+
data = await self._fetch_api("GET", "livestreams", params=params)
232+
return [LiveStream.from_dict(livestream) for livestream in data["data"]]
233+
189234
async def fetch_categories(self, query: str) -> list[Category]:
190235
"""Get categories by a query.
191236

0 commit comments

Comments
 (0)