Skip to content

Модуль для Python, который позволит легко работать с Donation Alerts API

Notifications You must be signed in to change notification settings

TheLovii/Donation-Alerts-API-Python

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Donation Alerts API Python

Модуль для Python, который позволит легко работать с Donation Alerts API

pip install donationalerts-api -U

Создать свое приложение Donation Alerts
Официальная документация Donation Alerts API

DA API

🔥 Простой пример работы

В этом примере мы логинимся в нашем приложении с определенными правами, получаем access_token, после в пременной user мы получаем JSON-объект, в котором содержится информация, в переменной donations тоже хранится информация, только уже другая. И теперь возвращаем нашу переменную user

DonationAlertsAPI - основной класс для работы с DA API, на вход принимает client_id, client_secret, redirect_uri, scopes
Scopes - позволит вам передать ряд прав в удобном формате, все права можете посмотреть в оф. документации, также имеет атрибут ALL_SCOPES для передачи всех прав сразу (Scopes.ALL_SCOPES)

from flask import Flask, redirect, request

from donationalerts_api import DonationAlertsAPI
from donationalerts_api.modules import Scopes

app = Flask(__name__)
api = DonationAlertsAPI("client id", "client secret", "http://127.0.0.1:5000/login", [Scopes.USER_SHOW, Scopes.DONATION_INDEX])


@app.route("/", methods=["get"])
def index():
	return redirect(api.login()) # Log in your application


@app.route("/login", methods=["get"])
def login():
	code = request.args.get("code") # Получить нужный код для access token
	access_token = api.get_access_token(code)

	user = api.user(access_token)
	donations = api.donations_list(access_token) # Получить список донатов

	return user.objects # Возвращает JSON object

if __name__ == "__main__":
	app.run(debug=True)

💖 Получение донатов в реальном времени без Oauth2

Здесь мы легко можем получить донат в реальном времени, для этого всего лишь нужно токен и пару строчек кода. Токен вы можете скопировать в Основных настройках. Теперь при новом донате, вы получите JSON-объект, который можете использовать уже сами.

ТОКЕН

from donationalerts_api import Alert

alert = Alert("token")

@alert.event()
def new_donation(event):
    """ Пример обращения

    event.username - получает никнейм донатера
    event.objects - вернуть JSON object

    """

    print(event) # Выведет все доступные атрибуты, к которым можно обратиться

Все примеры вы можете посмотреть в папке Examples
Donation Alerts API Python - небольшой обзор - в ролике, автор рассказывает о первой версии, возможно кому-то будет интересно
Donation Alerts API Python - получение событий в реальном времени - небольшая история обновлений и демонстрация новых возможностей

Asyncio Donation Alerts API

Новое обновление 1.0.9 beta

Наконец-то можно использовать модуль асинхронно. Все очень просто, методы не поменялись, остается только дописывать await, пример ниже.

Работа с центрифугой (донаты в реальном времени Oauth2)

from flask import Flask, redirect, request # pip install flask[async]

from donationalerts_api.asyncio_api import DonationAlertsAPI, Centrifugo
from donationalerts_api.modules import Scopes, Channels

app = Flask(__name__)
api = DonationAlertsAPI("client id", "client secret", "http://127.0.0.1:5000/login", [Scopes.USER_SHOW, Scopes.DONATION_SUBSCRIBE])


@app.route("/", methods=["get"])
def index():
    return redirect(api.login())
    

@app.route("/login", methods=["get"])
async def login():
    code = request.args.get("code")
    access_token = await api.get_access_token(code)
    user = await api.user(access_token)
    
    fugo = Centrifugo(user.socket_connection_token, access_token, user.id)
    event = await fugo.subscribe(Channels.NEW_DONATION_ALERTS) # В новой версии .connect не нужен.
    
    return event.objects # Возвращает JSON object (в практически каждом методе есть objects)
   
    
if __name__ == "__main__":
    app.run(debug=True)

Донаты в реальном времени без Oauth2

from donationalerts_api.asyncio_api import Alert

alert = Alert("token")


@alert.event()
async def handler(event):
    print(f"{event.username} пожертвовал {event.amount_formatted} {event.currency} | {event.message}")

    """ Вывод:

    Fsoky пожертвовал 9999.0 RUB | Тут его сообщение.
    
    """

Как вы поняли, чтобы работать с асинхронном, нужно импортировать классы из пакета asyncio_api.

About

Модуль для Python, который позволит легко работать с Donation Alerts API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%