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:
ValueErrorfor invalid input parametersExceptionfor 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 informationchannel:read- Access channel informationchannel:write- Update channel metadatachat:write- Send chat messagesevents: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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kickpython-0.1.1.tar.gz.
File metadata
- Download URL: kickpython-0.1.1.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a2c31e6b4c6947d426f84bc0cf815fe8337a43325eaa6452edc31e2d2acc1f0b
|
|
| MD5 |
6659fb1f33bf3a73085d5fc523fc2e54
|
|
| BLAKE2b-256 |
ed825424efd6bad99b1567f02d3ae3d6402fea425a9c636c5784a4708fa5e4cd
|
File details
Details for the file kickpython-0.1.1-py3-none-any.whl.
File metadata
- Download URL: kickpython-0.1.1-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78ac012ecd4558f2c22a6be5dc04d496326140581ed82ccf5420cf6ba3ca2c49
|
|
| MD5 |
2cacea308929bdbecd4d8ae6710a6df4
|
|
| BLAKE2b-256 |
d469f8c1d71fd41f9bfed5d102eca5dffb5df23c166a265ef19d83c7eac12737
|