niho #1
					 1 changed files with 33 additions and 6 deletions
				
			
		
							
								
								
									
										37
									
								
								main.py
									
										
									
									
									
								
							
							
						
						
									
										37
									
								
								main.py
									
										
									
									
									
								
							|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue