arz_api.models.member_object
1from bs4 import BeautifulSoup 2from requests import Response 3from re import compile 4from typing import TYPE_CHECKING 5 6from arz_api.consts import MAIN_URL 7 8if TYPE_CHECKING: 9 from arz_api.api import ArizonaAPI 10 11 12class Member: 13 def __init__(self, API : 'ArizonaAPI', id: int, username: str, user_title: str, avatar: str, roles: list, messages_count: int, reactions_count: int, trophies_count: int) -> None: 14 self.API = API 15 self.id = id 16 """**ID пользователя**""" 17 self.username = username 18 """**Имя пользователя**""" 19 self.user_title = user_title 20 """**Звание пользователя**""" 21 self.avatar = avatar 22 """**Ссылка на аватарку пользователя**""" 23 self.roles = roles 24 """Роль пользователя на форуме ('покраска')""" 25 26 self.messages_count = messages_count 27 """**Количество сообщений в счетчике**""" 28 self.reactions_count = reactions_count 29 """**Количество реакций в счетчике**""" 30 self.trophies_count = trophies_count 31 """**Количество баллов в счетчике**""" 32 33 self.url = f"{MAIN_URL}/members/{self.id}/" 34 """Ссылка на объект""" 35 36 37 def follow(self) -> Response: 38 """Изменить статус подписки на пользователя 39 40 Returns: 41 Объект Response модуля requests 42 """ 43 44 return self.API.follow_member(self.id) 45 46 def ignore(self) -> Response: 47 """Изменить статус игнорирования пользователя 48 49 Returns: 50 Объект Response модуля requests 51 """ 52 53 return self.API.ignore_member(self.id) 54 55 def add_message(self, message_html: str) -> Response: 56 """Отправить сообщение на стенку пользователя 57 58 Attributes: 59 message_html (str): Текст сообщения. Рекомендуется использование HTML 60 61 Returns: 62 Объект Response модуля requests 63 """ 64 65 return self.API.answer_thread(self.id, message_html) 66 67 def get_profile_messages(self, page: int = 1) -> list: 68 """Возвращает ID всех сообщений со стенки пользователя на странице 69 70 Attributes: 71 page (int): Страница для поиска. По умолчанию 1 (необяз.) 72 73 Returns: 74 Cписок (list) с ID всех сообщений профиля 75 """ 76 77 return self.API.get_profile_messages(self.id, page) 78 79 80class CurrentMember(Member): 81 follow = property(doc='Forbidden method for Current Member object') 82 ignore = property(doc='Forbidden method for Current Member object') 83 84 def edit_avatar(self, upload_photo: str) -> Response: 85 """Изменить аватарку пользователя 86 87 Attributes: 88 upload_photo (str): Относительный или полный путь до изображения 89 90 Returns: 91 Объект Response модуля requests 92 """ 93 94 with open(upload_photo, 'rb') as image: 95 file_dict = {'upload': (upload_photo, image.read())} 96 97 token = BeautifulSoup(self.API.session.get(f"{MAIN_URL}/help/terms/").content, 'lxml').find('html')['data-csrf'] 98 data = { 99 "avatar_crop_x": 0, 100 "avatar_crop_y": 0, 101 "_xfToken": token, 102 "use_custom": 1, 103 } 104 return self.API.session.post(f"{MAIN_URL}/account/avatar", files=file_dict, data=data) 105 106 107 def delete_avatar(self) -> Response: 108 """Удалить автарку пользователя 109 110 Returns: 111 Объект Response модуля requests 112 """ 113 token = BeautifulSoup(self.API.session.get(f"{MAIN_URL}/help/terms/").content, 'lxml').find('html')['data-csrf'] 114 file_dict = {'upload': ("", "")} 115 data = { 116 "avatar_crop_x": 0, 117 "avatar_crop_y": 0, 118 "_xfToken": token, 119 "use_custom": 1, 120 "delete_avatar": 1 121 } 122 123 return self.API.session.post(f"{MAIN_URL}/account/avatar", files=file_dict, data=data) 124 125 # TODO: 126 #def get_last_notifications(self, time_offset: int = 86400, limit: int = 100), change_avatar(), change_banner()
class
Member:
13class Member: 14 def __init__(self, API : 'ArizonaAPI', id: int, username: str, user_title: str, avatar: str, roles: list, messages_count: int, reactions_count: int, trophies_count: int) -> None: 15 self.API = API 16 self.id = id 17 """**ID пользователя**""" 18 self.username = username 19 """**Имя пользователя**""" 20 self.user_title = user_title 21 """**Звание пользователя**""" 22 self.avatar = avatar 23 """**Ссылка на аватарку пользователя**""" 24 self.roles = roles 25 """Роль пользователя на форуме ('покраска')""" 26 27 self.messages_count = messages_count 28 """**Количество сообщений в счетчике**""" 29 self.reactions_count = reactions_count 30 """**Количество реакций в счетчике**""" 31 self.trophies_count = trophies_count 32 """**Количество баллов в счетчике**""" 33 34 self.url = f"{MAIN_URL}/members/{self.id}/" 35 """Ссылка на объект""" 36 37 38 def follow(self) -> Response: 39 """Изменить статус подписки на пользователя 40 41 Returns: 42 Объект Response модуля requests 43 """ 44 45 return self.API.follow_member(self.id) 46 47 def ignore(self) -> Response: 48 """Изменить статус игнорирования пользователя 49 50 Returns: 51 Объект Response модуля requests 52 """ 53 54 return self.API.ignore_member(self.id) 55 56 def add_message(self, message_html: str) -> Response: 57 """Отправить сообщение на стенку пользователя 58 59 Attributes: 60 message_html (str): Текст сообщения. Рекомендуется использование HTML 61 62 Returns: 63 Объект Response модуля requests 64 """ 65 66 return self.API.answer_thread(self.id, message_html) 67 68 def get_profile_messages(self, page: int = 1) -> list: 69 """Возвращает ID всех сообщений со стенки пользователя на странице 70 71 Attributes: 72 page (int): Страница для поиска. По умолчанию 1 (необяз.) 73 74 Returns: 75 Cписок (list) с ID всех сообщений профиля 76 """ 77 78 return self.API.get_profile_messages(self.id, page)
Member( API: arz_api.api.ArizonaAPI, id: int, username: str, user_title: str, avatar: str, roles: list, messages_count: int, reactions_count: int, trophies_count: int)
14 def __init__(self, API : 'ArizonaAPI', id: int, username: str, user_title: str, avatar: str, roles: list, messages_count: int, reactions_count: int, trophies_count: int) -> None: 15 self.API = API 16 self.id = id 17 """**ID пользователя**""" 18 self.username = username 19 """**Имя пользователя**""" 20 self.user_title = user_title 21 """**Звание пользователя**""" 22 self.avatar = avatar 23 """**Ссылка на аватарку пользователя**""" 24 self.roles = roles 25 """Роль пользователя на форуме ('покраска')""" 26 27 self.messages_count = messages_count 28 """**Количество сообщений в счетчике**""" 29 self.reactions_count = reactions_count 30 """**Количество реакций в счетчике**""" 31 self.trophies_count = trophies_count 32 """**Количество баллов в счетчике**""" 33 34 self.url = f"{MAIN_URL}/members/{self.id}/" 35 """Ссылка на объект"""
def
follow(self) -> requests.models.Response:
38 def follow(self) -> Response: 39 """Изменить статус подписки на пользователя 40 41 Returns: 42 Объект Response модуля requests 43 """ 44 45 return self.API.follow_member(self.id)
Изменить статус подписки на пользователя
Returns:
Объект Response модуля requests
def
ignore(self) -> requests.models.Response:
47 def ignore(self) -> Response: 48 """Изменить статус игнорирования пользователя 49 50 Returns: 51 Объект Response модуля requests 52 """ 53 54 return self.API.ignore_member(self.id)
Изменить статус игнорирования пользователя
Returns:
Объект Response модуля requests
def
add_message(self, message_html: str) -> requests.models.Response:
56 def add_message(self, message_html: str) -> Response: 57 """Отправить сообщение на стенку пользователя 58 59 Attributes: 60 message_html (str): Текст сообщения. Рекомендуется использование HTML 61 62 Returns: 63 Объект Response модуля requests 64 """ 65 66 return self.API.answer_thread(self.id, message_html)
Отправить сообщение на стенку пользователя
Attributes:
- message_html (str): Текст сообщения. Рекомендуется использование HTML
Returns:
Объект Response модуля requests
def
get_profile_messages(self, page: int = 1) -> list:
68 def get_profile_messages(self, page: int = 1) -> list: 69 """Возвращает ID всех сообщений со стенки пользователя на странице 70 71 Attributes: 72 page (int): Страница для поиска. По умолчанию 1 (необяз.) 73 74 Returns: 75 Cписок (list) с ID всех сообщений профиля 76 """ 77 78 return self.API.get_profile_messages(self.id, page)
Возвращает ID всех сообщений со стенки пользователя на странице
Attributes:
- page (int): Страница для поиска. По умолчанию 1 (необяз.)
Returns:
Cписок (list) с ID всех сообщений профиля
81class CurrentMember(Member): 82 follow = property(doc='Forbidden method for Current Member object') 83 ignore = property(doc='Forbidden method for Current Member object') 84 85 def edit_avatar(self, upload_photo: str) -> Response: 86 """Изменить аватарку пользователя 87 88 Attributes: 89 upload_photo (str): Относительный или полный путь до изображения 90 91 Returns: 92 Объект Response модуля requests 93 """ 94 95 with open(upload_photo, 'rb') as image: 96 file_dict = {'upload': (upload_photo, image.read())} 97 98 token = BeautifulSoup(self.API.session.get(f"{MAIN_URL}/help/terms/").content, 'lxml').find('html')['data-csrf'] 99 data = { 100 "avatar_crop_x": 0, 101 "avatar_crop_y": 0, 102 "_xfToken": token, 103 "use_custom": 1, 104 } 105 return self.API.session.post(f"{MAIN_URL}/account/avatar", files=file_dict, data=data) 106 107 108 def delete_avatar(self) -> Response: 109 """Удалить автарку пользователя 110 111 Returns: 112 Объект Response модуля requests 113 """ 114 token = BeautifulSoup(self.API.session.get(f"{MAIN_URL}/help/terms/").content, 'lxml').find('html')['data-csrf'] 115 file_dict = {'upload': ("", "")} 116 data = { 117 "avatar_crop_x": 0, 118 "avatar_crop_y": 0, 119 "_xfToken": token, 120 "use_custom": 1, 121 "delete_avatar": 1 122 } 123 124 return self.API.session.post(f"{MAIN_URL}/account/avatar", files=file_dict, data=data) 125 126 # TODO: 127 #def get_last_notifications(self, time_offset: int = 86400, limit: int = 100), change_avatar(), change_banner()
def
edit_avatar(self, upload_photo: str) -> requests.models.Response:
85 def edit_avatar(self, upload_photo: str) -> Response: 86 """Изменить аватарку пользователя 87 88 Attributes: 89 upload_photo (str): Относительный или полный путь до изображения 90 91 Returns: 92 Объект Response модуля requests 93 """ 94 95 with open(upload_photo, 'rb') as image: 96 file_dict = {'upload': (upload_photo, image.read())} 97 98 token = BeautifulSoup(self.API.session.get(f"{MAIN_URL}/help/terms/").content, 'lxml').find('html')['data-csrf'] 99 data = { 100 "avatar_crop_x": 0, 101 "avatar_crop_y": 0, 102 "_xfToken": token, 103 "use_custom": 1, 104 } 105 return self.API.session.post(f"{MAIN_URL}/account/avatar", files=file_dict, data=data)
Изменить аватарку пользователя
Attributes:
- upload_photo (str): Относительный или полный путь до изображения
Returns:
Объект Response модуля requests
def
delete_avatar(self) -> requests.models.Response:
108 def delete_avatar(self) -> Response: 109 """Удалить автарку пользователя 110 111 Returns: 112 Объект Response модуля requests 113 """ 114 token = BeautifulSoup(self.API.session.get(f"{MAIN_URL}/help/terms/").content, 'lxml').find('html')['data-csrf'] 115 file_dict = {'upload': ("", "")} 116 data = { 117 "avatar_crop_x": 0, 118 "avatar_crop_y": 0, 119 "_xfToken": token, 120 "use_custom": 1, 121 "delete_avatar": 1 122 } 123 124 return self.API.session.post(f"{MAIN_URL}/account/avatar", files=file_dict, data=data)
Удалить автарку пользователя
Returns:
Объект Response модуля requests