Production-ready Python SDK for ITD API
Project description
ITDpy
Python SDK для социальной сети итд.com.
Неофициальный API-клиент. SDK предназначен для клиентских приложений, интеграций и сервисов, работающих в рамках правил платформы.
Безопасность и позиция проекта
ITDpy не поддерживает спам, массовую автоматизацию, накрутку, ботов для злоупотреблений и другие сценарии, нарушающие правила платформы.
Библиотека ориентирована на:
- клиентские приложения
- внутренние сервисы
- интеграции
- тестирование API
User-Agent
По умолчанию библиотека использует браузерный User-Agent:
Mozilla/5.0 (Linux; Android 11; SM-G991B)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.6099.144 Mobile Safari/537.36
Это сделано для обеспечения стабильной работы, так как некоторые эндпоинты API могут некорректно обрабатывать нестандартные клиенты.
Библиотека не использует User-Agent для обхода ограничений и ориентирована на корректное использование API.
Установка
pip install itdpy
Через git
git clone https://github.com/Gam5510/ITDpy
cd ITDpy
pip install -r requirements.txt
pip install -e .
Документация
Ссылка: https://gam5510.github.io/ITDpy/
Быстрый старт
Как получить токен
- Открой
итд.comв браузере и войди в аккаунт. - Открой DevTools (F12).
- Перейди в
Application->Cookies. - Найди cookie
refresh_token. - Скопируй её значение.
from itdpy import ITDClient
client = ITDClient(refresh_token="YOUR_REFRESH_TOKEN")
me = client.users.me()
print(me.id)
print(me.username)
Конфигурация
from itdpy import ITDClient, Config
config = Config(
timeout=30,
upload_timeout=180,
max_retries=5,
backoff_factor=2.0,
)
client = ITDClient(
refresh_token="YOUR_REFRESH_TOKEN",
config=config,
)
Кастомный User-Agent
Если нужен полностью свой User-Agent, можно передать его через Config.custom_user_agent:
from itdpy import ITDClient, Config
config = Config(
custom_user_agent="my-app/2.0",
)
client = ITDClient(
refresh_token="YOUR_REFRESH_TOKEN",
config=config,
)
Если custom_user_agent не задан, библиотека использует стандартный стартовый браузерный User-Agent.
User-Agent с данными пользователя
Если нужно после авторизации переключиться на User-Agent с данными SDK и пользователя, включи use_user_data_in_user_agent=True:
from itdpy import ITDClient, Config
config = Config(
service="my_app",
use_user_data_in_user_agent=True,
)
client = ITDClient(
refresh_token="YOUR_REFRESH_TOKEN",
config=config,
)
По умолчанию этот режим выключен.
Шаблон можно переопределить через Config.user_agent_template:
from itdpy import Config
config = Config(
use_user_data_in_user_agent=True,
user_agent_template="itdpy/{sdk_version} ({parts})",
)
Доступные поля шаблона:
{sdk_version}{parts}{user_id}{service}
Примеры
Получить пост
post = client.posts.get("POST_ID")
print(post.id)
print(post.to_dict())
Лента постов
posts = client.posts.list(limit=10)
print(len(posts))
print(posts[0].id)
Создать пост
client.posts.create(
content="Привет из ITDpy",
)
Markdown и HTML
client.posts.create(
content="**Жирный** текст",
parse_md=True,
)
client.posts.create(
content="<b>Жирный</b> текст",
parse_html=True,
)
SSE streaming
stream = client.notifications.stream()
@stream.on("notification")
def on_notification(event):
print(event.data)
stream.run()
keep_online
client.keep_online(
on_event=lambda event_type, data: print(event_type, data),
background=True,
)
Обработка ошибок
from itdpy import APIError, NotFoundError, RateLimitError, ValidationError
try:
client.posts.get("invalid")
except NotFoundError:
print("Не найдено")
except ValidationError as e:
print(e.message)
except RateLimitError as e:
print(e.retry_after)
except APIError as e:
print(e.message)
Прочее
Проект активно развивается. Если у вас есть предложения или pull request, создавайте issue в репозитории. Мой телеграм для обратной связи: @gam5510
Project details
Release history Release notifications | RSS feed
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 itdpy-1.0.4.tar.gz.
File metadata
- Download URL: itdpy-1.0.4.tar.gz
- Upload date:
- Size: 26.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
599b3cd7aa031e603fef7370982fbea71081589e1457f1df01b9763cd2d9a16f
|
|
| MD5 |
e17613460d5969ea9a15fe60da1cb211
|
|
| BLAKE2b-256 |
19ee35f05ea665605e90d721f8f414702e036e05db56171882724786121e0825
|
File details
Details for the file itdpy-1.0.4-py3-none-any.whl.
File metadata
- Download URL: itdpy-1.0.4-py3-none-any.whl
- Upload date:
- Size: 35.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
792dab476c4510e222afafc77f7bfffabd325914af9c2c0c76f135ecd759b6e0
|
|
| MD5 |
ec6d3adea0a9f5fc1e4cd355c457d5af
|
|
| BLAKE2b-256 |
26288f76c97b5233037fc22dbea4e3fe82805f8a7e8c69b55b62c82a2a4dd2a1
|