Создайте фоновый менеджер рабочего стола с помощью Nodejs и Unsplash API.

Обзор

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

Было бы неплохо, если бы у нас был контроль над размером изображений (например, 1920x1080 и т. Д.) И типом изображений, которые помещаются на наш рабочий стол (например, кошки, собаки, природа, симпатичные девушки и т. д.). Кроме того, необходимо учитывать настраиваемые параметры временного интервала, в течение которого фоновые обои будут изменены, тип стратегии для хранения изображений и обслуживания хранилища изображений.

Для ресурсов изображений мы будем использовать Unsplash API, , который также используется нашим любимым Medium. Этот API прекрасен тем, что предлагает нам выдающийся набор высококачественных изображений, которые можно использовать бесплатно. Кроме того, он имеет интуитивно понятный и простой в использовании интерфейс.

Разработка

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

Мы сделаем это за пять шагов.

  1. Убедитесь, что папка для хранения существует.
  2. Очистить папку хранения.
  3. Скачайте новые обои.
  4. Установите его в качестве фона рабочего стола.
  5. Повторяйте с заданным интервалом.

Да, порядок шагов действительно имеет значение!

Убедитесь, что папка для хранения существует

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

Сделаем это с помощью встроенного модуля fs!

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

Очистить папку хранилища

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

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

Эту задачу также можно решить с помощью встроенного модуля fs.

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

Скачайте новые обои и установите их в качестве фона рабочего стола

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

Во-первых, нам нужно получить ссылку, по которой мы можем скачать обои.

Здесь в игру вступает Unsplash API. Мы будем использовать эту конечную точку https://source.unsplash.com/featured/ для сбора новых изображений с веб-сайта Unsplash.

С помощью HTTP-запроса GET и модуля fetch для Nodejs мы соберем новый URL-адрес обоев с этой конечной точки.

Во-вторых, давайте поищем механизм загрузки изображений Nodejs в Google. После быстрого поиска nodejs donwload image мы видим, что Google осуждает нас за допущенную нами опечатку. После исправления ошибки и повторного поиска мы находим модуль Node Image Downloader для загрузки изображений с заданного URL.

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

Параметр функции imageResolution определяет желаемое разрешение изображения, которое Unsplash API должен возвращать нам, тогда как параметр функции imageCategories сообщает API, какие изображения нам возвращать.

Эта функция является функцией async для использования механизма async / await для обработки обещаний JavaScript.

Хорошо, теперь, когда у нас все работает, давайте двигаться дальше.

Повторять с заданным интервалом

Последнее, что нам нужно сделать, - это повторять весь процесс снова и снова.

У нас есть два механизма, с помощью которых мы можем этого добиться:

Мы воспользуемся вторым подходом, потому что он обеспечивает более широкую функциональность и с ним код выглядит красивее.

Итак, наконец, мы просто объединяем одну за другой три функции, которые заботятся о логике нашего приложения.

Первый аргумент функции scheduleJob () представляет собой выражение cron, которое в основном определяет интервал, в течение которого функция будет выполняться.

В нашем случае выражение cron «0 * * * *» указывает на выполнение функции, предоставленной в качестве второго аргумента, каждый час.

Чтобы это работало, нам нужно убедиться, что функции на предыдущих шагах сделаны async.

Конечный результат

Приложение готово!

Единственное, что осталось сделать, - это объединить все части разработки вместе, но в этом нет необходимости, потому что я предоставлю вам исходный код ниже, а также на GitHub. .

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

Заключение

Ну вот! Вы только что узнали, как можно разработать собственный фоновый менеджер рабочего стола.

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

Учить больше