Skip to main content

Production-ready Python SDK for ITD API

Project description

ITDpy

PyPI version Downloads License Docs

Python SDK для социальной сети итд.com.

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

Безопасность и позиция проекта

ITDpy не поддерживает спам, массовую автоматизацию, накрутку, ботов для злоупотреблений и другие сценарии, нарушающие правила платформы.

Библиотека ориентирована на:

  • клиентские приложения
  • внутренние сервисы
  • интеграции
  • тестирование API

User-Agent

По умолчанию библиотека использует браузерный User-Agent:

Mozilla/5.0 (Linux; Android 11; SM-G991B)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.6099.144 Mobile Safari/537.36

Это сделано для обеспечения стабильной работы, так как некоторые эндпоинты API могут некорректно обрабатывать нестандартные клиенты.

Библиотека не использует User-Agent для обхода ограничений и ориентирована на корректное использование API.

Установка

pip install itdpy

Через git

git clone https://github.com/Gam5510/ITDpy
cd ITDpy
pip install -r requirements.txt
pip install -e .

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

Docs

Ссылка: https://gam5510.github.io/ITDpy/

Быстрый старт

Получение токена Как получить токен

  • Открой итд.com в браузере и войди в аккаунт.
  • Открой DevTools (F12).
  • Перейди в Application -> Cookies.
  • Найди cookie refresh_token.
  • Скопируй её значение.
from itdpy import ITDClient

client = ITDClient(refresh_token="YOUR_REFRESH_TOKEN")

me = client.users.me()
print(me.id)
print(me.username)

Конфигурация

from itdpy import ITDClient, Config

config = Config(
    timeout=30,
    upload_timeout=180,
    max_retries=5,
    backoff_factor=2.0,
)

client = ITDClient(
    refresh_token="YOUR_REFRESH_TOKEN",
    config=config,
)

Кастомный User-Agent

Если нужен полностью свой User-Agent, можно передать его через Config.custom_user_agent:

from itdpy import ITDClient, Config

config = Config(
    custom_user_agent="my-app/2.0",
)

client = ITDClient(
    refresh_token="YOUR_REFRESH_TOKEN",
    config=config,
)

Если custom_user_agent не задан, библиотека использует стандартный стартовый браузерный User-Agent.

User-Agent с данными пользователя

Если нужно после авторизации переключиться на User-Agent с данными SDK и пользователя, включи use_user_data_in_user_agent=True:

from itdpy import ITDClient, Config

config = Config(
    service="my_app",
    use_user_data_in_user_agent=True,
)

client = ITDClient(
    refresh_token="YOUR_REFRESH_TOKEN",
    config=config,
)

По умолчанию этот режим выключен.

Шаблон можно переопределить через Config.user_agent_template:

from itdpy import Config

config = Config(
    use_user_data_in_user_agent=True,
    user_agent_template="itdpy/{sdk_version} ({parts})",
)

Доступные поля шаблона:

  • {sdk_version}
  • {parts}
  • {user_id}
  • {service}

Примеры

Получить пост

post = client.posts.get("POST_ID")
print(post.id)
print(post.to_dict())

Лента постов

posts = client.posts.list(limit=10)
print(len(posts))
print(posts[0].id)

Создать пост

client.posts.create(
    content="Привет из ITDpy",
)

Markdown и HTML

client.posts.create(
    content="**Жирный** текст",
    parse_md=True,
)

client.posts.create(
    content="<b>Жирный</b> текст",
    parse_html=True,
)

SSE streaming

stream = client.notifications.stream()

@stream.on("notification")
def on_notification(event):
    print(event.data)

stream.run()

keep_online

client.keep_online(
    on_event=lambda event_type, data: print(event_type, data),
    background=True,
)

Обработка ошибок

from itdpy import APIError, NotFoundError, RateLimitError, ValidationError

try:
    client.posts.get("invalid")
except NotFoundError:
    print("Не найдено")
except ValidationError as e:
    print(e.message)
except RateLimitError as e:
    print(e.retry_after)
except APIError as e:
    print(e.message)

Прочее

Проект активно развивается. Если у вас есть предложения или pull request, создавайте issue в репозитории. Мой телеграм для обратной связи: @gam5510

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

itdpy-1.0.4.tar.gz (26.8 kB view details)

Uploaded Source

Built Distribution

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

itdpy-1.0.4-py3-none-any.whl (35.8 kB view details)

Uploaded Python 3

File details

Details for the file itdpy-1.0.4.tar.gz.

File metadata

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

File hashes

Hashes for itdpy-1.0.4.tar.gz
Algorithm Hash digest
SHA256 599b3cd7aa031e603fef7370982fbea71081589e1457f1df01b9763cd2d9a16f
MD5 e17613460d5969ea9a15fe60da1cb211
BLAKE2b-256 19ee35f05ea665605e90d721f8f414702e036e05db56171882724786121e0825

See more details on using hashes here.

File details

Details for the file itdpy-1.0.4-py3-none-any.whl.

File metadata

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

File hashes

Hashes for itdpy-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 792dab476c4510e222afafc77f7bfffabd325914af9c2c0c76f135ecd759b6e0
MD5 ec6d3adea0a9f5fc1e4cd355c457d5af
BLAKE2b-256 26288f76c97b5233037fc22dbea4e3fe82805f8a7e8c69b55b62c82a2a4dd2a1

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