Исходник Arizona Forum API [v2.0.1]

TastyBread123

Известный
Автор темы
634
304
Как получить все сообщения из темы?
Код:
thread = api.get_thread(THREAD_ID)

threads = []
for page in range(1, thread.pages_count + 1):
    # Если нужны просто айдишники
    threads += thread.get_posts(page)
    
    # если нужны еще сами объекты
    posts = thread.get_posts(page)
    for post in posts:
        threds.append(api.get_post(post))

как то так примерно
 

Mercyline

Новичок
23
0
как получить куки?

cookies = {"xf_user": "your",
"xf_tfa_trust": "your",
"xf_session": "your"
}
 

fakelag46

Участник
26
22
Изменение текста в теме/посте не работает, покрас 3 лвла есть, сам могу менять, через библиотеку не получается.
Python:
post_structure = api.get_post(37470102)
post_structure.edit("123")
 

nikusyaxxs

Известный
332
103
Почему если страница темы >1, то начинает некорректно выводить содержимое заголовка?
1738983849368.png
 

fakelag46

Участник
26
22
попробуй в какой то html файл записать post_structure.content
Нашёл решение проблемы:
При редактировании обязательно нужно указывать заголовок темы, даже если редактируется пост.
Python:
def edit_post(self, post_id: int, message_html: str) -> Response:
        """Отредактировать сообщение

        Attributes:
            post_id (int): ID сообщения
            message_html (str): Новый текст сообщения. Рекомендуется использование HTML
            
        Returns:
            Объект Response модуля requests
        """
        title_of_thread_post = self.get_post(post_id).thread.title

        return self.session.post(f"{MAIN_URL}/posts/{post_id}/edit", {"title": title_of_thread_post, "message_html": message_html, "message": message_html, "_xfToken": self.token})
 
  • Нравится
Реакции: TastyBread123

TastyBread123

Известный
Автор темы
634
304
Нашёл решение проблемы:
При редактировании обязательно нужно указывать заголовок темы, даже если редактируется пост.
Python:
def edit_post(self, post_id: int, message_html: str) -> Response:
        """Отредактировать сообщение

        Attributes:
            post_id (int): ID сообщения
            message_html (str): Новый текст сообщения. Рекомендуется использование HTML
           
        Returns:
            Объект Response модуля requests
        """
        title_of_thread_post = self.get_post(post_id).thread.title

        return self.session.post(f"{MAIN_URL}/posts/{post_id}/edit", {"title": title_of_thread_post, "message_html": message_html, "message": message_html, "_xfToken": self.token})
благодарю
 

nikusyaxxs

Известный
332
103
Почему если страница темы >1, то начинает некорректно выводить содержимое заголовка?
Посмотреть вложение 263310
Решил это изменением логики(?) получения названия темы

Python:
def get_thread(self, thread_id: int):
    request = self.session.get(f"{MAIN_URL}/threads/{thread_id}/page-1?_xfResponseType=json&_xfToken={self.token}").json()
    if request['status'] == 'error':
        return None
    
    if request.get('redirect') is not None:
        return self.get_thread(request['redirect'].strip(MAIN_URL).split('/')[
    content = unescape(request['html']['content'])
    content_h1 = unescape(request['html']['h1'])
    content = BeautifulSoup(content, 'lxml')
    content_h1 = BeautifulSoup(content_h1, 'lxm
    creator_id = content.find('a', {'class': 'username'})
    try: creator = self.get_member(int(creator_id['data-user-id']))
    except: creator = Member(self, int(creator_id['data-user-id']), content.find('a', {'class': 'username'}).text, None, None, None, None, None, None)
    
    create_date = int(content.find('time')['data-time'])
    
    try:
        prefix = content_h1.find('span', {'class': 'label'}).text
        title = content_h1.text.strip().replace(prefix, "").strip()
 
  • Нравится
Реакции: TastyBread123