Рубрики
Без рубрики

Создание настольного инструмента уведомлений для Linux с использованием python

Простой пост о том, как создавать настольные уведомители с помощью python.

Автор оригинала: Dushyant Rathore.

Что такое уведомление на рабочем столе ?

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

Зачем использовать уведомления на рабочем столе ?

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

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

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

Установка

Теперь, чтобы создать настольный уведомитель, вам нужно установить сторонний модуль Python, notify 2 .

Вы можете установить notify 2 с помощью простой команды pip:

pip install notify2

Пример – Крипто-уведомитель

Здесь мы собираемся создать инструмент уведомления , который отображает текущий курс биткоинов в INR.

Вся реализация инструмента уведомления была разделена на следующие этапы:

  1. Получение содержимого для отображения.
  2. Настройка уведомителя.
  3. Отображение содержимого в виде пузырька уведомлений.

Получение контента

Чтобы получить текущий курс биткоина в INR, мы можем соскрести его цену из Интернета. Здесь мы соскребем результат с помощью BeautifulSoup .

Структура страницы показана в следующем фрагменте:

Скриншот с 2017-08-27 11-57-51.png

Следующий фрагмент кода дает подробную информацию обо всем процессе очистки:

from bs4 import BeautifulSoup
import requests

def fetch_bitcoin():
  # URL to fetch the latest price in INR
    url = "https://www.coingecko.com/en/price_charts/bitcoin/inr"
    headers = {'User-Agent': 'Mozilla/5.0'}
    bitcoin_file = requests.get(url)
    
    # Forming the soup object
    soup = BeautifulSoup(bitcoin_file.text, "html.parser")

    bitcoin_li = []

  # Getting the necessary details from the page by observing the structure
    for table in soup.find_all("table", attrs={"class" : "table"}):
        for td in table.find_all("td"):
            bitcoin_li.append(td.text)

    del bitcoin_li[3:]
    # Removing unnecessary characters from the list items
    bitcoin_li = map(lambda s : s.strip(), bitcoin_li)
    return bitcoin_li

Здесь мы просто реализовали функцию, которая возвращает детали биткойна в INR в виде списка после очистки данного url .

Настройка уведомителя

Получив необходимую информацию для отображения, мы инициализируем инструмент уведомления. Следующий фрагмент кода объясняет этот процесс:

import notify2
import Rates

def notify():

    icon_path = "full path to the icon image"
    
    # Fetch the current bitcoin rate
    bitcoin = Rates.fetch_bitcoin()
    
    # initialise the d-bus connection
    notify2.init("Cryptocurrency rates notifier")
 
    # create Notification object
    n = notify2.Notification("Crypto Notifier", icon = ICON_PATH)
        
    # Set the urgency level
    n.set_urgency(notify2.URGENCY_NORMAL)
        
    # Set the timeout
    n.set_timeout(1000)

Давайте попробуем проанализировать код шаг за шагом:

  • Прежде чем мы сможем отправлять какие-либо уведомления, нам нужно инициализировать соединение D-Bus. D-Bus-это система шин сообщений, простой способ общения приложений друг с другом. Таким образом, соединение D-Bus для notify2 в текущем скрипте Python инициализируется с помощью:
notify2.init("Cryptocurrency rates notifier")
  • Теперь мы создаем объект уведомления с помощью:
n = notify2.Notification("Crypto Notifier", icon = icon_path)

Общая структура объекта уведомления такова:

notify2.Notification(summary, message='body text', icon='icon path')
  • Мы можем дополнительно установить уровень срочности уведомлений с помощью метода set_urgency:
n.set_urgency(notify2.URGENCY_NORMAL)

Другими доступными константами являются notify2.URGENCY_LOW и notify2.URGENCY_HIGH

  • Мы также можем установить продолжительность отображения с помощью утилиты timeout:
n.set_timeout(1000)

Отображение содержимого

После настройки уведомителя мы можем использовать его для отображения уведомлений пользователю. Следующий код дает краткий обзор этого:

result = ""
result = result + str(bitcoin[0]) + "  -  " + str(bitcoin[2].encode('utf-8')) + "\n"

# Update the content
n.update("Current Rates", result)

# Show the notification
n.show()

Давайте проанализируем код шаг за шагом:

  • На первом этапе мы в основном формируем содержимое для отображения с помощью списка, возвращаемого функцией fetch_bitcoin .
  • На следующем шаге мы обновим уведомитель необходимым содержимым.
  • Наконец, мы выводим уведомление с помощью утилиты n.show () .

Результатом всего процесса является:

Скриншот с 2017-08-27 12-05-41.png

Репозиторий Github для этого настольного приложения notifier: Crypto-Notifier .

Не стесняйтесь раскошеливаться, предлагать изменения или указывать на ошибки!

Надеюсь, вы нашли это полезным