kicksdk.website
kick.com's own endpoints (kick.com/api/v2): undocumented, a grey area
under Kick's terms. From a server, User-Agent: Mozilla/5.0 passes where a
full browser one is refused.
1"""kick.com's own endpoints (``kick.com/api/v2``): undocumented, a grey area 2under Kick's terms. From a server, ``User-Agent: Mozilla/5.0`` passes where a 3full browser one is refused.""" 4 5from __future__ import annotations 6 7from typing import Any, Mapping, Optional 8 9from . import Request, _call, _request 10 11E = Optional[Mapping[str, str]] 12 13 14def channel_request(slug: str, endpoints: E = None) -> Request: 15 return _request("website.channel_request", slug=slug, endpoints=endpoints) 16 17 18def parse_channel(status: int, body: str) -> dict: 19 """Chatroom id, follower total, live state.""" 20 return _call("website.parse_channel", status=status, body=body) 21 22 23def history_request(channel_id: int, endpoints: E = None) -> Request: 24 return _request("website.history_request", channel_id=channel_id, endpoints=endpoints) 25 26 27def parse_history(status: int, body: str) -> dict: 28 """``{"messages": [...], "pinned": event | None}``""" 29 return _call("website.parse_history", status=status, body=body) 30 31 32def channel_user_request(channel_slug: str, username: str, endpoints: E = None) -> Request: 33 return _request("website.channel_user_request", channel_slug=channel_slug, username=username, endpoints=endpoints) 34 35 36def parse_channel_user(status: int, body: str) -> dict: 37 return _call("website.parse_channel_user", status=status, body=body) 38 39 40def me_request(session: str, channel_slug: str, endpoints: E = None) -> Request: 41 return _request("website.me_request", session=session, channel_slug=channel_slug, endpoints=endpoints) 42 43 44def parse_me(status: int, body: str) -> dict: 45 return _call("website.parse_me", status=status, body=body) 46 47 48def ban_request(session: str, channel_slug: str, username: str, endpoints: E = None) -> Request: 49 return _request("website.ban_request", session=session, channel_slug=channel_slug, username=username, endpoints=endpoints) 50 51 52def timeout_request(session: str, channel_slug: str, username: str, minutes: int, endpoints: E = None) -> Request: 53 return _request( 54 "website.timeout_request", 55 session=session, 56 channel_slug=channel_slug, 57 username=username, 58 minutes=minutes, 59 endpoints=endpoints, 60 ) 61 62 63def unban_request(session: str, channel_slug: str, username: str, endpoints: E = None) -> Request: 64 return _request("website.unban_request", session=session, channel_slug=channel_slug, username=username, endpoints=endpoints) 65 66 67def delete_message_request(session: str, chatroom_id: int, message_id: str, endpoints: E = None) -> Request: 68 return _request( 69 "website.delete_message_request", session=session, chatroom_id=chatroom_id, message_id=message_id, endpoints=endpoints 70 ) 71 72 73def pin_request(session: str, channel_slug: str, message: Any, minutes: int, endpoints: E = None) -> Request: 74 return _request( 75 "website.pin_request", session=session, channel_slug=channel_slug, message=message, minutes=minutes, endpoints=endpoints 76 ) 77 78 79def unpin_request(session: str, channel_slug: str, endpoints: E = None) -> Request: 80 return _request("website.unpin_request", session=session, channel_slug=channel_slug, endpoints=endpoints) 81 82 83def send_request( 84 session: str, 85 chatroom_id: int, 86 content: str, 87 message_ref: str, 88 reply_to: Optional[Mapping[str, Any]] = None, 89 endpoints: E = None, 90) -> Request: 91 """A message, or a reply when ``reply_to`` is 92 ``{"message_id", "content", "sender_id", "sender_username"}``.""" 93 return _request( 94 "website.send_request", 95 session=session, 96 chatroom_id=chatroom_id, 97 content=content, 98 message_ref=message_ref, 99 reply_to=dict(reply_to) if reply_to else None, 100 endpoints=endpoints, 101 ) 102 103 104def parse_action(status: int, body: str) -> None: 105 _call("website.parse_action", status=status, body=body)
E =
typing.Optional[typing.Mapping[str, str]]
def
parse_channel(status: int, body: str) -> dict:
19def parse_channel(status: int, body: str) -> dict: 20 """Chatroom id, follower total, live state.""" 21 return _call("website.parse_channel", status=status, body=body)
Chatroom id, follower total, live state.
def
history_request( channel_id: int, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
parse_history(status: int, body: str) -> dict:
28def parse_history(status: int, body: str) -> dict: 29 """``{"messages": [...], "pinned": event | None}``""" 30 return _call("website.parse_history", status=status, body=body)
{"messages": [...], "pinned": event | None}
def
channel_user_request( channel_slug: str, username: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
parse_channel_user(status: int, body: str) -> dict:
def
me_request( session: str, channel_slug: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
parse_me(status: int, body: str) -> dict:
def
ban_request( session: str, channel_slug: str, username: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
timeout_request( session: str, channel_slug: str, username: str, minutes: int, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
unban_request( session: str, channel_slug: str, username: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
delete_message_request( session: str, chatroom_id: int, message_id: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
pin_request( session: str, channel_slug: str, message: Any, minutes: int, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
unpin_request( session: str, channel_slug: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
def
send_request( session: str, chatroom_id: int, content: str, message_ref: str, reply_to: Optional[Mapping[str, Any]] = None, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
84def send_request( 85 session: str, 86 chatroom_id: int, 87 content: str, 88 message_ref: str, 89 reply_to: Optional[Mapping[str, Any]] = None, 90 endpoints: E = None, 91) -> Request: 92 """A message, or a reply when ``reply_to`` is 93 ``{"message_id", "content", "sender_id", "sender_username"}``.""" 94 return _request( 95 "website.send_request", 96 session=session, 97 chatroom_id=chatroom_id, 98 content=content, 99 message_ref=message_ref, 100 reply_to=dict(reply_to) if reply_to else None, 101 endpoints=endpoints, 102 )
A message, or a reply when reply_to is
{"message_id", "content", "sender_id", "sender_username"}.
def
parse_action(status: int, body: str) -> None: