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.5.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.5-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: itdirr-0.7.5.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.5.tar.gz
Algorithm Hash digest
SHA256 667b7bc2960b4e3b90d84d6a9a5b29cc93c4227b4833f2136f81463d6cd847f8
MD5 af5f32750f9d8e5cc2338f7f5167175a
BLAKE2b-256 e94e6d90f88e21ea301b98dce0655fd59716580d9f4ef0f473a7339f80562bd6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: itdirr-0.7.5-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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fbcbc05b580dfbf1a15c9916041672f87aba86ca0a3d8c5e8b83c5cdab1b3e70
MD5 503f89debf3fbb64a45df6db6c7540d7
BLAKE2b-256 c05b567aef3c4b030408531950433f8cdb256b3d5aa2e7b43e449221c7c695f3

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