# rimpac_gif_creator Локальная Windows-утилита для записи выделенной области экрана в маленький GIF через вложенный `ffmpeg.exe`. ## Запуск 1. Один раз установите локальный FFmpeg, если `vendor/ffmpeg/ffmpeg.exe` отсутствует: ```powershell powershell -ExecutionPolicy Bypass -File .\tools\install_ffmpeg.ps1 ``` 2. Установите локальный Gifsicle для дополнительного сжатия, если `vendor/gifsicle/gifsicle.exe` отсутствует: ```powershell powershell -ExecutionPolicy Bypass -File .\tools\install_gifsicle.ps1 ``` 3. Запустите приложение двойным кликом по `rimpac_gif_creator.vbs`. `run.bat` оставлен как технический запуск с консолью, если нужно увидеть ошибки. ## Тесты Быстрый набор unit/integrity-тестов запускается без дополнительных зависимостей: ```powershell python -m unittest discover -s tests -v ``` Тесты проверяют логику версий и обновлений, утилиты сборки GIF, кастомный установщик, Stream Deck-плагин, тёмный логотип, а также то, что публичный release-payload не содержит исходники приложения и установщика. ## Установка и обновления Для продуктовой сборки используется кастомный русский GUI-инсталлятор: ```powershell powershell -ExecutionPolicy Bypass -File .\tools\build_custom_installer.ps1 -PublicRepoUrl "https://git.safe-cap.com/RIMPAC/Gif_Generator_Releases.git" ``` Скрипт готовит приватную промежуточную папку `build/package/rimpac_gif_creator`, компилирует `app.py` и `updater.py` в `app.pyc` / `updater.pyc`, собирает публичный `build/release_repo` без `.py` исходников приложения, а затем упаковывает этот payload внутрь одного `build/installer/RIMPAC_GIF_Creator_Setup.exe` через PyInstaller. Инсталлятор на русском языке, по умолчанию ставит программу в `C:\RIMPAC\GIF Creator`, создаёт ярлык `RIMPAC GIF Creator` на рабочем столе и использует иконку из `assets/rimpac_gif_creator.ico`. Это один `RIMPAC_GIF_Creator_Setup.exe`: `ffmpeg.exe`, `ffprobe.exe`, `gifsicle.exe` и release-payload кладутся внутрь установщика заранее, без видимых командных строк, UAC-запросов и загрузок после установки. В главном окне установщика есть явная галка Stream Deck с объяснением: если у пользователя есть Stream Deck, инсталлятор дополнительно ставит плагин в `%APPDATA%\Elgato\StreamDeck\Plugins`; если галочку не ставить, устанавливается только программа и ярлык. В папку установки также кладётся `Uninstall.exe`. Установщик регистрирует удаление в Windows для текущего пользователя, поэтому программу можно удалить через `Приложения и компоненты` или прямым запуском `C:\RIMPAC\GIF Creator\Uninstall.exe`. Удалятор убирает папку программы, ярлык с рабочего стола, запись удаления Windows и, по галочке, Stream Deck-плагин. Текущая версия release-пакета: `beta 0.1`. Версия хранится в `version.json` и поднимается только вручную перед выпуском новой версии. Кнопка `Проверить обновления` запускает `updater.pyc`: он делает `git fetch`, читает `version.json` из установленной программы и из `origin/main`, а затем обновляется только если в публичном релизном репозитории версия новее и канал совпадает. Если версия такая же, новый коммит в релизном git не будет устанавливаться автоматически. При наличии новой версии updater закрывает программу, выполняет `git pull --ff-only`, обновляет зависимости из `requirements.txt` и запускает программу снова. За счёт git скачиваются только изменившиеся объекты, а не весь проект архивом. Публичный URL обновлений хранится в `update_config.json`: `https://git.safe-cap.com/RIMPAC/Gif_Generator_Releases.git`. В этом репозитории должны лежать только release-файлы (`*.pyc`, конфиги, иконки, launcher-скрипты), без `app.py` и `updater.py`. ## Управление - Зажмите левую кнопку мыши и выделите прямоугольник. - До начала записи можно тянуть рамку за края/углы, чтобы изменить размер, или за центр, чтобы перенести всю область. - На панели рамки кнопка `Папка` открывает `generated`, кнопка `Очист.` удаляет все GIF из этой папки. - Нажмите красный круг, чтобы начать запись. - Во время записи красный круг становится квадратом, а рамка светится красным. - Во время записи большой оверлей скрывается: остаются только тонкая красная рамка и маленькая панель, а клики за их пределами проходят в игру/систему. - Нажмите красный квадрат, чтобы остановить запись. - Нажмите крестик на панели, чтобы отменить и закрыть приложение. - После записи у выбранной рамки появится предпросмотр: двумя ползунками можно обрезать начало и конец. - При движении конечного ползунка предпросмотр сразу показывает последний кадр выбранного диапазона. - На экране предпросмотра или прогресса `Escape` отменяет операцию и удаляет временные файлы. - Нажмите `Создать GIF`. - После нажатия `Создать GIF` окно предпросмотра заменяется экраном прогресса там, где была выбранная рамка. - После сборки в этом же окне показывается итоговый размер GIF и статус копирования в буфер. - После успешной сборки это же окно остается открытым, пока вы не закроете его крестиком или `Escape`. - После галочки GIF уже лежит в буфере обмена как файл и сохраняется в `generated`. - Кнопки `Папка GIF` / `Папка` открывают `generated`, кнопки `Очистить` / `Очист.` удаляют все GIF из этой папки. GIF создается с частотой 12 кадров/с, шириной до 640 px, ограниченной палитрой и финальной оптимизацией через локальный `gifsicle`. Бинарники `ffmpeg.exe`, `ffprobe.exe` и `gifsicle.exe` не хранятся в git, чтобы репозиторий не раздувался. Их можно восстановить скриптами из `tools`. При запуске приложение автоматически открывает оверлей на том мониторе, где сейчас находится курсор. Захват кадров выполняется через `mss`, чтобы корректно работать с несколькими мониторами. ## Stream Deck Плагин лежит в `streamdeck/com.rimpac.gif-creator.sdPlugin` и установлен в: ```text C:\Users\User\AppData\Roaming\Elgato\StreamDeck\Plugins\com.rimpac.gif-creator.sdPlugin ``` В Stream Deck ищите категорию `RIMPAC` и кнопку `GIF Creator`. Если кнопка не появилась сразу, перезапустите приложение Stream Deck.