Skip to content

🌐 - A python library for interacting with *Kahoot* live quizzes!

License

Notifications You must be signed in to change notification settings

vehbiu/kahoot-py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

About

🌐 - A python library for interacting with *Kahoot* live quizzes!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages