niho #1
					 1 changed files with 33 additions and 6 deletions
				
			
		
							
								
								
									
										37
									
								
								main.py
									
										
									
									
									
								
							
							
						
						
									
										37
									
								
								main.py
									
										
									
									
									
								
							|  | @ -1,55 +1,82 @@ | |||
| #!/usr/bin/python3 | ||||
| 
 | ||||
| import requests | ||||
| 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) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue