Nya
This commit is contained in:
		
							parent
							
								
									8e1ebb2926
								
							
						
					
					
						commit
						dc517c4555
					
				
					 1 changed files with 36 additions and 25 deletions
				
			
		
							
								
								
									
										61
									
								
								main.py
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										61
									
								
								main.py
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							|  | @ -3,37 +3,49 @@ | ||||||
| import requests # Для отправки http-запросов | import requests # Для отправки http-запросов | ||||||
| import json  | import json  | ||||||
| import time | 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-файла (например, конфига), аргумент - адрес файла в ФС | # Функция для чтения JSON-файла (например, конфига), аргумент - адрес файла в ФС | ||||||
| # Возвращает словарь | # Возвращает словарь | ||||||
| def json_read(file): | def json_read(file): | ||||||
|     # Создается локальное окружение (или как эта хуйня зовется), где присутствует дескриптор для нашего файла |     # Создается локальное окружение (или как эта хуйня зовется), где присутствует дескриптор для нашего файла | ||||||
|  |     #log.info("Reading config file:", file) | ||||||
|     with open(file) as f: |     with open(file) as f: | ||||||
|         config = json.load(f) |         config = json.load(f) | ||||||
|     return config |     return config | ||||||
| 
 | 
 | ||||||
| # Функция для получения уведомлений пользователя из Misskey | # Функция для получения уведомлений пользователя из Misskey | ||||||
| # Возвращает список словарей | # Возвращает список словарей | ||||||
| # 2do: includeTypes как аргумент | def get_notifications(url, i, includeTypes=["follow", "mention", "reply", "renote", "quote", "reaction", "pollVote", "receiveFollowRequest", "followRequestAccepted", "groupInvited","app"], markAsRead=True): | ||||||
| def get_notifications(url, i): |     log.info("Getting notifications from", url) | ||||||
|     print("Getting notifications from", url) |  | ||||||
|     # Формируем URL для доступа к конкретной функции API |     # Формируем URL для доступа к конкретной функции API | ||||||
|     req_url = url + "/api/i/notifications" |     req_url = url + "/api/i/notifications" | ||||||
| 
 |  | ||||||
|     body = { |     body = { | ||||||
|             "i": i, |             "i": i, | ||||||
|             # Можно включить лишь определенные уведомления, всю эту залупу следует вынести также в аргументы функции, чтоб реагировать на конкретные события, типа подписки или упоминания, по-разному |             # Можно включить лишь определенные уведомления, всю эту залупу следует вынести также в аргументы функции, чтоб реагировать на конкретные события, типа подписки или упоминания, по-разному | ||||||
|             #"includeTypes": [ |             "includeTypes": includeTypes, | ||||||
|             #        "reply", |  | ||||||
|             #        "mention" |  | ||||||
|             #        ], |  | ||||||
|             # Количество уведомлений, которые вытянем |             # Количество уведомлений, которые вытянем | ||||||
|             "limit": 3, |             "limit": 3, | ||||||
|             "unreadOnly": False, |             "unreadOnly": False, | ||||||
|  |             "markAsRead": markAsRead, | ||||||
|     } |     } | ||||||
|     # Отправляем запрос, в тело запроса суем словарь-JSON, которые объявили выше |     # Отправляем запрос, в тело запроса суем словарь-JSON, которые объявили выше | ||||||
|     r = requests.post(req_url, json=body) |     r = requests.post(req_url, json=body) | ||||||
|      |  | ||||||
|     # Если все прошло збс, код HTTP 200, то отдаем получанный список уведомлений |     # Если все прошло збс, код HTTP 200, то отдаем получанный список уведомлений | ||||||
|     if r.status_code == 200: |     if r.status_code == 200: | ||||||
|         # Можешь раскомментить, глянуть, что это за черт |         # Можешь раскомментить, глянуть, что это за черт | ||||||
|  | @ -42,27 +54,32 @@ def get_notifications(url, i): | ||||||
|     # Иначе, если не збс, то ругаемся |     # Иначе, если не збс, то ругаемся | ||||||
|     else: |     else: | ||||||
|         print("Fuck") |         print("Fuck") | ||||||
| 
 |  | ||||||
| # Функция, создающая пост | # Функция, создающая пост | ||||||
| # 2do: посты с картинками, ... | # 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) |     print("Post to", url, ":", content) | ||||||
|     # Аналогично, адрес нужной функции API |     # Аналогично, адрес нужной функции API | ||||||
|     req_url = url + "/api/notes/create" |     req_url = url + "/api/notes/create" | ||||||
|     body = { |     if renote: | ||||||
|  |         body = { | ||||||
|  |                 "renoteId": renoteId, | ||||||
|  |                 "i": i | ||||||
|  |                 } | ||||||
|  |     else: | ||||||
|  |         body = { | ||||||
|             # Не ебу, что за noExtract*, надо полуркать, но работает и збс пока что |             # Не ебу, что за noExtract*, надо полуркать, но работает и збс пока что | ||||||
|             "noExtractMentions": True, |             "noExtractMentions": True, | ||||||
|             "noExtractHashtags": True, |             "noExtractHashtags": True, | ||||||
|             "noExtractEmojis": True, |             "noExtractEmojis": True, | ||||||
|             "visibility": visibility, |             "visibility": visibility, | ||||||
|             "text": content, |             "text": content, | ||||||
|             "fileIds": fileIds, |             #"fileIds": fileIds, | ||||||
|             # Если поставлен канал, то пост только локальный для инстанса |             # Если поставлен канал, то пост только локальный для инстанса | ||||||
|             "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 |     # Аналогично, проверка на 200, в случае успеха 1 | ||||||
|  | @ -71,9 +88,7 @@ def create_post(content, url, i, visibility="public", channel="", fileIds=[]): | ||||||
|     else: |     else: | ||||||
|         print("Failed to post:", r.text) |         print("Failed to post:", r.text) | ||||||
|         return 1 |         return 1 | ||||||
| 
 |  | ||||||
| # Пока что можешь не пытаться разобраться, я сам отчасти хз, как это работает, лол | # Пока что можешь не пытаться разобраться, я сам отчасти хз, как это работает, лол | ||||||
| 
 |  | ||||||
| def file_upload(file, url, i, isSensitive=False): | def file_upload(file, url, i, isSensitive=False): | ||||||
|     print("Uploading file to", url)  |     print("Uploading file to", url)  | ||||||
|     req_url = url + "/api/drive/files/create" |     req_url = url + "/api/drive/files/create" | ||||||
|  | @ -100,17 +115,13 @@ def get_file_list(url, i): | ||||||
|     req_url = url + "/api/drive/files" |     req_url = url + "/api/drive/files" | ||||||
|     r = requests.post(req_url, json={"i":i}) |     r = requests.post(req_url, json={"i":i}) | ||||||
|     print(r.json()) |     print(r.json()) | ||||||
|  | 
 | ||||||
| ### Сюда надо захуярить еще 100500 функций### | ### Сюда надо захуярить еще 100500 функций### | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| # Собсна, содержательная часть программы начинается тут | # Собсна, содержательная часть программы начинается тут | ||||||
| 
 | 
 | ||||||
| # Читаем конфиг, получаем словарь | # Читаем конфиг, получаем словарь | ||||||
| config = json_read('config.json') | config = json_read('config.json') | ||||||
| 
 | 
 | ||||||
| #notif_list = get_notifications(config['url'], config['token']) | create_post(config['url'], config['token'], renote=True, renoteId="8vxi115z0g") | ||||||
| #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) |  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue