From c927e805585d87aac3f42bc5e15c66ac5dffa62a Mon Sep 17 00:00:00 2001 From: Fsoky Date: Mon, 23 Aug 2021 13:48:03 +0600 Subject: [PATCH] + few comments --- donationalerts_api.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/donationalerts_api.py b/donationalerts_api.py index d3efb92..b6311a1 100644 --- a/donationalerts_api.py +++ b/donationalerts_api.py @@ -6,6 +6,7 @@ import socketio class Scopes: + """Удобный класс, для простого указания прав в приложении""" USER_SHOW = "oauth-user-show" @@ -22,6 +23,7 @@ class Scopes: class Channels: + """Права для подписки на каналы Centrifugo""" NEW_DONATION_ALERTS = "$alerts:donation_" @@ -33,9 +35,7 @@ class Channels: class DonationAlertsApi: - """ - This class describes work with Donation Alerts API - """ + """Основной класс для работы с DA API""" def __init__(self, client_id, client_secret, redirect_uri, scopes): symbols = [",", ", ", " ", "%20"] @@ -68,9 +68,15 @@ class DonationAlertsApi: return self.login_url def get_code(self): - return request.args.get("code") + return request.args.get("code") # Получаем аргмент "code" из адресной строки def get_access_token(self, code, full=False): + """ Параметр full=False + + Если True, то выводит весь json объект, а не только access_token + + """ + payload = { "client_id": self.client_id, "client_secret": self.client_secret, @@ -136,6 +142,7 @@ class DonationAlertsApi: class Centrifugo: + """Получение событий в реальном времени (Oauth2)""" def __init__(self, socket_connection_token, access_token, user_id): self.socket_connection_token = socket_connection_token @@ -145,7 +152,7 @@ class Centrifugo: self.uri = "wss://centrifugo.donationalerts.com/connection/websocket" def connect(self): - self.ws = create_connection(self.uri) + self.ws = create_connection(self.uri) # Подключаемся к серверу self.ws.send(json.dumps( { "params": { @@ -189,18 +196,19 @@ class Centrifugo: )) answer = {"response": self.ws.recv(), "sec_response": self.ws.recv()} - return answer + return answer # Возвращаем первые два ответа от сервера def listen(self): - return json.loads(self.ws.recv())["result"]["data"]["data"] + return json.loads(self.ws.recv())["result"]["data"]["data"] # Возвращаем 3-й ответ от сервера sio = socketio.Client() class Alert: + """Получение донатов в реальном времени без Oauth2""" def __init__(self, token): - self.token = token + self.token = token # TOKEN можно скопировать здесь - https://www.donationalerts.com/dashboard/general def event(self): def wrapper(function): @@ -210,7 +218,7 @@ class Alert: @sio.on("donation") def on_message(data): - function(json.loads(data)) + function(json.loads(data)) # Отправляем полученные данные в функцию sio.connect("wss://socket.donationalerts.ru:443", transports="websocket") return wrapper \ No newline at end of file