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 itdirr 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.4.tar.gz (13.5 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.4-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: itdirr-0.7.4.tar.gz
  • Upload date:
  • Size: 13.5 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.4.tar.gz
Algorithm Hash digest
SHA256 9ec1a10a9b353aa79977ed4b1804a46e09a230e422fef2559a9198558c78c0d2
MD5 1cb576d29716233a5a3ccdb2c47a7f2b
BLAKE2b-256 e9e20fe2c02552db240d551d007395c405064f3ccbe67a553454598d90f448bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: itdirr-0.7.4-py3-none-any.whl
  • Upload date:
  • Size: 11.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.7.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d8391edd8df242e622173e03577974eed9b11b5f9315b8bb04095aa25abd003c
MD5 b6177d49824a7f41a98cd53fc99ae01b
BLAKE2b-256 c0f2ebae5118d52f4a0e477c086d7f322b4dde4cfa6814daefb6a338c871a7a0

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