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 channel_request( slug: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
15def channel_request(slug: str, endpoints: E = None) -> Request:
16    return _request("website.channel_request", slug=slug, endpoints=endpoints)
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:
24def history_request(channel_id: int, endpoints: E = None) -> Request:
25    return _request("website.history_request", channel_id=channel_id, endpoints=endpoints)
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:
33def channel_user_request(channel_slug: str, username: str, endpoints: E = None) -> Request:
34    return _request("website.channel_user_request", channel_slug=channel_slug, username=username, endpoints=endpoints)
def parse_channel_user(status: int, body: str) -> dict:
37def parse_channel_user(status: int, body: str) -> dict:
38    return _call("website.parse_channel_user", status=status, body=body)
def me_request( session: str, channel_slug: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
41def me_request(session: str, channel_slug: str, endpoints: E = None) -> Request:
42    return _request("website.me_request", session=session, channel_slug=channel_slug, endpoints=endpoints)
def parse_me(status: int, body: str) -> dict:
45def parse_me(status: int, body: str) -> dict:
46    return _call("website.parse_me", status=status, body=body)
def ban_request( session: str, channel_slug: str, username: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
49def ban_request(session: str, channel_slug: str, username: str, endpoints: E = None) -> Request:
50    return _request("website.ban_request", session=session, channel_slug=channel_slug, username=username, endpoints=endpoints)
def timeout_request( session: str, channel_slug: str, username: str, minutes: int, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
53def timeout_request(session: str, channel_slug: str, username: str, minutes: int, endpoints: E = None) -> Request:
54    return _request(
55        "website.timeout_request",
56        session=session,
57        channel_slug=channel_slug,
58        username=username,
59        minutes=minutes,
60        endpoints=endpoints,
61    )
def unban_request( session: str, channel_slug: str, username: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
64def unban_request(session: str, channel_slug: str, username: str, endpoints: E = None) -> Request:
65    return _request("website.unban_request", session=session, channel_slug=channel_slug, username=username, endpoints=endpoints)
def delete_message_request( session: str, chatroom_id: int, message_id: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
68def delete_message_request(session: str, chatroom_id: int, message_id: str, endpoints: E = None) -> Request:
69    return _request(
70        "website.delete_message_request", session=session, chatroom_id=chatroom_id, message_id=message_id, endpoints=endpoints
71    )
def pin_request( session: str, channel_slug: str, message: Any, minutes: int, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
74def pin_request(session: str, channel_slug: str, message: Any, minutes: int, endpoints: E = None) -> Request:
75    return _request(
76        "website.pin_request", session=session, channel_slug=channel_slug, message=message, minutes=minutes, endpoints=endpoints
77    )
def unpin_request( session: str, channel_slug: str, endpoints: Optional[Mapping[str, str]] = None) -> kicksdk.Request:
80def unpin_request(session: str, channel_slug: str, endpoints: E = None) -> Request:
81    return _request("website.unpin_request", session=session, channel_slug=channel_slug, endpoints=endpoints)
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:
105def parse_action(status: int, body: str) -> None:
106    _call("website.parse_action", status=status, body=body)