Skip to main content

Python SDK for ИТД.com API — форк ITDpy by IRRatium

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="Мой комментарий")  # 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()  # отмечает все сразу

Пины

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.7.3.tar.gz (22.3 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.7.3-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for itdirr-0.7.3.tar.gz
Algorithm Hash digest
SHA256 423bb2d7c0b0524b1133d64c74e6d5e0f5b7daaf5c59316b2697d5850f83c0f8
MD5 925fd6bc5252a6c4d307c76f94a9a631
BLAKE2b-256 cf15a4807e9356ad5411d1f863bf2712baeaae14aca1e8465459acb6b8ec46e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: itdirr-0.7.3-py3-none-any.whl
  • Upload date:
  • Size: 36.1 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.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bb9aba13d55f5b0d642dff8f379afe54959a26b17519dcc98d3bd59ea014e599
MD5 beb56e7fa9bd2b49f03ff16d4467ebd9
BLAKE2b-256 7fdb0203c1427e1bdbc17c386d5edbfec48829a7dbdfaf62717613ef5698c18f

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