Скриншотер ИТД.
Пример готового скриншота
uv tool install itdshotСкриншоты делаются в Chromium через Playwright, его нужно скачать один раз:
playwright install chromiumВ будущем будет добавлена поддержка .exe (через pyinstaller).
itdshot [ссылка на пост или id]При первом запуске itd-sdk предложит войти: по почте и паролю (капча решится сама в окне браузера Camoufox) или по QR-коду. Сессия сохраняется, дальше вход автоматический. Перед первым входом скачайте браузер для капчи:
camoufox fetchЭто отдельная сессия: не используйте refresh-токен из браузера — он одноразовый, и если им пользуются и браузер, и скрипт, сервер отзывает сессию (разлогинивает).
Без интерактивного ввода (например, на сервере) можно задать переменные окружения
itd-sdk: ITD_AUTH_METHOD=login, ITD_LOGIN, ITD_PASSWORD.
Если в посте (или в репостнутом посте) есть видео, на выходе будет GIF:
видео накладывается на скриншот поста кадр за кадром. Для этого нужен ffmpeg —
он ставится вместе с пакетом imageio-ffmpeg, отдельно устанавливать не нужно.
Опции:
-d / --no-dark— тёмная или светлая тема (по умолчанию тёмная)-w / --width— ширина поста в пикселях (по умолчанию 650, как на сайте)-s / --scale— масштаб (2 — картинка в два раза чётче), по умолчанию 1--static— сохранить PNG, даже если в посте есть видео--fps— частота кадров GIF (по умолчанию 20)--max-duration— максимальная длина GIF в секундах (по умолчанию 10)--offline— не проверять сайт, взять встроенные классы и стили
Поддерживаются посты-тетрадки (клетка и линейка), замазка корректором и правки красной ручкой — как на сайте, пока они не истекли.
Сайт собран через vite + CSS modules, поэтому после каждого обновления ИТД
хешированные имена классов меняются. itdshot определяет их сам: при запуске
смотрит, какой бандл сейчас на сайте, и если он новый — скачивает его и находит
нужные CSS-модули по их ключам (postInner, originalPostMedia и т.д.), которые
от сборки к сборке не меняются. Результат кешируется в ~/.cache/itdshot/site,
так что после обновления сайта это происходит один раз.
Если сайт недоступен или бандл поменялся слишком сильно, используются встроенные
itdshot/templates/site.css и itdshot/templates/classes.json (флаг --offline
включает их принудительно). Обновить встроенные файлы:
python scripts/update_site.py- Посты
- Вложения
- Фото
- Видео (GIF)
- Форматирование текста
- Тетрадка
- Корректор и красная ручка
- Опросы
- Оригинальный пост
- Вложения
- Несколько постов
- Вложения
- Пользователи
- Комментарии
- Ответы
- Вложения
- Фото
- Видео
- Голосовые
