Последние пару лет я работал над программными проектами, чтобы улучшить свою жизнь. Они были маленькими и большими и по большей части напоминали мне об автоматизации задач XKCD. Вполне возможно, что общая сумма, потраченная на это, на самом деле не компенсировала сэкономленное время. Однако я повеселился и многому научился, поэтому подумал, что могу поделиться некоторыми уроками и идеями, полученными в процессе.

Три гиганта

Я думаю, что в основном автоматизация состоит из действий и команд. Оба являются небольшими пакетами логики, которые выполняются, когда они мне нужны. Действие - это логика, которая выполняется на регулярной основе. Он будет работать в фоновом режиме без каких-либо усилий с моей стороны. Команда - это логика, которая запускается, когда я этого хочу. Для обоих я создал программный проект. Зевс, бог порядка, обрабатывает действия и каждые 15 минут определяет, какие действия выполнять, и запускает их. Арес, чат-бот, обрабатывает команды за меня. Zeus находится на моем сервере, который находится под столом в моей квартире. Этот сервер называется Samaritan, и, кроме Zeus, на нем размещается еще какое-то программное обеспечение.

Зевс

Есть много небольших задач, которые я хочу запускать каждые 15 минут. Он очень похож на cron, службу Linux, которая запускает команды каждые x минут / часов / дней. Я подумал о его использовании, однако у меня есть некоторые специфические функции, которые я добавил поверх cron, чтобы облегчить мне работу. Когда что-то ломается, я хочу знать. Задача, которая может быть нарушена, может быть важной, и я не так часто просматриваю свои журналы, поэтому, когда задача не выполняется, Zeus уведомит меня в Telegram, популярной службе обмена сообщениями, о том, что что-то не так. Однако получение сообщений каждый раз, когда что-то ломается, перегружает вас сообщениями. Есть 2 основных способа решения этой проблемы с перегрузкой сообщений. Во-первых, он начнет отправлять мне сообщения только после 4-й ошибки подряд. Иногда служба не работает на полчаса или просто случайно выходит из строя. Мне не нужно знать о вещах, которые разрешатся автоматически. Во-вторых, если задача действительно не работает, я могу работать над другими вещами, у меня нет времени на ее исправление или это недостаточно важно. Поэтому я хочу проводить акцию реже. Для этого у каждого действия есть связанное свойство с именем NextRunTime. Если действие завершается неудачно, следующим временем выполнения будет текущее время плюс два, умноженное на количество ошибок в минутах. Для третьей ошибки это будет 2³ = 8 минут после текущего времени. Однако, поскольку мы запускаем Zeus каждые 15 минут, он не исключит его при следующем запуске. Только после четвертой ошибки (2⁴ = 16 минут) он начнет исключать действие. После 11 сбоев это приведет к тому, что задача будет отложена более чем на целый день. Еще одна интересная вещь заключается в том, что мы можем злоупотребить этим для реализации планирования. Если действие требует значительных ресурсов и не сильно меняет, действие также может установить для него собственное значение NextRunTime на следующей неделе, а не через 15 минут.

Арес

Арес - чат-бот Telegram, который я использую для управления большей частью построенных мною систем. Ares состоит из команд, каждая из которых имеет собственное ключевое слово. Например, самая простая команда - \ping, которая сообщает мне, работает ли бот. Предыдущую версию можно найти здесь. Я недавно перестроил его с нуля, чтобы использовать бот-фреймворк Microsoft. Это позволяет мне быстро писать и реализовывать новые команды. Он работает в облаке, поэтому всегда в сети. Оба этих проекта в значительной степени используют ApiLibs, библиотеку, которую я написал, которая используется для связи с любой используемой мной службой, имеющей API. В Telegram с ним можно поговорить через @Laurentia_Bot.

Самаритянский API

Мне нужно место для размещения программного обеспечения, которое я использую все время. Для этого у меня есть сервер под названием Samaritan, в честь ИИ из сериала Person Of Interest, на котором размещено все. Однако иногда мне хочется выполнять действия на этом сервере либо с Ареса, либо с Зевса, либо со своего телефона. Для этого я создал REST-API для Samaritan. Это, в свою очередь, может связываться с программным обеспечением или изменять файлы конфигурации на сервере.

В оставшейся части статьи я расскажу обо всем, что я построил на основе этих проектов, и о многом другом. Эти разделы не зависят друг от друга, поэтому вы можете читать их в произвольном порядке или пропускать некоторые.

видео

Я смотрю много видео и, о боже, создал ли я много программного обеспечения, которое так или иначе подключается к этому. Ниже я подробнее расскажу об этом.

Plex

Plex - один из главных программных продуктов в моей жизни. Plex - это медиа-сервер, работающий на Samaritan. Это способ хранить все ваши (видео) файлы и делать их доступными через Интернет. Это позволяет мне смотреть все, где бы я ни находился, а также не требует, чтобы жесткий диск моего ноутбука был заполнен файлами. Еще одно преимущество - он пытается автоматически находить для меня субтитры.

Еще одним преимуществом Plex является то, что он имеет интеграцию с Trakt, веб-сайтом, на котором вы можете отслеживать то, что видели. Это позволяет мне определить, что я провел около 184 дней, 7 часов и 13 минут своей жизни за просмотром телешоу.

Добавление видео

Многие спрашивали меня, могу ли я скачать для них видео. Однако обычно на это требовалось время. Кроме того, я хотел дать людям, которым я доверяю, возможность загружать материалы на мой сервер без необходимости делать что-либо (я ленив). Чтобы упростить задачу, я дал Аресу возможность скачивать видео. Сначала кто-то просит Ареса что-то скачать. Это заставит Ареса активировать функцию Azure, работающую в Америке. Чтобы убедиться, что они находят правильное видео, я прошу 6 источников предоставить мне результаты. Затем мы сортируем каждый ответ и возвращаем лучший результат Аресу.

Затем пользователь может выбрать и выбрать видео, которое он хочет загрузить. После этого Арес связывается с SamaritanApi и просит его загрузить.

Скачивание файлов

Иногда вам может понадобиться взять эти файлы с собой. Возможно, вы собираетесь в место, где нет Wi-Fi, или вам нужно убедиться, что воспроизводится видео. Plex хорош, но для потоковой передачи в 1080p вам необходимо подключение к Интернету, способное обрабатывать 8 Мбит / с, что слишком много для многих мест. Поэтому мне нужен был способ скачивать шоу. Я реализовал это так: я использую Ареса для выбора файла, который хочу загрузить, и создания ссылки для загрузки. Затем, используя SamaritanApi, я загружаю файл прямо с сервера. Используя некоторую магию, я также добавляю код сзади, чтобы сохранить его в некоторой степени безопасным, чтобы не у всех был легкий доступ к файлам на моем сервере.

Удаление медиа

Теперь я ленивый. Я не хочу однажды просыпаться и осознавать, что весь мой жесткий диск заполнен, и мне нужно потратить время на удаление видео. Чтобы решить эту проблему, я веду список всего, что было загружено, и когда они должны быть удалены. По умолчанию это время составляет 2 года. Есть 3 способа изменить дату. Первое довольно просто. Я веду список всех видео, которые были загружены автоматически. Они будут удалены через 3 месяца в будущем. После некоторого тестирования я понял, что в 99% из них я либо смотрел их, либо, вероятно, никогда не буду смотреть. Второй способ заключается в том, что при загрузке шоу от Ареса я спрашиваю вас, как долго должен оставаться торрент, и если вы ответите на это, я буду придерживаться этого времени. Наконец, я могу искать и изменять даты удаления в Аресе. Это позволяет мне искать выбросы и удалять все, что я видел.

Wallsetter

Один из самых красивых примеров моего собственного кода - Wallsetter. Это небольшое приложение, которое я создал для установки нового экрана блокировки и обоев каждые два часа. Он получает новые изображения с Unsplash, замечательного веб-сайта, на котором можно найти бесплатные изображения. Затем Wallsetter может применять к нему всевозможные эффекты.

Приятно то, что для экрана блокировки то, что он может проверить мой Trakt и посмотреть, какое телешоу выходит сегодня в эфир или есть ли какие-то передачи со вчерашнего дня, которые я еще не смотрел. Затем он захватит изображение этого шоу и установит его в качестве экрана блокировки или обоев.

Однако в настоящее время это не моя установка. Я использую ее для загрузки изображения, установки его в качестве обоев и установки его черно-белой версии в качестве изображения на экране блокировки. Он великолепен, и я очень им доволен.

Spotify

Spotify - действительно хороший сервис для прослушивания любимой музыки. Однако, поскольку я использую его много, я обнаружил несколько мелких проблем, которые я могу решить с помощью автоматизации.

Сортировать по громкости

Чтобы помочь вам в поиске новой музыки, Spotify представляет вам два автоматически сгенерированных персонализированных списка воспроизведения. Плейлист Discover Weekly с новой музыкой от новых исполнителей и плейлист Release Radar, содержащий музыку, выпущенную на этой неделе. Оба очень хороши, но у них есть одна проблема: они перескакивают с очень громкой энергичной музыки на мирную фортепианную музыку. Это очень неприятно, если вы слушаете. Чтобы решить эту проблему, Zeus получает все песни из плейлиста и особенности песен. Эти функции предоставляются Spotify и содержат такие вещи, как энергия, танцевальность, живость и громкость. Я упорядочиваю все песни по громкости и помещаю их в новый для себя плейлист. Таким образом, я могу слушать свою музыку от очень громкой до очень умиротворенной.

Плейлист

Когда у вас есть особенности песен, вы можете думать шире. Spotify может извлекать функции из всей моей сохраненной музыки. Отсюда вы можете создавать списки воспроизведения. Однако для этого вам нужно будет найти идеальные настройки, чтобы создать хороший список воспроизведения. Для этого я создал Playlister, универсальное приложение для Windows, которое позволяет мне играть со всеми функциями, которые вы видите справа от изображения ниже.

Используя Playlister, я создал плейлисты с названиями «Лето», «Зима», «Фортепиано» и «Энергия». Каждую неделю Zeus загружает все мои сохраненные песни из Spotify и пропускает их через каждый из точно настроенных фильтров для моих плейлистов, обновляет каждый новыми песнями, которые я добавил, и удаляет песни, которые мне больше не нравятся. Так что, если я хочу послушать музыку, которая меня возбуждает, я слушаю плейлист Energy, который состоит из песен, которые мне нравятся, которые после моих настроек можно считать полными энергии.

Последние 4 недели

Я провожу много времени на велосипедах и поездках. У меня также нет тарифного плана на передачу мобильных данных. Это приводит к тому, что мне нужен Spotify для загрузки большого количества музыки. Однако у меня также есть много новой музыки, которую я хочу привезти с собой. Я мог бы скачать всю свою музыку, но на моем телефоне недостаточно памяти для этого. Чтобы решить эту проблему, Zeus будет каждую ночь составлять плейлист с песнями, которые я добавил за последние 4 недели. Затем я говорю Spotify, чтобы этот плейлист всегда был загружен. Это приводит к почти всегда обновляемому плейлисту с моими новейшими песнями.

Случайные песни

В предыдущем абзаце я объяснил, что не могу загружать все песни на свой телефон. Тем не менее, я мог бы время от времени слушать случайную подборку музыки. Музыки нет ни в одном из моих автоматически сгенерированных списков воспроизведения или в каком-либо другом списке. Более того, даже если у меня есть Интернет, мне иногда кажется, что перемешивание не является полностью случайным. Чтобы решить эти проблемы, каждую ночь Zeus берет всю мою сохраненную музыку, выбирает 50 случайных песен и добавляет их в список воспроизведения, отсортированный по громкости, чтобы я всегда мог слушать какую-нибудь случайную музыку, которая мне нравится.

Радар полного выпуска

В Spotify есть функция под названием Release Radar, где каждую неделю вы можете слушать музыку, которая вышла на этой неделе. И новая музыка от исполнителей, которых вы, возможно, не слушаете. Это здорово, и я получил от него много новой музыки, однако в нем могут отсутствовать исполнители, которые мне нравятся, и если исполнитель выпустит целый альбом, он отобразит только один, который я определенно могу понять, но я не хотеть. Поэтому я создал экшен на Zeus, который каждую пятницу проверяет всех художников, за которыми я подписан. Если они выпустили какую-либо новую музыку на прошлой неделе, и это поместит песни в плейлист под названием «Радар полного выпуска», так что у меня есть этот обзор.

RSS

Я слежу за множеством источников. Многие из них поддерживают красивый протокол под названием RSS. Это позволяет в обычном формате получать обновления ваших любимых новостей. Используя это, я слежу за обновлениями на GitHub, Factorio, Todoist, обзорами телешоу и многим другим. Всего я отслеживаю 28 источников. Если есть новая статья, я помещаю ее в сервис Instapaper. Это онлайн-сервис, который я использую для отслеживания статей. Он разделяет статью до полного содержания, что облегчает ее чтение.

Продовольственные товары

Бакалея Покупки

Мне, как и всем остальным, нужно делать покупки. Мой любимый супермаркет, в котором я делаю покупки, называется Albert Heijn. Когда я иду за покупками, мне нужен список покупок. Для списка покупок я использую старую службу задач под названием Wunderlist. Нет особой причины для его использования, за исключением того, что я использую его для этого некоторое время, и мне это нравится. Есть три способа создания списка покупок. Самый нормальный способ - просто добавить новые товары в список покупок (4).

Далее идет список запуска (2). Это список, созданный на основе методологии Getting Things Done, в котором содержатся элементы, которые могут иметь отношение к делу и запускать ваше мышление. В данном случае это список продуктов, которые я покупаю не часто, но которые нужны время от времени, например, туалетной бумаги. Это очень полезно, и я просматриваю их каждую неделю и каждый раз понимаю, что забыл что-то добавить в свой список покупок. Если мне что-то понадобится, я поставлю отметку. Затем Зевс снимает с него отметку и помещает в мой список покупок.

У Альберта Хейна также есть продукты с пометкой «бонус» (1), которые являются продуктами со скидкой. Вы можете получить их на их веб-сайте. Объединив это с набором продуктов, которые я, возможно, захочу купить, я получаю список продуктов, которые я хочу купить со скидкой. Я помещаю их в свой Wunderlist, и, как и в «Триггерный список», если мне нужен элемент, я помечу его как выполненный, и Зевс придет, снимет отметку с него и внесет в мой список покупок.

Наконец, у меня есть команда в Ares, которая позволяет мне получить рецепт Allerhande (3), веб-сайта Альберта Хейна, который содержит очень хорошие рецепты еды. Используя Ареса, я масштабирую количество людей, которые будут есть с нами, а затем помещаю эти продукты в список покупок.

Благодаря всем этим вещам я довольно хорошо представляю, что мне нужно купить, когда иду в супермаркет и ничего не забуду.

Разделение расходов

Часто я иду по магазинам и плачу за соседей по комнате (обычная еда, моющие средства и т. Д.) Или друзьям (ужин, подарки и т. Д.). Для сбалансированности мы используем сервис под названием WieBetaaltWat. Эта услуга позволяет вам добавлять расходы в общую бухгалтерскую книгу, а затем через некоторое время урегулировать ее. Это очень полезно, так как никогда не бывает хлопот, кто будет платить, так как в конце концов все равно уравновесится.

Теперь Альберт Хейн хранит вещи, которые вы купили в последний раз. Zeus может извлечь этот список с помощью веб-скрейпинга, а затем отправит мне сообщение, когда будет обнаружен какой-то новый элемент. Затем я могу использовать Ареса, чтобы выбрать, какие вещи я купил для какой группы людей, и Арес автоматически добавляет это в нужную группу WieBetaaltWat. Это избавляет меня от лишних хлопот и позволяет моим друзьям видеть именно то, что я купил.

Система Todo

Я использую систему задач в повседневной жизни. Мне это не нужно, но это очень помогает мне не забывать о глупых вещах, которые я должен делать. В будущем мне бы хотелось иметь одну систему для всех моих задач. Идея заключалась в том, чтобы эта система функционировала для меня как обзор, чтобы я не навязывал один способ работы себе или другим людям. Сейчас я смотрю на Todoist, который сделает это за меня. Он невероятно мощный и очень важный, у него хороший API.

Синхронизация

Поскольку я хочу, чтобы Todoist был центром всех моих задач, мне нужно найти способ, которым соответствующие задачи будут там находиться. Вот почему я работал над синхронизацией между многими службами, которые я использую. Любая проблема, открытая на GitHub, теперь отображается в моей системе задач. То же самое и с GitLab. Кроме того, для любого электронного письма, которое вы отправляете мне, автоматически создается задача, которую мне нужно обработать в течение 2 недель, или она начнет напоминать мне. Это гарантирует, что я всегда в курсе.

Временные проекты

Как некоторые знают, каждую пятницу я стараюсь убирать в своей комнате. Это очень приятно, так как я вернусь в чистую комнату, и в течение недели мне не нужно думать о том, чтобы все было в чистоте, так как в пятницу я все равно уберу ее, и мне не нужно заставлять ее когда-нибудь во время неделя. Уборка, как и покупка продуктов, использует триггерный список. Могут быть вещи, которые мне не нужно убирать или делать прямо сейчас, но которые могут понадобиться в будущем. Кроме того, обычно бывает, что после уборки я иду домой к родителям. Поэтому не имеет смысла показывать эти задания, когда я нахожусь у родителей, поскольку у меня нет возможности их выполнить, и я не буду выполнять их в ближайшие несколько дней. Только в пятницу, когда все начнется заново. Это основная идея временных проектов, некоторые из которых появляются только в течение определенного промежутка времени в течение недели или дня, когда они актуальны. Он использует TaskPaper, упрощенный способ записи задач, для создания всех проектов, задач и времени видимости. Эти файлы конфигурации хранятся в моем OneDrive, поэтому я могу редактировать, удалять или добавлять любой новый список в любое время и в любом месте.

Идея на будущее может заключаться в том, чтобы позволить Аресу также переключать проекты для проектов, которые происходят более одного раза, но не в предсказуемом ритме.

Ежедневно Todo

После того, как я собрал все задачи в одном месте и у меня есть все, что нам нужно сделать в течение дня, нам нужно фактически выполнить некоторые из задач. Чтобы помочь мне в этом, я создал еще одно универсальное приложение для Windows под названием DailyTodo, которое помогает мне выбирать задачи, которые я хочу выполнить в определенный день. Я могу искать их, фильтровать по проектам или лейблам. Как только я выберу задачу, она добавит к ней метку @today. Это говорит моей системе, что я хочу выполнить эту задачу сегодня. Затем он также сделает уведомление в моем центре действий Windows и заставит его оставаться наверху. Поэтому, если в какой-то момент дня мне интересно, что мне делать, я могу просто открыть его и быстро выбрать свое следующее задание. Как вы также можете видеть на изображениях ниже, с помощью этих уведомлений я также могу быстро завершить или удалить их из своего рабочего дня.

Далее, есть еще два лейбла, которые помогут мне с этой системой. Если я готовлюсь к следующему дню или найду что-то, чем хочу заняться завтра, я могу присвоить этому ярлык @tomorrow. Каждую ночь в 12 Zeus будет менять все задачи с @tomorrow на @today. Каждое утро начинать с чистого листа. Все задачи с меткой @today будут изменены на @yesterday. Возможно, задачи, которые были важны вчера, больше не важны сегодня, но я должен решить, что вручную, и @yesterday позволяет мне отслеживать эти задачи.

Перспективы

Все мои друзья знают, что я отправляю приглашения на каждый ужин, встречу или встречу. Я обнаружил, что это позволяет каждому иметь одну и ту же основную истину, и тогда не может быть никаких сомнений при проведении собрания. Так что я делаю их много. Недавно я сделал для этого команду телеграммы, чтобы я мог указать встречу естественным языком, а все остальное она сделает за меня.

Место проведения

В Outlook вы также можете сохранить, где живет человек. Когда у меня встреча у друзей, и их адрес есть в моей системе, мне нужно только написать имя человека в поле местоположения события, и Зевс добавит точный адрес этого человека.

