niho #2
					 1 changed files with 46 additions and 13 deletions
				
			
		
							
								
								
									
										59
									
								
								main.py
									
										
									
									
									
								
							
							
						
						
									
										59
									
								
								main.py
									
										
									
									
									
								
							|  | @ -5,6 +5,7 @@ import json | ||||||
| import time | import time | ||||||
| import argparse | import argparse | ||||||
| import logging as log | import logging as log | ||||||
|  | import pprint | ||||||
| 
 | 
 | ||||||
| p = argparse.ArgumentParser() | p = argparse.ArgumentParser() | ||||||
| p.add_argument('--verbose', '-v', action='count', default=0) | p.add_argument('--verbose', '-v', action='count', default=0) | ||||||
|  | @ -24,15 +25,17 @@ else: | ||||||
| # Возвращает словарь | # Возвращает словарь | ||||||
| def json_read(file): | def json_read(file): | ||||||
|     # Создается локальное окружение (или как эта хуйня зовется), где присутствует дескриптор для нашего файла |     # Создается локальное окружение (или как эта хуйня зовется), где присутствует дескриптор для нашего файла | ||||||
|     #log.info("Reading config file:", file) |     log.info("Reading config file: %s", file) | ||||||
|     with open(file) as f: |     with open(file) as f: | ||||||
|         config = json.load(f) |         config = json.load(f) | ||||||
|     return config |     return config | ||||||
| 
 | 
 | ||||||
|  | config = json_read('config.json') | ||||||
|  | 
 | ||||||
