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

TastyBread123

Известный
Автор темы
628
302
Всех приветствую
Как вы могли догадаться, это API для интернет ресурсов аризоны. Можете потыкать по спойлерам для большей информации
Пакет доступен к установке через pip: pip install arz-api

Github | Релизы | Документация | PyPI

Не используйте способ с document.cookie в консоли JavaScript. Для этого лучше использовать отдельные расширения для работы с куки. Например, EditThisCookie или Cookie-Editor

Примеры:
Код:
import arz_api


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

api = arz_api.ArizonaAPI(user_agent="your", cookie=cookies)

user = api.current_member
print(f'Успешно авторизовались!\nИмя пользователя: {user.username} | Звание: {user.user_title}\nАватарка: {user.avatar}\nСообщений: {user.messages_count} | Реакций: {user.reactions_count}\n')

category = api.get_category(1865)
print(f"Название: {category.title} ({category.id})\nСтраниц: {category.pages_count}\n")

member = api.get_member(583439)
print(f'Пользователь найден!\nИмя пользователя: {member.username} | Звание: {member.user_title}\nАватарка: {member.avatar}\nСообщений: {member.messages_count} | Реакций: {member.reactions_count}\n')

thread = api.get_thread(6594323)
print(f'Название: {thread.title} ({thread.id})\nАвтор темы: {thread.creator.username}\nКатегория: {thread.category.title} ({thread.category.id})\nДата создания: {thread.create_date} | Закрыто: {thread.is_closed}')

statistic = api.get_forum_statistic()
print(f'\n\nТем: {statistic.threads_count} | Постов: {statistic.posts_count} | Пользователей: {statistic.users_count}\nПоследний пользователь: {statistic.last_register_member.username}')

post = api.get_post(36550558)
print(f'\n\nАвтор: {post.creator.username}({post.creator.id})\nID: {post.id} | Дата создания: {post.create_date}\nРазмещено в теме {post.thread.title}\n\n{post.bb_content}')

profile_post = api.get_profile_post(2247012)
print(f"\n\nАвтор: {profile_post.creator.username} ({profile_post.creator.id})\nСоздано в {profile_post.create_date} у пользователя {profile_post.profile.username} ({profile_post.profile.id})\n\n{profile_post.bb_content}")
Отсюда
Код:
import arz_api

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

api = arz_api.ArizonaAPI(user_agent="your", cookie=cookies)
threads = api.get_threads(354)

print('Закрепленные темы:')
for i in threads["pins"]:
    thread = api.get_thread(i)
    print(f'{thread.title} by {thread.creator.username}')

print('\n____________________\nНезакрепленные темы:')
for i in threads["unpins"]:
    thread = api.get_thread(i)
    print(f'{thread.title} by {thread.creator.username}')
Отсюда
Код:
import arz_api

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

try:
    api = arz_api.ArizonaAPI(user_agent="your", cookie=cookies)
    print('Success login! Getting last posts in your profile...')

    for post_id in api.current_member.get_profile_messages():
        post = api.get_profile_post(post_id)
        print("\nMessage ID: {0}\nFrom: {1}\nText: {2}\nUnformatted text: {3}".format(post.creator.id, post.creator.username, post.text_content, post.bb_content))

except arz_api.IncorrectLoginData: print('Invalid login data!')
Код:
import arz_api

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


api = arz_api.ArizonaAPI(user_agent="your", cookie=cookies)


# ПРИМЕР ДЛЯ PAYSON
jb = api.send_form(45, {
                   'question[531]': '1',  # Тип жалобы (1 - на адм / 2 - на красных), в этом примере на адм (в жб на красных id полей различаются)
                   'question[532]': "Your_Nick",  # Ваш ник
                   'question[533]': "Admin_Nick",  # Ник администратора
                   'question[534]': "ДМ ЗЗ",  # Причина наказания
                   'question[535]': "ВИ ПЛАХИЕ ОПРУ ИЛИ СНИМАЙТИ ОДМЕНА",  # Суть жалобы
                   'question[536]': "https://imgur.com/a/rfFsf",  #Скриншот истории наказаний
                   'question[537]': "https://imgur.com/a/fGFYj",  # Скриншот при входе в игру (при бане)
                   'question[538]': "2023-07-10",  # Дата выдачи наказания
                   'question[539]': '1'  # Готов нести ответственность в случае обмана
                   })

Вроде как имеется (не тестировал). Дополнительно можете при авторизации отключить обход, поставив параметр do_bypass = False
Без обхода:
api = ArizonaAPI(user_agent="your", cookie=cookies, do_bypass = False)

Пока что API в стадии разработки, поэтому если найдете баги или есть предложения - пишите сюда​
 
Последнее редактирование:

TastyBread123

Известный
Автор темы
628
302
Update v1.1
- В объект пользователя (Member) был добавлен метод get_profile_messages(page: int), возвращает список из ID сообщений
- В объект поста (Post) были добавлены поля text_content - текст без html тегов
- Теперь методы объекта раздела (Category) get_threads(page) и get_categories() возвращают список (list) из ID
- Поправлены/добавлены комментарии
- Добавлен requirements.txt
- Добавлены новые примеры

Release
 
Последнее редактирование:

TastyBread123

Известный
Автор темы
628
302
Update v1.2
- Теперь из объекта ArizonaAPI можно вызвать большинство методов (пример)
- Теперь по умолчанию в get_posts() у объекта Thread стоит 1 страница
- Улучшен внешний вид документации
- Мелкие исправления, улучшения

Release
 

TastyBread123

Известный
Автор темы
628
302
Update v1.3
- Добавлен метод в объект темы (Thread) - edit_info(title: str, prefix_id: int). В ArizonaAPI - edit_thread_info(thread_id: int, title: str, prefix_id: int)
- Новый метод ArizonaAPI send_form(form_id: int, form_data: dict). Может быть использован для создания жалоб (пример)
- Мелкие исправления, улучшения

Release
 
  • Нравится
Реакции: Z3roKwq

Philomen

Известный
119
29
Не хочешь сделать АПИ для личного кабинета на АРЗ? Там можно пробивать статистику игроков, тоже прикольная штука
 

TastyBread123

Известный
Автор темы
628
302
Не хочешь сделать АПИ для личного кабинета на АРЗ? Там можно пробивать статистику игроков, тоже прикольная штука
Там пару проблем - капча, а также куки хранятся до закрытия сессии (браузера)
 
  • Нравится
Реакции: Dickson и Philomen

neverlane

t.me/neverlane00
Друг
1,010
1,163
Там пару проблем - капча, а также куки хранятся до закрытия сессии (браузера)
в лк просто по-еблански сделана авторизация с jwt токенами, так-то можно 1 раз с помощью любого солвера recaptcha v3 войти а потом сделать следующее
получаем refresh токен (на арз, живет 3 дня) -> обновляем с помощью backend.arizona-rp.com/auth/refresh -> получаем новые access и refresh токены
когда срок access токена заканчивается (12 часов живет вроде) - повторяем наши действия
 

TastyBread123

Известный
Автор темы
628
302
Как сделать проверку на префикс темы и закреп?
Префикс только если сравнивать с помощью метода startswith
Префикс:
# импортируем, авторизуемся и тд

is_prefix_important = api.get_thread(id).title.startswith("Важно")

Проверку на закреп постараюсь сделать в следующей обнове
 

ferdik

Новичок
10
3
Как работает get_post?

@bot.on.message(text="+test")
async def echo(message: Message):
for post_id in a_api.get_thread_posts(6635856):
post = a_api.get_post(post_id)
print(post)

Xv74La0NYP0.jpg
 
  • Нравится
Реакции: TastyBread123