An open API service indexing awesome lists of open source software.

https://github.com/firedotguy/itd-sdk

ITD client for python
https://github.com/firedotguy/itd-sdk

Last synced: 3 months ago
JSON representation

ITD client for python

Awesome Lists containing this project

README

          

# itd-sdk
Клиент ITD для python
Документация (beta): https://firedotguy.github.io/itd-sdk

## Установка

```bash
pip install itd-sdk
```

## Пример

```python
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`. Как их получить:

1. Откройте [итд.com](https://xn--d1ah4a.com) в браузере
2. Откройте DevTools (F12)
3. Перейдите на вкладку **Network**
4. Обновите страницу
5. Найдите запрос к `/auth/refresh`
6. Скопируйте значение **Cookie** из Request Headers
> Пример: `refresh_token=123123A67BCdEfGG; is_auth=1`
> В cookies также могут присутствовать значения типа `__ddgX__` (DDoS-Guard cookies) или `_ym_XXXX` (`X` - любое число или буква). Они необязательные и их наличие не влияет на результат

![cookie](cookie-screen.png)

---
### Скрипт на обновление имени
Этот код сейчас работает на @itd_sdk (обновляется имя и пост)
```python
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)
```

### Скрипт на смену баннера
```python
from itd import ITDClient

c = ITDClient(None, 'Ваши cookies')

c.update_banner('имя-файла.png')
print('баннер обновлен')

```

### Встроенные запросы
Существуют встроенные эндпоинты для комментариев, хэштэгов, уведомлений, постов, репортов, поиска, пользователей, итд.
```python
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.
```python
from itd import ITDClient
from itd.utils import parse_html

с = ITDClient(cookies='refresh_token=123')

print(с.create_post(*parse_html('значит, я это щас отправил со своего клиента, воот. И еще тут спаны написаны через html, по типу < i > 11')))
```
Поддерживаемые теги:
- ``: жирный
- ``: курсивный
- ``: зачеркнутый
- ``: подчеркнутый
- ``: код
- ``: спойлер
- ``: ссылка
- ``: цитата

### Кастомные запросы

```python
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"). Пример кода на новой версии:
```python
# первым аргументом сразу реверш токен, без "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](./LICENSE)
Идея (и часть эндпоинтов): https://github.com/FriceKa/ITD-SDK-js
- По сути этот проект является реворком, просто на другом языке

Автор: [itd_sdk](https://xn--d1ah4a.com/@itd_sdk) (в итд) [@desicars](https://t.me/desicars) (в тг)