| # Функция для получения уведомлений пользователя из Misskey | # Функция для получения уведомлений пользователя из Misskey | ||||||
| # Возвращает список словарей | # Возвращает список словарей | ||||||
| def get_notifications(url, i, includeTypes=["follow", "mention", "reply", "renote", "quote", "reaction", "pollVote", "receiveFollowRequest", "followRequestAccepted", "groupInvited","app"], markAsRead=True): | def get_notifications(url, i, includeTypes=["follow", "mention", "reply", "renote", "quote", "reaction", "pollVote", "receiveFollowRequest", "followRequestAccepted", "groupInvited","app"], markAsRead=True, unreadOnly=True, following=True, limit=5): | ||||||
|     log.info("Getting notifications from", url) |     log.info("Getting notifications from %s", url) | ||||||
|     # Формируем URL для доступа к конкретной функции API |     # Формируем URL для доступа к конкретной функции API | ||||||
|     req_url = url + "/api/i/notifications" |     req_url = url + "/api/i/notifications" | ||||||
|     body = { |     body = { | ||||||
|  | @ -43,21 +46,23 @@ def get_notifications(url, i, includeTypes=["follow", "mention", "reply", "renot | ||||||
|             "limit": 3, |             "limit": 3, | ||||||
|             "unreadOnly": False, |             "unreadOnly": False, | ||||||
|             "markAsRead": markAsRead, |             "markAsRead": markAsRead, | ||||||
|  |             "unreadOnly": unreadOnly, | ||||||
|  |             "following": following, | ||||||
|  |             "limit": limit, | ||||||
|     } |     } | ||||||
|     # Отправляем запрос, в тело запроса суем словарь-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: | ||||||
|         # Можешь раскомментить, глянуть, что это за черт |         # Можешь раскомментить, глянуть, что это за черт | ||||||
|         #print(r.json()) |  | ||||||
|         return r.json() |         return r.json() | ||||||
|     # Иначе, если не збс, то ругаемся |     # Иначе, если не збс, то ругаемся | ||||||
|     else: |     else: | ||||||
|         print("Fuck") |         log.error("Fuck you, leatherman") | ||||||
| # Функция, создающая пост | # Функция, создающая пост | ||||||
| # 2do: посты с картинками, ... | # 2do: посты с картинками, ... | ||||||
| def create_post(url, i, content="", visibility="public", channel="", fileIds=[], renote=False, renoteId=None): | def create_note(url=config['url'], i=config['token'], content="", visibility="public", channel="", fileIds=[], renote=False, renoteId=None): | ||||||
|     print("Post to", url, ":", content) |     log.info("Creating note to %s", url) | ||||||
|     # Аналогично, адрес нужной функции API |     # Аналогично, адрес нужной функции API | ||||||
|     req_url = url + "/api/notes/create" |     req_url = url + "/api/notes/create" | ||||||
|     if renote: |     if renote: | ||||||
|  | @ -76,7 +81,7 @@ def create_post(url, i, content="", visibility="public", channel="", fileIds=[], | ||||||
|             #"fileIds": fileIds, |             #"fileIds": fileIds, | ||||||
|             # Если поставлен канал, то пост только локальный для инстанса |             # Если поставлен канал, то пост только локальный для инстанса | ||||||
|             "localOnly": channel != "", |             "localOnly": channel != "", | ||||||
|             "i": i |             "i": i, | ||||||
|         } |         } | ||||||
|         if channel != "": |         if channel != "": | ||||||
|             body["channelId"] = channel |             body["channelId"] = channel | ||||||
|  | @ -86,8 +91,9 @@ def create_post(url, i, content="", visibility="public", channel="", fileIds=[], | ||||||
|     if r.status_code == 200: |     if r.status_code == 200: | ||||||
|         return 0 |         return 0 | ||||||
|     else: |     else: | ||||||
|         print("Failed to post:", r.text) |         log.error("Failed to post: %s", 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)  | ||||||
|  | @ -117,11 +123,38 @@ def get_file_list(url, i): | ||||||
|     print(r.json()) |     print(r.json()) | ||||||
| 
 | 
 | ||||||
| ### Сюда надо захуярить еще 100500 функций### | ### Сюда надо захуярить еще 100500 функций### | ||||||
| 
 | def follow_user(userId, url=config['url'], i=config['token']): | ||||||
| 
 |     req_url = url + "/api/following/create" | ||||||
|  |     r = requests.post(req_url, json={"i":i, "userId": userId}) | ||||||
|  |     #print(r.json())    | ||||||
|  |     if r.status_code == 200: | ||||||
|  |         return r.json() | ||||||
|  |     else: | ||||||
|  |         print("Upload failed with code", r.status_code) | ||||||
|  |         print(r.text) | ||||||
| # Собсна, содержательная часть программы начинается тут | # Собсна, содержательная часть программы начинается тут | ||||||
| 
 | 
 | ||||||
| # Читаем конфиг, получаем словарь | # Читаем конфиг, получаем словарь | ||||||
| config = json_read('config.json') |  | ||||||
| 
 | 
 | ||||||
| create_post(config['url'], config['token'], renote=True, renoteId="8vxi115z0g") | 
 | ||||||
|  | #create_note(config['url'], config['token'], renote=True, renoteId="8vxo3hpsdm") | ||||||
|  | 
 | ||||||
|  | while True: | ||||||
|  |     notif_list = get_notifications(config['url'], config['token'], includeTypes=["mention"], markAsRead=False, unreadOnly=True, limit=2, following=True) | ||||||
|  |     follow_notif_list = get_notifications(config['url'], config['token'], includeTypes=["follow"], markAsRead=False, unreadOnly=True, limit=2, following=False) | ||||||
|  |     #pprint.pprint(notif_list) | ||||||
|  |     pprint.pprint(follow_notif_list) | ||||||
|  |     notes_to_repost=list() | ||||||
|  |     users_to_follow=list() | ||||||
|  |     for i in range(len(notif_list)): | ||||||
|  |         #pprint.pprint(notif_list[i]['note']['id']) | ||||||
|  |         notes_to_repost.append(notif_list[i]['note']['id']) | ||||||
|  |     for i in range(len(follow_notif_list)): | ||||||
|  |         #pprint.pprint(notif_list[i]['note']['id']) | ||||||
|  |         users_to_follow.append(follow_notif_list[i]['user']['id']) | ||||||
|  |     print(users_to_follow) | ||||||
|  |     #for i in range(len(notes_to_repost)): | ||||||
|  |     #    create_note(renote=True, renoteId=notes_to_repost.pop()) | ||||||
|  |     for i in range(len(users_to_follow)): | ||||||
|  |         follow_user(users_to_follow.pop()) | ||||||
|  |     time.sleep(2) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue