Исходник DepsPy | библиотека для взаимодействия с Deps API на Python

fakelag28

Участник
Автор темы
41
57

DepsPy​

Асинхронная библиотека для работы с Deps API на Python.
Библиотека доступна на PyPI, исходный код на GitHub.

Установка​

Код:
pip install depspy

Использование​

Python:
import asyncio
from depspy import DepsClient

async def main():
    async with DepsClient("YOUR_API_KEY") as client:
        # Получение информации об игроке
        player = await client.get_player("Nicolas_Reed", 5)
        print(player)
        await asyncio.sleep(3)
       
        # Получение списка онлайн игроков
        online = await client.get_online_players(5)
        print(f"Онлайн игроков: {len(online.data)}")
        await asyncio.sleep(3)
       
        # Получение списка фракций
        fractions = await client.get_fractions(5)
        print(f"Доступно {len(fractions.data)} фракций: {fractions.data}")
        await asyncio.sleep(3)

        # Пробив каждой доступной фракции
        for fraction_id in fractions.data:
            try:
                fraction_online = await client.get_fraction_online(5, fraction_id)
                print(f"Онлайн во фракции '{fraction_id}': {len(fraction_online.data)}")
                await asyncio.sleep(5)
            except Exception as e:
                print(f"Не удалось получить онлайн для фракции '{fraction_id}': {e}")
                await asyncio.sleep(5)

if __name__ == "__main__":
    asyncio.run(main())

Особенности​

  • Полностью асинхронный API
  • Автоматическая обработка ошибок
  • Поддержка корпоративных ключей
  • Автоматические повторные попытки при ошибках
  • Типизация данных с помощью Pydantic
  • Поддержка контекстного менеджера
  • Встроенное кэширование запросов
  • Валидация входных данных
  • Подробное логирование
  • Поддержка прокси
  • Настраиваемые таймауты
  • SSL верификация

Методы API​

Основные методы:
  • get_player(nickname: str, server_id: int) - Информация об игроке
  • get_interviews(server_id: int) - Информация о собеседованиях
  • get_online_players(server_id: int) - Список онлайн игроков
  • get_fractions(server_id: int) - Список фракций
  • get_fraction_online(server_id: int, fraction_id: str) - Онлайн фракции
  • get_admins(server_id: int) - Список администраторов
  • get_status() - Статус серверов

Дополнительные методы:
  • get_player_by_id(player_id: int, server_id: int)
  • get_server_info(server_id: int)
  • get_online_count(server_id: int)
  • get_fraction_members_count(server_id: int, fraction_id: str)
  • is_player_online(nickname: str, server_id: int)
  • get_player_level(nickname: str, server_id: int)
  • get_player_money(nickname: str, server_id: int)
  • get_player_organization(nickname: str, server_id: int)
  • get_player_property(nickname: str, server_id: int)
  • get_player_vip_info(nickname: str, server_id: int)

Обработка ошибок​

Основные ошибки:
  • UnauthorizedError - Ошибка авторизации
  • RateLimitError - Превышен лимит запросов
  • PlayerNotFoundError - Игрок не найден
  • ServerNotFoundError - Сервер не найден
  • APIError - Общая ошибка API

Дополнительные ошибки:
  • InvalidAPIKeyError
  • ExpiredAPIKeyError
  • InsufficientPermissionsError
  • InvalidServerIDError
  • InvalidNicknameError
  • InvalidFractionIDError
  • ValidationError
  • MaintenanceError
  • TimeoutError
  • ConnectionError
  • ProxyError
  • SSLError
  • DNSResolutionError

Настройка клиента​

Python:
client = DepsClient(
    api_key="YOUR_API_KEY",
    corporate_key=False,  # Использовать корпоративный ключ
    base_url="https://api.depscian.tech/v2",  # Базовый URL API
    timeout=30,  # Таймаут запросов (сек)
    max_retries=3,  # Макс. попыток
    cache_ttl=300,  # Время жизни кэша (сек)
    proxy="http://proxy.example.com:8080",  # Прокси
    verify_ssl=True,  # Проверка SSL
    log_level=logging.INFO  # Уровень логирования
)

Требования​

  • Python 3.8+
  • aiohttp>=3.8.0
  • pydantic>=2.0.0
 

fakelag28

Участник
Автор темы
41
57
Добавил новые методы:
Python:
get_map(server_id: int) -> MapResponse
get_ghetto(server_id: int) -> GhettoResponse
Новые данные в объект игрока:
status: str timestamp: int
Два примера для работы с новыми методами - ghetto_example.py и map_example.py
Обновление до новой версии:
Bash:
pip install depspy --upgrade
 
  • Влюблен
Реакции: Deps

fakelag28

Участник
Автор темы
41
57
Обновил модели под новую структуру ответов.
Bash:
pip install depspy --upgrade
 
  • Влюблен
Реакции: Deps