Добавил комменты, чтоб не быть мудаком

pull/1/head
nihonium 3 years ago
parent 7db372f76c
commit e43233632d

@ -1,55 +1,82 @@
#!/usr/bin/python3 #!/usr/bin/python3
import requests import requests # Для отправки http-запросов
import json import json
import time import time
# Функция для чтения JSON-файла (например, конфига), аргумент - адрес файла в ФС
# Возвращает словарь
def json_read(file): def json_read(file):
# Создается локальное окружение (или как эта хуйня зовется), где присутствует дескриптор для нашего файла
with open(file) as f: with open(file) as f:
config = json.load(f) config = json.load(f)
return config return config
# Функция для получения уведомлений пользователя из Misskey
# Возвращает список словарей
# 2do: includeTypes как аргумент
def get_notifications(url, i): def get_notifications(url, i):
print("Getting notifications from", url) print("Getting notifications from", url)
# Формируем URL для доступа к конкретной функции API
req_url = url + "/api/i/notifications" req_url = url + "/api/i/notifications"
print(req_url)
body = { body = {
"i": i, "i": i,
# Можно включить лишь определенные уведомления, всю эту залупу следует вынести также в аргументы функции, чтоб реагировать на конкретные события, типа подписки или упоминания, по-разному
#"includeTypes": [ #"includeTypes": [
# "reply", # "reply",
# "mention" # "mention"
# ], # ],
# Количество уведомлений, которые вытянем
"limit": 3, "limit": 3,
"unreadOnly": True, "unreadOnly": False,
} }
# Отправляем запрос, в тело запроса суем словарь-JSON, которые объявили выше
r = requests.post(req_url, json=body) r = requests.post(req_url, json=body)
# Если все прошло збс, код HTTP 200, то отдаем получанный список уведомлений
if r.status_code == 200: if r.status_code == 200:
print(r.json()) # Можешь раскомментить, глянуть, что это за черт
#print(r.json())
return r.json()
# Иначе, если не збс, то ругаемся
else: else:
print("Fuck") print("Fuck")
# Функция, создающая пост
# 2do: посты с картинками, ...
def create_post(content, url, i, visibility="public", channel=""): def create_post(content, url, i, visibility="public", channel=""):
print("Post to", url, ":", content) print("Post to", url, ":", content)
# Аналогично, адрес нужной функции API
req_url = url + "/api/notes/create" req_url = url + "/api/notes/create"
body = { body = {
# Не ебу, что за noExtract*, надо полуркать, но работает и збс пока что
"noExtractMentions": True, "noExtractMentions": True,
"noExtractHashtags": True, "noExtractHashtags": True,
"noExtractEmojis": True, "noExtractEmojis": True,
"visibility": visibility, "visibility": visibility,
"text": content, "text": content,
# Если поставлен канал, то пост только локальный для инстанса
"localOnly": channel != "", "localOnly": channel != "",
"i": i "i": i
} }
if channel != "": if channel != "":
body["channelId"] = channel body["channelId"] = channel
# Отправляем запрос
r = requests.post(req_url, json=body) r = requests.post(req_url, json=body)
# Аналогично, проверка на 200, в случае успеха 1
if r.status_code == 200: if r.status_code == 200:
return 0 return 0
else: else:
print("Failed to post:", result.json()['error']['message']) print("Failed to post:", result.json()['error']['message'])
return 1 return 1
### Сюда надо захуярить еще 100500 функций###
# Собсна, содержательная часть программы начинается тут
# Читаем конфиг, получаем словарь
config = json_read('config.json') config = json_read('config.json')
get_notifications(config['url'], config['token']) notif_list = get_notifications(config['url'], config['token'])
#print(notif_list)

Loading…
Cancel
Save