Skip to main content

Python библиотека для автоматизации работы с API сайта kaalition.ru

Project description

Kaalition API Library

Python библиотека для работы с API сайта kaalition.ru.

Описание

Библиотека упрощает взаимодействие с API:

  • HTTP-запросы
  • Аутентификация
  • Работа с сообщениями и пользователями

Установка

Требования

  • Python 3.8+
  • requests
  • faker

pip

pip install kaalition-lib

Из исходного кода

git clone https://github.com/Dima-programmer/KAALITION_API_LIB.git
cd KAALITION_API_LIB/kaalition-lib
pip install -e .

⚠️ Важные изменения в 3.0.0

Версия 3.0.0 содержит критические изменения:

Удалено

  • Функции сохранения/загрузки аккаунтов
  • Поддержка коллекции аккаунтов
  • Методы регистрации и поддержки

Новая инициализация

Теперь Account инициализируется напрямую:

# Вместо client.login()
account = Account(email="email@mail.ru", password="password")

# Вместо client.create_from_token()
account = Account(token="your_token")

Быстрый старт

from kaalition_lib import Account

# Вход через email и пароль
account = Account(email="email@mail.ru", password="password")

# Или из токена
account = Account(token="your_token")

print(f"Вошли как: {account.username}")
print(f"ID: {account.id}")

# Поиск пользователей
users = account.search_users("никнейм")

if users:
    user = users[0]
    
    # Отправка сообщения
    message = account.send_message(user, "Привет!")
    print(f"Отправлено: {message.id}")
    
    # Методы Message
    message.edit_text("Новый текст")
    message.toggle_reaction("👍")
    message.delete()
    
    # История чата
    messages = account.get_chat_history(user)
    for msg in messages:
        print(f"{msg.sender.nickname}: {msg.text}")

API Reference

Account

Класс для авторизованных операций.

account = Account(email="email@mail.ru", password="password")

# Поля
print(account.id)           # ID пользователя
print(account.username)     # Имя пользователя
print(account.nickname)     # Отображаемое имя
print(account.email)        # Email
print(account.avatar)       # Аватар
print(account.is_verified)  # Верификация
print(account.is_admin)     # Админ

Методы:

Метод Описание
refresh() Синхронизация с сервером
is_active() Проверка активности
update_profile(...) Обновление профиля
search_users(query) Поиск пользователей
send_message(user, text) Отправка сообщения
get_chat_history(user) История чата
edit_message_text(msg, text) Редактирование сообщения
delete_message(msg) Удаление сообщения
toggle_message_reaction(msg, emoji) Реакция на сообщение

KaalitionClient

Клиент для публичных данных (без авторизации).

from kaalition_lib import KaalitionClient

client = KaalitionClient()

Методы:

Метод Описание
get_projects() Список проектов
get_members() Список участников
get_news() Список новостей

User

@dataclass
class User:
    id: int
    username: str
    nickname: str
    photo: str = ""
    avatar_emoji: Optional[str] = None
    is_verified: bool = False
    is_admin: bool = False

Message

@dataclass
class Message:
    id: int
    sender: User
    receiver: User
    text: str = ""
    image: Optional[str] = None
    is_read: bool = False
    read_at: Optional[str] = None
    edited_at: Optional[str] = None
    created_at: str = ""
    updated_at: str = ""
    reactions: List[Reaction] = field(default_factory=list)
    account: Optional[Account] = None

Методы:

message.edit_text("Новый текст")      # Редактировать
message.toggle_reaction("👍")          # Добавить/убрать реакцию
message.delete()                       # Удалить
message.is_edited()                    # Было ли отредактировано
message.has_reaction("👍")             # Есть ли реакция
message.get_reaction_count("👍")       # Количество реакций

Reaction

@dataclass
class Reaction:
    emoji: str
    count: int
    user_ids: List[int]

Project, Member, News

@dataclass
class Project:
    id: int
    title: str
    description: str
    image: Optional[str] = None
    button_text: str = ""
    link: str = ""

@dataclass
class Member:
    id: int
    nickname: str
    photo: Optional[str] = None
    group: str = ""
    telegram: str = ""

