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        """Ссылка на объект"""
API
id

ID пользователя

username

Имя пользователя

user_title

Звание пользователя

avatar

Ссылка на аватарку пользователя

roles

Роль пользователя на форуме ('покраска')

messages_count

Количество сообщений в счетчике

reactions_count

Количество реакций в счетчике

trophies_count

Количество баллов в счетчике

url

Ссылка на объект

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 всех сообщений профиля

class CurrentMember(Member):
 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()
follow

Изменить статус подписки на пользователя

Returns:

Объект Response модуля requests

ignore

Изменить статус игнорирования пользователя

Returns:

Объект Response модуля requests

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