From e43233632dcdee300eecc861d59ecc1811d421d4 Mon Sep 17 00:00:00 2001 From: nihonium Date: Fri, 26 Nov 2021 00:10:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D1=8B,=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE=D0=B1=20=D0=BD=D0=B5=20=D0=B1=D1=8B=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BC=D1=83=D0=B4=D0=B0=D0=BA=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index 46e9868..18b8ba6 100644 --- a/main.py +++ b/main.py @@ -1,55 +1,82 @@ #!/usr/bin/python3 -import requests -import json +import requests # Для отправки http-запросов +import json import time +# Функция для чтения JSON-файла (например, конфига), аргумент - адрес файла в ФС +# Возвращает словарь def json_read(file): + # Создается локальное окружение (или как эта хуйня зовется), где присутствует дескриптор для нашего файла with open(file) as f: config = json.load(f) return config +# Функция для получения уведомлений пользователя из Misskey +# Возвращает список словарей +# 2do: includeTypes как аргумент def get_notifications(url, i): print("Getting notifications from", url) + # Формируем URL для доступа к конкретной функции API req_url = url + "/api/i/notifications" - print(req_url) + body = { "i": i, + # Можно включить лишь определенные уведомления, всю эту залупу следует вынести также в аргументы функции, чтоб реагировать на конкретные события, типа подписки или упоминания, по-разному #"includeTypes": [ # "reply", # "mention" # ], + # Количество уведомлений, которые вытянем "limit": 3, - "unreadOnly": True, + "unreadOnly": False, } + # Отправляем запрос, в тело запроса суем словарь-JSON, которые объявили выше r = requests.post(req_url, json=body) + # Если все прошло збс, код HTTP 200, то отдаем получанный список уведомлений if r.status_code == 200: - print(r.json()) + # Можешь раскомментить, глянуть, что это за черт + #print(r.json()) + return r.json() + # Иначе, если не збс, то ругаемся else: print("Fuck") +# Функция, создающая пост +# 2do: посты с картинками, ... def create_post(content, url, i, visibility="public", channel=""): print("Post to", url, ":", content) + # Аналогично, адрес нужной функции API req_url = url + "/api/notes/create" body = { + # Не ебу, что за noExtract*, надо полуркать, но работает и збс пока что "noExtractMentions": True, "noExtractHashtags": True, "noExtractEmojis": True, "visibility": visibility, "text": content, + # Если поставлен канал, то пост только локальный для инстанса "localOnly": channel != "", "i": i } if channel != "": body["channelId"] = channel + # Отправляем запрос r = requests.post(req_url, json=body) + # Аналогично, проверка на 200, в случае успеха 1 if r.status_code == 200: return 0 else: print("Failed to post:", result.json()['error']['message']) return 1 +### Сюда надо захуярить еще 100500 функций### + +# Собсна, содержательная часть программы начинается тут + +# Читаем конфиг, получаем словарь config = json_read('config.json') -get_notifications(config['url'], config['token']) +notif_list = get_notifications(config['url'], config['token']) +#print(notif_list)