@dataclass
class News:
    id: int
    title: str
    content: str
    subtitle: Optional[str] = None
    image: Optional[str] = None
    views: int = 0

Примеры

Работа с сообщениями

from kaalition_lib import Account

account = Account(email="email@mail.ru", password="password")

# Поиск
users = account.search_users("друг")
if not users:
    print("Не найден")
    exit()

user = users[0]

# Отправка
message = account.send_message(user, "Привет!")
if message:
    print(f"Отправлено: {message.id}")

# Редактирование
message.edit_text("Исправленное привет!")

# Реакция
message.toggle_reaction("❤️")

# Удаление
message.delete()

История чата

from kaalition_lib import Account

account = Account(email="email@mail.ru", password="password")

users = account.search_users("собеседник")
if users:
    messages = account.get_chat_history(users[0])
    
    for msg in messages:
        direction = "→" if msg.sender.id == account.id else "←"
        edited = " (ред.)" if msg.is_edited() else ""
        print(f"{direction} {msg.sender.nickname}: {msg.text}{edited}")

Публичные данные

from kaalition_lib import KaalitionClient

client = KaalitionClient()

for p in client.get_projects():
    print(f"{p.title}: {p.link}")

for m in client.get_members():
    print(f"{m.nickname} ({m.group})")

for n in client.get_news():
    print(f"{n.title}: {n.content[:100]}...")

Работа с токеном

from kaalition_lib import Account

# Сохраните токен после входа
account = Account(email="email@mail.ru", password="password")
token = account.token

# Позже используйте токен
account2 = Account(token=token)

Исключения

from kaalition_lib import (
    KaalitionError,
    LoginError,
    TokenError,
    MessageEditError,
    MessageDeleteError,
    ChatHistoryError,
)

try:
    account = Account(email="email@mail.ru", password="wrong")
except LoginError as e:
    print(f"Ошибка входа: {e}")

try:
    message.edit_text("Новый текст")
except MessageEditError as e:
    print(f"Ошибка: {e}")

Константы

from kaalition_lib import (
    DEFAULT_BASE_URL,      # "https://kaalition.ru"
    DEFAULT_USER_AGENT,    # User-Agent
    DEFAULT_EMAIL_DOMAINS, # Домены для email
)

Частые вопросы

Как получить токен?

account = Account(email="email@mail.ru", password="password")
token = account.token  # Сохраните

Как работать с несколькими аккаунтами?

tokens = {"acc1": "token1", "acc2": "token2"}

accounts = {name: Account(token=tok) for name, tok in tokens.items()}

Структура проекта

kaalition-lib/
├── kaalition_lib/
│   ├── __init__.py
│   └── kaalition_lib.py
├── setup.py
├── requirements.txt
├── README.md
└── CHANGELOG.md

Лицензия

MIT

Автор

Dima-Programmer

Версия

3.0.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kaalition_lib-3.0.0.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kaalition_lib-3.0.0-py2.py3-none-any.whl (11.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file kaalition_lib-3.0.0.tar.gz.

File metadata

  • Download URL: kaalition_lib-3.0.0.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kaalition_lib-3.0.0.tar.gz
Algorithm Hash digest
SHA256 05badf027a80402abb6475f59831dd0a06f37dba0d1c5c6fcd131181993fc032
MD5 9e9d12d6ab3447c5e7c801e3a688892a
BLAKE2b-256 12af756aa6465ae5c5665a902479fbdbf63bc83e9ef10b9ec2c96ad08fd01f48

See more details on using hashes here.

Provenance

The following attestation bundles were made for kaalition_lib-3.0.0.tar.gz:

Publisher: publish.yml on Dima-programmer/KAALITION_API_LIB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kaalition_lib-3.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: kaalition_lib-3.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kaalition_lib-3.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 39a678bb4cdf1b0a3c606020b5a3a681898c132fab0d21555c6b102e8144db98
MD5 411bfab24eb2faa962f037244038b778
BLAKE2b-256 2be00fc81cbbd62c4359fcb0e41d4d85d6d6617764a5af65208f83d0e5a4cfc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for kaalition_lib-3.0.0-py2.py3-none-any.whl:

Publisher: publish.yml on Dima-programmer/KAALITION_API_LIB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page