#!/usr/bin/python3
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 "
body = {
" i " : i ,
# Можно включить лишь определенные уведомления, всю эту залупу следует вынести также в аргументы функции, чтоб реагировать на конкретные события, типа подписки или упоминания, по-разному
#"includeTypes": [
# "reply",
# "mention"
# ],
# Количество уведомлений, которые вытянем
" limit " : 3 ,
" unreadOnly " : False ,
}
# Отправляем запрос, в тело запроса суем словарь-JSON, которые объявили выше
r = requests . post ( req_url , json = body )
# Если все прошло збс, код HTTP 200, то отдаем получанный список уведомлений
if r . status_code == 200 :
# Можешь раскомментить, глянуть, что это за черт
#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 ' )
notif_list = get_notifications ( config [ ' url ' ] , config [ ' token ' ] )
#print(notif_list)