Фоновый инструмент для macOS: следит за появлением новых скриншотов в заданной папке и обрабатывает их (логика в watcher.py). Скрипт запускается автоматически при входе пользователя в систему через launchd (LaunchAgent).
- Скрипты запускаются выполняя свою задачу
- Настроен LaunchAgent для автозапуска
- Watcher.py реализован и функционален
- Ведутся логи
- Настроены нативные macos уведомления
musceler/
├─ scrn/ # локальная папка, куда macOS кладёт скриншоты
├─ scripts/ # все .py-скрипты
│ ├─ musceler.py
│ ├─ send_last_screenshot.py
│ ├─ notification.py
│ └─ watcher.py
├─ logs/ # все логи
│ ├─ musceler.log
│ ├─ musceler.err.log
├─ assets/ # ресурсы (звуки, шаблоны и т.д.)
│ └─ notify.aiff # (когда добавим звук)
└─ ... # потом сюда же добавим .git, README.md и прочее
Aккуратно всё поднимает и пишет логи. ~/Library/LaunchAgents/watcher.plist
Cледит за новыми скриншотами.
- работает как демон/долгоживущий процесс
- отслеживает новые скриншоты в целевой директории (например, scrn/)
- пишет информацию о своей работе в логи (stdout и stderr).
Забирает последний скриншот, шлёт его через musceler.py и кладёт ссылку в буфер.
- находит самый свежий PNG‑файл в папке scrn/ внутри проекта
- запускает musceler.py как отдельный процесс, передавая ему путь к этому файлу
- парсит вывод musceler.py, вытаскивая строку с готовым URL ( Готово. URL: ...)
- копирует полученный URL в буфер обмена через pbcopy (macOS)
- печатает в консоль:
- какой скриншот был выбран какой URL получился
- сообщение о том, что ссылка скопирована в буфер обмена.
Нумерует и заливает файл на сервер, возвращая готовый URL
- по SSH получает список файлов в удалённой директории /var/www/hhrrr.ru/musceler
- находит максимальный номер в именах формата scrn-00001.png, scrn-12345.jpg и т.п.
- вычисляет следующее имя scrn-XXXXX.png
- копирует локальный файл на сервер через scp под этим именем
- выводит готовый публичный URL вида http://hhrrr.ru/musceler/scrn-XXXXX.png.
Показывает системное уведомление о загруженном скриншоте.
- извлекает номер скрина из URL (scrn-00025.png → 00025)
- формирует текст HHRRRru!!1 Скриншот %НОМЕР% на сервере!
- показывает нативное macOS‑уведомление через terminal-notifier
- по клику по уведомлению открывает скриншот в браузере по умолчанию.
musceler.log — стандартный вывод (stdout) watcher.py musceler.err.log — стандартный поток ошибок (stderr) watcher.py.
– Успешное завершение операции notify.mp3 – Ошибка сервера …
#project