Skip to main content

Python wrapper for Kick.com API

Project description

KickPython - Python API Wrapper

A Python wrapper for the Kick.com API that provides easy access to Kick.com's public API endpoints and WebSocket chat functionality.

Installation

pip install kickpython

Features

  • OAuth 2.1 authentication with PKCE support
  • Automatic token storage and refresh
  • Channel management
  • Chat message sending and receiving
  • WebSocket-based chat listener
  • Support for channel category management
  • Proxy support

Usage

Basic Initialization

from kickpython import KickAPI

# For OAuth 2.1 authentication (recommended)
api = KickAPI(
    client_id="your_client_id",
    client_secret="your_client_secret",
    redirect_uri="your_redirect_uri",
    db_path="kick_tokens.db"  # Optional, defaults to kick_tokens.db
)

# With proxy support
api = KickAPI(
    client_id="your_client_id",
    client_secret="your_client_secret",
    redirect_uri="your_redirect_uri",
    proxy="proxy.example.com:8080",
    proxy_auth="username:password"
)

OAuth Authentication

# Generate authorization URL with PKCE
auth_data = api.get_auth_url([
    "user:read",
    "channel:read",
    "channel:write",
    "chat:write",
    "events:subscribe"
])

# The auth URL for user authorization
auth_url = auth_data["auth_url"]
code_verifier = auth_data["code_verifier"]
state = auth_data["state"]

# After user authorization, exchange the code for tokens
token_data = await api.exchange_code(code, code_verifier)

# Tokens are automatically stored and managed
await api.start_token_refresh()  # Start automatic token refresh

Chat Functionality

Sending Messages

# Send a chat message
await api.post_chat(
    channel_id="123",
    content="Hello from the bot!"
)

Listening to Chat Messages

# Define a message handler
async def message_handler(message):
    username = message['sender_username']
    content = message['content']
    badges = message['badges']
    chat_id = message['chat_id']
    print(f"{username}: {content}")

# Add the message handler
api.add_message_handler(message_handler)

# Connect to a channel's chat
await api.connect_to_chatroom("channel_username")
# Or connect using chatroom ID
await api.connect_to_chatroom("123456")

Channel Management

# Get channel information
channels = await api.get_channels()

# Update channel information
await api.update_channel(
    channel_id="123",
    category_id="456",
    stream_title="New Stream Title"
)

Category Management

# Get list of categories
categories = await api.get_categories()

# Search for specific categories
results = await api.get_categories(query="games")

# Get specific category
category = await api.get_category(category_id="123")

Complete Examples

OAuth Web Server

See examples/oauth.py for a complete Flask-based OAuth implementation that includes:

  • OAuth authorization flow with PKCE
  • Token management interface
  • Token refresh and revocation
  • Example API usage

Chat Bot

See examples/listen_all_channels.py for a chat bot example that:

  • Connects to multiple channels
  • Handles chat messages
  • Responds to commands
  • Handles reconnection

Error Handling

The API methods throw exceptions for error conditions:

  • ValueError for invalid input parameters
  • Exception for API errors with error messages

Example:

try:
    await api.post_chat(channel_id="123", content="")
except ValueError as e:
    print("Invalid parameters:", e)
except Exception as e:
    print("API error:", e)

Available Scopes

  • user:read - Access user information
  • channel:read - Access channel information
  • channel:write - Update channel metadata
  • chat:write - Send chat messages
  • events:subscribe - Subscribe to channel events

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kickpython-0.1.4.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kickpython-0.1.4-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file kickpython-0.1.4.tar.gz.

File metadata

  • Download URL: kickpython-0.1.4.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.0

File hashes

Hashes for kickpython-0.1.4.tar.gz
Algorithm Hash digest
SHA256 49f3c1549071518db1fca6ce69c429765552327d4aece80e9e4ab881e7dfd478
MD5 6a02a25b34b30ede6c60ec237ce59190
BLAKE2b-256 7b45dea8ddd642771aa5a0fff585a7abfe072a42bd05db610f39b034e1eb546d

See more details on using hashes here.

File details

Details for the file kickpython-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: kickpython-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.0

File hashes

Hashes for kickpython-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 97bfd18e2fdf9b67f06ebacb3333b53e236b29d00c53af2f7998d51adbde72b4
MD5 efafab537c87b902e20cab7b7dfddd94
BLAKE2b-256 8acd09c96e163534a6f044def7d7d6becd44b3365121c8ffcf82bc277461d056

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page