Skip to main content

A Python package for interacting with the (private) Kahoot! Player API

Project description

Disclaimer: This project is not officially affiliated with Kahoot in any way. It is an open-source project created for educational purposes only. Use at your own risk. I bear no responsibility for any misuse of this tool.

kahoot-py

Python Open Source MIT License

KahootPy is a Python client for interacting with the Kahoot API, allowing you to join games, send responses, and handle events in real-time.

🌟 Features

  • Join Games: Quickly join Kahoot games using game PINs.
  • Event Handling: Register handlers for various game events such as questions and game status updates.
  • Real-Time Communication: Utilize WebSocket connections for real-time interaction with the Kahoot server.
  • User-Friendly: Simple interface for sending packets and handling game events.

🚀 Quick Start

  1. Install the package via pip:

    pip install kahoot
    
  2. Import and use KahootPy in your Python script:

    from kahoot import KahootClient
    

🛠️ Example Usage

Here's a basic example of how to use the KahootClient: Info: Check client_example.py for an example that correctly utilizes the API

import asyncio
from kahoot import KahootClient
from kahoot.packets.server.question_start import QuestionStartPacket

async def question_start(packet: QuestionStartPacket):
    print(f"Question started: {packet}")

async def main():
    client = KahootClient()
    client.on("question_start", question_start)
    await client.join_game(game_pin=3850352, username='your_username')

# Run the main function
asyncio.run(main())

🎉 Event Handlers

  • Joining a Game: Use the join_game method to join a game with a specific PIN and username.
  • Listening for Events: Register handlers for various events (e.g., questions, game status) using the on method.

📁 Project Structure

kahoot/
├── __init__.py       # Package initialization
├── packets/          # Packet definitions and implementations
├── util/             # Utility functions (e.g., challenge solver, logger)
├── exceptions.py      # Custom exceptions
├── constants.py      # Constant values (e.g., USER_AGENT)
└── README.md         # Documentation

⚙️ Technical Details

  • Built using httpx for HTTP requests and aiocometd for WebSocket communication.
  • Utilizes asynchronous programming with Python's asyncio for efficient real-time interaction.
  • Modular design with separate packet handling and utility functions for easy maintenance.

📝 License

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

🤝 Contributing

Contributions are welcome! Feel free to:

  • Open issues
  • Submit pull requests
  • Suggest new features or improvements

👤 Author

Vehbi

🔒 Responsible Use

This tool is intended for educational and personal use only. Users must ensure compliance with Kahoot's terms of service and applicable laws.

🙏 Acknowledgments

  • Inspired by the need for real-time interaction with Kahoot's educational games.

📊 Stats

GitHub stars GitHub forks


Made with ❤️ by @vehbiu

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

kahoot-1.1.0.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

kahoot-1.1.0-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

Details for the file kahoot-1.1.0.tar.gz.

File metadata

  • Download URL: kahoot-1.1.0.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for kahoot-1.1.0.tar.gz
Algorithm Hash digest
SHA256 2462dbb87770127535414036528edb716319ba54f58448fd42e1d29c2c3ba703
MD5 aff6b911377dc0f324f4321267e72921
BLAKE2b-256 2d62bc738cee82c2f7c9a8fbc167215da1deb2c31f0f5fc9e84f41acfe172a5d

See more details on using hashes here.

File details

Details for the file kahoot-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: kahoot-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for kahoot-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b8725892a5b88334477e7132b19c5be78861d29d19905dd233f37342ae39f60
MD5 98004fa81b1a5bef226afd0fdb5904d9
BLAKE2b-256 81094072adeb412ea9419e36677064d12f392e5bf66789f258c11ff861ae0c81

See more details on using hashes here.

Supported by

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