diff --git a/main.py b/main.py old mode 100644 new mode 100755 index 64a7637..93c897b --- a/main.py +++ b/main.py @@ -3,37 +3,49 @@ import requests # Для отправки http-запросов import json import time +import argparse +import logging as log + +p = argparse.ArgumentParser() +p.add_argument('--verbose', '-v', action='count', default=0) + +args = p.parse_args() +if args.verbose: + log.basicConfig(format="%(levelname)s: %(message)s", level=log.DEBUG) + log.info("Verbose output.") +else: + log.basicConfig(format="%(levelname)s: %(message)s") + +#log.info("This should be verbose.") +#log.warning("This is a warning.") +#log.error("This is an error.") # Функция для чтения JSON-файла (например, конфига), аргумент - адрес файла в ФС # Возвращает словарь def json_read(file): # Создается локальное окружение (или как эта хуйня зовется), где присутствует дескриптор для нашего файла + #log.info("Reading config file:", 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) +def get_notifications(url, i, includeTypes=["follow", "mention", "reply", "renote", "quote", "reaction", "pollVote", "receiveFollowRequest", "followRequestAccepted", "groupInvited","app"], markAsRead=True): + log.info("Getting notifications from", url) # Формируем URL для доступа к конкретной функции API req_url = url + "/api/i/notifications" - body = { "i": i, # Можно включить лишь определенные уведомления, всю эту залупу следует вынести также в аргументы функции, чтоб реагировать на конкретные события, типа подписки или упоминания, по-разному - #"includeTypes": [ - # "reply", - # "mention" - # ], + "includeTypes": includeTypes, # Количество уведомлений, которые вытянем "limit": 3, "unreadOnly": False, + "markAsRead": markAsRead, } # Отправляем запрос, в тело запроса суем словарь-JSON, которые объявили выше r = requests.post(req_url, json=body) - # Если все прошло збс, код HTTP 200, то отдаем получанный список уведомлений if r.status_code == 200: # Можешь раскомментить, глянуть, что это за черт @@ -42,27 +54,32 @@ def get_notifications(url, i): # Иначе, если не збс, то ругаемся else: print("Fuck") - # Функция, создающая пост # 2do: посты с картинками, ... -def create_post(content, url, i, visibility="public", channel="", fileIds=[]): +def create_post(url, i, content="", visibility="public", channel="", fileIds=[], renote=False, renoteId=None): print("Post to", url, ":", content) # Аналогично, адрес нужной функции API req_url = url + "/api/notes/create" - body = { + if renote: + body = { + "renoteId": renoteId, + "i": i + } + else: + body = { # Не ебу, что за noExtract*, надо полуркать, но работает и збс пока что "noExtractMentions": True, "noExtractHashtags": True, "noExtractEmojis": True, "visibility": visibility, "text": content, - "fileIds": fileIds, + #"fileIds": fileIds, # Если поставлен канал, то пост только локальный для инстанса "localOnly": channel != "", "i": i - } - if channel != "": - body["channelId"] = channel + } + if channel != "": + body["channelId"] = channel # Отправляем запрос r = requests.post(req_url, json=body) # Аналогично, проверка на 200, в случае успеха 1 @@ -71,9 +88,7 @@ def create_post(content, url, i, visibility="public", channel="", fileIds=[]): else: print("Failed to post:", r.text) return 1 - # Пока что можешь не пытаться разобраться, я сам отчасти хз, как это работает, лол - def file_upload(file, url, i, isSensitive=False): print("Uploading file to", url) req_url = url + "/api/drive/files/create" @@ -100,17 +115,13 @@ def get_file_list(url, i): req_url = url + "/api/drive/files" r = requests.post(req_url, json={"i":i}) print(r.json()) + ### Сюда надо захуярить еще 100500 функций### + # Собсна, содержательная часть программы начинается тут # Читаем конфиг, получаем словарь config = json_read('config.json') -#notif_list = get_notifications(config['url'], config['token']) -#print(notif_list) -#file_upload('test.jpg', config['url'], config['token']) -im_info = file_upload('test.jpg', config['url'], config['token']) - -create_post("Nya~", config['url'], config['token'], fileIds=[im_info['id']]) -#print(notif_list) +create_post(config['url'], config['token'], renote=True, renoteId="8vxi115z0g")