|
1 year ago | |
---|---|---|
donationalerts_api | 1 year ago | |
examples | 4 years ago | |
images | 4 years ago | |
.gitignore | 4 years ago | |
README.md | 4 years ago | |
setup.py | 1 year ago |
README.md
Donation Alerts API Python
Модуль для Python, который позволит легко работать с Donation Alerts API
pip install donationalerts-api -U
Создать свое приложение Donation Alerts
Официальная документация Donation Alerts 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
.