Python SDK for ИТД.com API
Project description
itdirr
Расширенный форк ITDpy — неофициальный Python SDK для итд.com
Форк сделан IRRatium.
Неофициальный API-клиент. SDK предназначен для разработки приложений и автоматизации в рамках правил платформы.
Отличия от оригинала
| Функция | ITDpy | itdirr |
|---|---|---|
Статус онлайн (keep_online) |
❌ | ✅ |
Стена (get_wall, post_to_wall) |
❌ | ✅ |
Просмотры постов (view_post) |
❌ | ✅ |
Смена юзернейма (set_username) |
❌ | ✅ |
| Посты, комментарии, уведомления | ✅ | ✅ |
| Пины, опросы, настройки | ✅ | ✅ |
| Поиск, дискавери | ✅ | ✅ |
Установка
pip install itdirr
Или через git:
git clone https://github.com/IRRatium/itdirr
cd itdirr
pip install -e .
Быстрый старт
from itdpy import ITDClient
client = ITDClient(refresh_token="ваш_токен")
me = client.get_me()
print(me.username)
print(me.display_name)
print(me.followers_count)
Как получить refresh_token
- Открой итд.com в браузере и войди в аккаунт
- Открой DevTools (F12) → Application → Cookies
- Найди куку
refresh_tokenи скопируй значение
Возможности
Пользователи
me = client.get_me()
user = client.get_user("gam5510")
print(user.bio, user.followers_count, user.online)
client.follow_user("gam5510")
client.unfollow_user("gam5510")
followers = client.get_followers("gam5510", page=1, limit=30)
following = client.get_following("gam5510")
Профиль
client.update_profile(display_name="Новое имя", bio="Описание")
# Быстрая смена юзернейма
client.set_username("coolname42")
# Загрузить баннер
file = client.upload_file("banner.gif")
client.update_profile(banner_id=file.id)
Посты
posts = client.get_posts(limit=20, tab="popular") # popular / newest / oldest
post = client.create_post("Привет!")
# С HTML-форматированием
post = client.create_post("<b>Жирный</b> и <i>курсив</i>", parse_html=True)
# С опросом
post = client.create_post(
content="Голосуем!",
poll={"question": "Лучший язык?", "options": ["Python", "Go", "Rust"]}
)
# С медиафайлом
file = client.upload_file("photo.jpg")
post = client.create_post("Фото!", attachment_ids=[file.id])
client.like_post(post.id)
client.unlike_post(post.id)
client.repost_post(post.id, content="Мой комментарий")
client.view_post(post.id)
client.delete_post(post.id)
posts = client.get_user_posts("gam5510")
Комментарии
comments = client.get_comments(post_id, limit=20, sort="popular")
comment = client.create_comment(post_id, "Отличный пост!")
client.reply_to_comment(comment.id, "Согласен!")
client.like_comment(comment.id)
client.delete_comment(comment.id)
replies = client.get_replies(comment.id)
Стена ✨
wall = client.get_wall("gam5510")
client.post_to_wall("gam5510", "Привет!")
Статус онлайн ✨
# Держать онлайн в фоне — одна строка
client.keep_online()
# С обработкой событий в реальном времени
def on_event(event_type, data):
if event_type == "like":
print("Новый лайк!")
elif event_type == "comment":
print("Новый комментарий!")
elif event_type == "follow":
print("Новый подписчик!")
client.keep_online(on_event=on_event)
# Блокирующий режим
client.keep_online(background=False)
Уведомления
notifications = client.get_notifications(limit=20)
for n in notifications:
print(n.type, n.actor.username)
client.mark_notification_read(notification_id)
client.mark_all_notification_read([id1, id2])
Пины
pins = client.get_pins()
client.set_pin(slug="kirill67_202602_infected")
client.remove_pin()
Настройки
client.update_privacy(
is_private=True,
wall_access="followers", # everyone / followers / mutual / nobody
likes_visibility="mutual",
show_last_seen=False,
)
client.update_notification_settings(
likes=True,
comments=True,
sound=False,
)
Поиск и дискавери
results = client.search("python")
posts = client.search_hashtags("python")
trends = client.get_trending_hashtags(limit=10)
suggestions = client.who_to_follow()
Опросы
post = client.get_post(post_id)
client.vote(post.id, option_ids=post.poll.options[0].id)
Кастомные запросы
response = client.get("/api/users/me")
data = response.json()
response = client.post("/api/posts", json={"content": "Привет!"})
client.put("/api/users/me", json={"displayName": "Новое имя"})
client.delete("/api/posts/POST_ID")
response = client.get("/api/posts", params={"limit": 50, "sort": "popular"})
Модели
| Модель | Описание |
|---|---|
Me |
Текущий пользователь |
User |
Профиль пользователя |
UserLite |
Краткий профиль (в постах, комментариях) |
Post |
Пост |
Posts |
Список постов с пагинацией |
Comment |
Комментарий |
Notification |
Уведомление |
Poll / PollOption |
Опрос |
Pin / Pins |
Пины профиля |
Attachment |
Медиафайл |
PrivacySettings |
Настройки приватности |
NotificationSettings |
Настройки уведомлений |
Все модели на Pydantic v2, автоматический маппинг camelCase → snake_case.
Документация оригинала
Планы
- Async-клиент (
asyncio) - Логирование через
logging - Новые эндпоинты по мере появления
Благодарности
Оригинальная библиотека — ITDpy by Gam5510
Лицензия
MIT © IRRatium
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 itdirr-0.5.0.tar.gz.
File metadata
- Download URL: itdirr-0.5.0.tar.gz
- Upload date:
- Size: 21.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a72aca1dd7051bacec0a2f9e07e912d3c910aef3cc8fe4cdc20db94bb874c72
|
|
| MD5 |
5ac0c00b0abf82ae784a364a60b58524
|
|
| BLAKE2b-256 |
1a935be97ab40cdafab9cae6fc537383d04c4a5daed9c320e8913e256ecf33bb
|
File details
Details for the file itdirr-0.5.0-py3-none-any.whl.
File metadata
- Download URL: itdirr-0.5.0-py3-none-any.whl
- Upload date:
- Size: 34.0 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 |
abd8e244a090fa8a53f01c089d20ce43afac5a1f8be6ddd1e16d2da4145f5dd2
|
|
| MD5 |
94741f410db6a49afa72a2f014e93562
|
|
| BLAKE2b-256 |
1c65b42819b931530254e05fe5591578efc46f79c0d4e8edef27c27bef61d785
|