Напоминание о дне рождения

Как и любой другой человек на этой планете, я плохо помню дни рождения. Чтобы не забыть купить подарки, я получаю напоминание за неделю до дня рождения человека, а затем в сам день, чтобы поздравить его с днем ​​рождения.

Прочитать архив

Я использую нулевой почтовый ящик, в результате чего я перемещаю электронное письмо, которое я заполнил или больше не имеет отношения к папке архива. Чтобы удалить эту небольшую вещь OCD, которая может быть непрочитанной электронной почты в этой папке, он просто помечает все в этой папке как прочитанное.

Регистрация в Wave

Чтобы поддерживать форму, я (стараюсь) плавать каждую неделю в студенческой ассоциации DSZ-Wave. Чтобы уметь плавать, нужно зарегистрироваться. Однако форма регистрации открывается только в тот же день, и я часто забываю зарегистрироваться, пока не стало слишком поздно. Так что мне нужно было перестроить это. Каждый день Зевс смотрит, какие практики плавания доступны. Затем он просматривает мой календарь и видит, есть ли в то же время событие под названием «Плавание». Если это так, он автоматически зачислит меня на эту практику. Эта проверка моего календаря особенно полезна в том случае, когда у меня есть другое время, в которое я обычно плавал бы. В этом случае я удаляю мероприятие заранее и не занимаю место тех, кто действительно хочет плавать.

GOT приглашения

Со второго года обучения в Делфте каждый четверг я и группа друзей собирались вместе, чтобы пообедать. С тех пор каждую неделю я отправляю приглашения с указанием даты и того, кто должен проводить эту неделю. Поскольку создание этого приглашения каждую неделю немного раздражает, и я иногда очень неловко забывал кого-то или использовал неправильный адрес электронной почты, я сделал это командой, которую могу запускать с Аресом.

TradFri Освещение

У меня в комнате 5 ламп подряд. В подарок эти фонари были модернизированы до умных лампочек TradFri. Это умное световое решение от IKEA. Конечно, я не мог упустить возможность автоматизировать с ее помощью некоторые приятные вещи.

Просыпаться

Просыпаться тяжело почти для всех в мире. Для меня тоже. Чтобы упростить задачу, я сделал так, что прямо перед тем, как мне нужно проснуться, Зевс начнет медленно включать свет. Когда через 15 минут у меня срабатывает будильник, я просыпаюсь с чуть более ярким светом.

Режим вечеринки

В разделе Spotify я рассказал о том, как получить энергию и громкость песни. Но это еще не все, что мы можем извлечь из песни. Вы также можете извлечь биты из данной песни. Это означает, что вы можете получить темп песни. С помощью Spotify мы также можем видеть, какая песня играет и где мы находимся в песне. Затем, связавшись с умными лампочками, мы можем переключать свет в такт песне. Прямо сейчас у меня есть шаблон, в котором не горит все свет, кроме одного. На следующем ударе свет погаснет, и загорится тот, что справа от него. Будет казаться, что свет идет слева направо. Это удивительно, и очень весело выставлять напоказ перед посетителями вашей комнаты.

Ночник

Давно пользуюсь программным обеспечением вроде F.lux, а в последнее время - встроенным Night Light из Windows. Помимо того, что он должен помочь вам лучше спать, кажется, что ночью он не обжигает глаза. Однако я понял, что этого не происходит с освещением в моей комнате. Так что я их заставил. Каждый день Зевс считает, когда садится солнце. Затем примерно через 40 минут он начнет затемнять свет до уровня, при котором он все еще будет достаточно ярким, чтобы видеть, но явно затемненным. Я обнаружил, что это действительно работает очень хорошо, так как будет ощущение, что солнце садится в комнату, что делает меня более сонной. Самое удивительное, что этот переход настолько медленный, что вы его не замечаете.

Это были основные моменты всей автоматизации, которую я использую. Надеюсь, они показались вам интересными или вдохновляющими, и вы решили сами их построить.

Большое спасибо Каро за вычитку. Если у вас есть какие-либо вопросы или вы хотите с ними связаться, не стесняйтесь делать это в Twitter или LinkedIn.