ITD client for python
Project description
itd-sdk
Клиент ITD для python
Документация (beta): https://firedotguy.github.io/itd-sdk
Установка
pip install itd-sdk
Пример
from itd import ITDClient
c = ITDClient('TOKEN', 'refresh_token=...; __ddg1_=...; __ddgid_=...; is_auth=1; __ddg2_=...; ddg_last_challenge=...; __ddg8_=...; __ddg10_=...; __ddg9_=...')
# можно указать только токен, тогда после просрочки перестанет работать, либо только куки чтобы токен сразу подтянулся, либо оба сразу
print(c.get_me())
Получение cookies
Для получения access_token требуются cookies с refresh_token. Как их получить:
- Откройте итд.com в браузере
- Откройте DevTools (F12)
- Перейдите на вкладку Network
- Обновите страницу
- Найдите запрос к
/auth/refresh - Скопируйте значение Cookie из Request Headers
Пример:
refresh_token=123123A67BCdEfGG; is_auth=1
В cookies также могут присутствовать значения типа__ddgX__(DDoS-Guard cookies) или_ym_XXXX(X- любое число или буква). Они необязательные и их наличие не влияет на результат
Скрипт на обновление имени
Этот код сейчас работает на @itd_sdk (обновляется имя и пост)
from itd import ITDClient
from time import sleep
from random import randint
from datetime import datetime
from datetime import timezone
c = ITDClient(None, '...')
while True:
c.update_profile(display_name=f'PYTHON ITD SDK | Рандом: {randint(1, 100)} | {datetime.now().strftime("%m.%d %H:%M:%S")}')
# редактирование поста
# c.edit_post('82ea8a4f-a49e-485e-b0dc-94d7da9df990', f'рил ща {datetime.now(timezone.utc).isoformat(" ")} по UTC (обновляется каждую секунду)')
sleep(1)
Скрипт на смену баннера
from itd import ITDClient
c = ITDClient(None, 'Ваши cookies')
c.update_banner('имя-файла.png')
print('баннер обновлен')
Встроенные запросы
Существуют встроенные эндпоинты для комментариев, хэштэгов, уведомлений, постов, репортов, поиска, пользователей, итд.
c.get_user('ITD_API') # получение данных пользователя
c.get_me() # получение своих данных (me)
c.update_profile(display_name='22:26') # изменение данных профиля, например имя, био итд
c.create_post('тест1') # создание постов
# итд
Стилизация постов ("спаны")
С обновления 1.3.0 добавлена функция "спанов". Для парсинга пока поддерживается только html, но в будущем будет добавлен markdown.
from itd import ITDClient
from itd.utils import parse_html
с = ITDClient(cookies='refresh_token=123')
print(с.create_post(*parse_html('значит, я это щас отправил со своего клиента, <b>воот</b>. И еще тут спаны написаны через html, по типу < i > <i>11</i>')))
Поддерживаемые теги:
<b>: жирный<i>: курсивный<s>: зачеркнутый<u>: подчеркнутый<code>: код<spoiler>: спойлер<a href="https://google.com">: ссылка<q>: цитата
Кастомные запросы
from itd.request import fetch
fetch(c.token, 'метод', 'эндпоинт', {'данные': 'данные'})
Из методов поддерживается get, post, put итд, которые есть в requests
К названию эндпоинта добавляется домен итд и api, то есть в этом примере отпарвится https://xn--d1ah4a.com/api/эндпоинт.
[!NOTE]
xn--d1ah4a.com- punycode от "итд.com"
itd-sdk 2.0
Сейчас ведется разработка 2 версии sdk (ветка "v2"). Пример кода на новой версии:
# первым аргументом сразу реверш токен, без "refresh_token="
c = ITDClient('676767676767')
c.set_action_delay(10) # установить задержку между действиями # по умолчанию рекоммендованная задержка
# автопагинация постов
for post in c.stream_posts(delay=1):
post.like() # классы с методами
user = User('03442f74-a407-40ec-9723-f9b5bb2cca2e') # возможность писать UUID как str и пользучать данные через класс
user.follow()
for post in user.stream_posts(tab='like'): # возможность писать enum как str
post.add_comment('ахахаха')
post.comments # список загруженных сейчас
post.comments.load(10) # догрузить 10
post.comments.get(15) # догрузить 15 + вернуть все
post.comments.load_all() # догрузить все
post.comments.refresh() # перезагрузить все
post.comments.refresh(10) # удалить все и загрузить заново 10 последних
post.report('abuse')
Прочее
Лицезия: MIT
Идея (и часть эндпоинтов): https://github.com/FriceKa/ITD-SDK-js
- По сути этот проект является реворком, просто на другом языке
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file itd_sdk-1.8.0.tar.gz.
File metadata
- Download URL: itd_sdk-1.8.0.tar.gz
- Upload date:
- Size: 29.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3987a11d907c25cee0096b56c48bbdf7445a5cd216dfe122f74342b4a8e1ed5c
|
|
| MD5 |
4388d9a373d0d4a653547bfbe45d1cc1
|
|
| BLAKE2b-256 |
0746b3fb6864612164d9da341de8a2a5f658e15e4b371d3936ea636c673bf5d6
|
File details
Details for the file itd_sdk-1.8.0-py3-none-any.whl.
File metadata
- Download URL: itd_sdk-1.8.0-py3-none-any.whl
- Upload date:
- Size: 34.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe261ea66ad536e01af22366e6d58a51e94bef95414b6a27d1d8183e70e72e6a
|
|
| MD5 |
3661f91607fb1677d1b1608526e89436
|
|
| BLAKE2b-256 |
5ee24083487e614da8377ac0246674c6b386b97fefd66cdd15db7c6d2c9bd43b
|