Skip to main content

Python SDK for ИТД.com API

Project description

itdirr

PyPI Downloads License Python 3.9+ Docs

Расширенный форк ITDpy — неофициальный Python SDK для итд.com

Форк сделан IRRatium.
Неофициальный API-клиент. SDK предназначен для разработки приложений и автоматизации в рамках правил платформы.

📚 Документация | 🐍 PyPI | 💻 GitHub


Отличия от оригинала

Функция 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
  1. Открой итд.com в браузере и войди в аккаунт
  2. Открой DevTools (F12) → Application → Cookies
  3. Найди куку 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.


Документация

Docs

Документация оригинала: Docs


Планы

  • 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

itdirr-0.6.0.tar.gz (21.4 kB view details)

Uploaded Source

Built Distribution

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

itdirr-0.6.0-py3-none-any.whl (34.3 kB view details)

Uploaded Python 3

File details

Details for the file itdirr-0.6.0.tar.gz.

File metadata

  • Download URL: itdirr-0.6.0.tar.gz
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for itdirr-0.6.0.tar.gz
Algorithm Hash digest
SHA256 1be95c74b18b8182bc9233cc898e0a9c42deb59587c0bc26d41fbc3c9731c965
MD5 69e0a306f69cc18a2d60dedbbf498a06
BLAKE2b-256 fd52cd99dc9c76663038a695cb5bc23973cf23943ee1a2f254b2a4ec730a26c8

See more details on using hashes here.

File details

Details for the file itdirr-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: itdirr-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 34.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for itdirr-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c674bb35da3975b2a95a03978ebeb0a09ec39d67a2a14772e65005b40fcaff5a
MD5 e0d29fe5bdb6f61161dfbbdbfa927cef
BLAKE2b-256 19446e9a0b3cb9598798edb32286b734a1b6369f466e0a920ca79b32bd0f1462

See more details on using hashes here.

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