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
Лицензия
Автор
Dima-Programmer
- GitHub: @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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05badf027a80402abb6475f59831dd0a06f37dba0d1c5c6fcd131181993fc032
|
|
| MD5 |
9e9d12d6ab3447c5e7c801e3a688892a
|
|
| BLAKE2b-256 |
12af756aa6465ae5c5665a902479fbdbf63bc83e9ef10b9ec2c96ad08fd01f48
|
Provenance
The following attestation bundles were made for kaalition_lib-3.0.0.tar.gz:
Publisher:
publish.yml on Dima-programmer/KAALITION_API_LIB
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kaalition_lib-3.0.0.tar.gz -
Subject digest:
05badf027a80402abb6475f59831dd0a06f37dba0d1c5c6fcd131181993fc032 - Sigstore transparency entry: 991742001
- Sigstore integration time:
-
Permalink:
Dima-programmer/KAALITION_API_LIB@ca974bca73147abcc9a2b57277b3af363786d285 -
Branch / Tag:
refs/tags/v3.0.0 - Owner: https://github.com/Dima-programmer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca974bca73147abcc9a2b57277b3af363786d285 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39a678bb4cdf1b0a3c606020b5a3a681898c132fab0d21555c6b102e8144db98
|
|
| MD5 |
411bfab24eb2faa962f037244038b778
|
|
| BLAKE2b-256 |
2be00fc81cbbd62c4359fcb0e41d4d85d6d6617764a5af65208f83d0e5a4cfc6
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kaalition_lib-3.0.0-py2.py3-none-any.whl -
Subject digest:
39a678bb4cdf1b0a3c606020b5a3a681898c132fab0d21555c6b102e8144db98 - Sigstore transparency entry: 991742007
- Sigstore integration time:
-
Permalink:
Dima-programmer/KAALITION_API_LIB@ca974bca73147abcc9a2b57277b3af363786d285 -
Branch / Tag:
refs/tags/v3.0.0 - Owner: https://github.com/Dima-programmer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca974bca73147abcc9a2b57277b3af363786d285 -
Trigger Event:
release
-
Statement type: