Skip to content

slnelor/donatello-py

 
 

Repository files navigation

Donatello-py logo
PyPi Version PyPi Python versions
Read the Docs PyPi Downloads PyPi License

🐍 Python wrapper for the Donatello API.

✨ Features

  • Full type hints
  • Client info
  • Get donates
  • Get clients
  • Long polling
  • Async support

🔗 Installation

pip install donatello-py

For speedup:

pip install donatello-py[speed]

🧑‍🏭 Basic Usage

Get and activate your API key here.

⛓️ Sync

from donatello import Donatello

client = Donatello("YOUR_API_KEY")

# Get client info
print(client.get_me())

# Get donates
print(client.get_donates(page=0, per_page=00))

# Get clients
print(client.get_clients())

⛓️ Async

from donatello import AsyncDonatello

client = AsyncDonatello("YOUR_API_KEY")

async def main():
    print(await client.get_me())
    print(await client.get_donates(page=0, per_page=00))
    print(await client.get_clients())

asyncio.run(main())

🥏 Long polling

For use long polling you need to create widget here and get widget id from url.

Example url:

https://donatello.to/widget/<WIDGET_ID>/token/<YOUR_API_KEY>

Code example

⛓️ Sync

from donatello import Donatello
from donatello.models import Donate, User

client = Donatello("YOUR_API_KEY", "WIDGET_ID")

@client.on_ready
def start(user: User):
    print(f"Started with user {user.nickname}")
    print(f"Donates Amount: {user.donates.total_amount}")
    print(f"Donates count: {user.donates.total_count}")

@client.on_donate
def donate(donate: Donate):
    print(donate)

client.start()

⛓️ Async

from donatello import AsyncDonatello
from donatello.models import Donate, User

client = AsyncDonatello("YOUR_API_KEY", "WIDGET_ID")

@client.on_donate
async def donate(donate):
    print(f"Donator: {donate.nickname}")
    print(f"Amount: {donate.amount} {donate.currency} / {donate.goal_amount} {donate.goal_currency}")
    print(f"Message: {donate.message}")

@client.on_ready
async def ready(user):
    print(user)
    
client.start()

📚 Docs

You can find docs here.

📝 Examples

You can find more examples here.

📄 License

MIT

📋 TODO

  • Add more examples

  • Add docs

  • Add tests

  • Websocket based long polling

  • Goal, Top, interactive widgets? Never

🤝 Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

About

Simple python wrapper for the Donatello API.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%