Здесь в Цешин, городе, который расположен одновременно в Польше и Чехии, я вспомнил, что когда-то давно на маке стояла софтина Selfie App: она каждый день с вебкамеры делала снимок после открытия крышки лаптопа. У меня несколько тысяч таких снимков накопилось, занятно потом наблюдать за ростом. Делать селфи каким-то аппом — это влом, а компьютером я точно пользуюсь каждый день. Идеальный инструмент для документации жизни и генерации ностальгических вздохов.
ИИ спешит на помощь! Я ни в чём не эксперт и мало что знаю об устройстве системных сообщений macOS, обратился к помощи ChatGPT и Claude. Вместе мы справились.
Сперва пришлось немного пошпионить на тему того, что система шлёт, когда открывается крышка лаптопа? Получил какие-то цифры, отправил в ИИ, мол, давай, друг, проанализируем. И тут вскрылось интересное: Claude отказывается общаться на тему автоматизированного фото через вебкамеру персонального компьютера из соображений безопасности. Прямым текстом говорит, мол, не буду, это не то, чему меня учили. это не очень безопасно. Я говорю, мне, мол, для студенческого проекта, очень прошу. «Нет, извини, брат, никак, я не такой», — отвечает Claude. А вот у ChatGPT, который под руководством Сэма Альтмана летит вперёд, не обращая внимания ни на что — не было с проблем со подсматриванием!
Мне такой расклад показался забавным — он показывает разницу в отношении к тому, что и зачем всё это. Даже на ранней стадии в более осторожную сетку вшиты стоп-краны. Впрочем, к делу.
Общий, процесс создания решения был такой:
- сперва я написал в курсорк скрипт на питоне, который выкручивает яркость экрана на максимум через 5 секунд после открытия крышки лаптопа, включает камеру и сохраняет картинку рядом.
- пришлось чуть повозиться с тем, что в системе установлено несколько камер (одна вебка, другая iPhone, третья виртуальная), но это уже мелочи и дебаггинг. Указал нужную по конкретному ID, вроде он постоянный, не должен меняться.
- оказалось, что событие именно о крышке отловить питон не может, только выход из режима “я сплю”. Пришлось (и это уже o1-preview уровень) искать альтернативные пути.
- Написал Swift-скрипт, который трекает сообщения. Попробовал выключать-включать лаптоп, крышку открывать — и смотреть, какие циферки прилетают. Оказалось, что существует таки отдельное событие на открытие, бинго!
- Сделал сервис .plist, который засел в LaunchAgents, и который запускает swift скрипт в фоновом режиме.
- Swift-код ловит событие и запускает код на Python.
- Картинки сохраняются в Dropbox – успех!
Весь процесс занял меньше получаса. Собрал заодно результат прошлых снэпшотов в один мини-ролик: что-то такое хочется получить через несколько лет. И склеить.
Традиционно, я пишу эти заметки, чтобы задокументировать для будущих поколений (не меньше!) скорость развития технологий. Год назад ни о чём таком нельзя было и мечтать: я, как человек деятельный, вечно дёргал своих программистов в Sliday, отвлекал их от важных долгосрочных разработок. Теперь сам пишу. С помощью новых инструментов.
P.S.: Веду канал ИИзвестия, куда публикую новости и результаты своих экспериментов.