Рубрики

Настольный уведомитель в Python

В этой статье показано, как создать простое приложение Desktop Notifier с использованием Python.

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

Содержание уведомления

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

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

import requests

import xml.etree.ElementTree as ET

  
# адрес новостной ленты rss

RSS_FEED_URL = "http://www.hindustantimes.com/rss/topnews/rssfeed.xml"    

  

def loadRSS():

    «»»

    функция полезности для загрузки RSS-канала

    «»»

    # создать объект ответа на HTTP-запрос

    resp = requests.get(RSS_FEED_URL)

  

    # возврат содержимого ответа

    return resp.content

  

def parseXML(rss):

    «»»

    служебная функция для разбора формата XML

    «»»

    # создать корневой элемент дерева элементов

    root = ET.fromstring(rss)

  

    # создать пустой список для новостей

    newsitems = []

  

    # повторять новости

    for item in root.findall('./channel/item'):

        news = {}

  

        # итерировать дочерние элементы элемента

        for child in item:

  

            # специальная проверка содержимого объекта пространства имен: media

            if child.tag == '{http://search.yahoo.com/mrss/}content':

                news['media'] = child.attrib['url']

            else:

                news[child.tag] = child.text.encode('utf8')

        newsitems.append(news)

  

    # вернуть список новостей

    return newsitems

  

def topStories():

    «»»

    Основная функция для генерации и возврата новостей

    «»»

    # загрузить RSS канал

    rss = loadRSS()

  

    # parse XML

    newsitems = parseXML(rss)

    return newsitems

Это простой скрипт Python, который анализирует заголовки новостей, доступные в формате XML.

Примечание. Чтобы понять, как работает синтаксический анализ XML, обратитесь к этой статье: Анализ XML в Python.

Пример новости, сгенерированный приведенным выше скриптом Python, выглядит следующим образом:

{'description': 'Months after it was first reported, the feud between Dwayne Johnson and 
                 Vin Diesel continues to rage on, with a new report saying that the two are 
                 being kept apart during the promotions of The Fate of the Furious.',
 'link': 'http://www.hindustantimes.com/hollywood/vin-diesel-dwayne-johnson-feud-rages-
on-they-re-being-kept-apart-for-fast-8-tour/story-Bwl2Nx8gja9T15aMvcrcvL.html',
 'media': 'http://www.hindustantimes.com/rf/image_size_630x354/HT/p2/2017/04/01/Pictures
/_fbcbdc10-1697-11e7-9d7a-cd3db232b835.jpg',
 'pubDate': b'Sat, 01 Apr 2017 05:22:51 GMT ',
 'title': "Vin Diesel, Dwayne Johnson feud rages on; they're being deliberately kept apart"}

Сохраните этот скрипт Python как topnews.py (поскольку мы импортируем его под этим именем в наше приложение для уведомлений на рабочем столе).

сооружения

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

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

pip install notify2

Настольное приложение уведомлений

Теперь мы пишем скрипт Python для нашего настольного уведомителя.

Рассмотрим код ниже:

import time

import notify2

from topnews import topStories

  
# путь к значку окна уведомлений

ICON_PATH = "put full path to icon image here"

  
# получать новости

newsitems = topStories()

  
# инициализировать соединение по шине d-bus

notify2.init("News Notifier")

  
# создать объект уведомления

n = notify2.Notification(None, icon = ICON_PATH)

  
# установить уровень срочности
n.set_urgency(notify2.URGENCY_NORMAL)

  
# установить тайм-аут для уведомления

n.set_timeout(10000)

  

for newsitem in newsitems:

  

    # обновить данные уведомления для объекта Notification

    n.update(newsitem['title'], newsitem['description'])

  

    # показывать уведомление на экране

    n.show()

  

    # небольшая задержка между уведомлениями

    time.sleep(15)

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

  • Прежде чем мы сможем отправлять какие-либо уведомления, нам нужно инициализировать соединение D-Bus. D-Bus — это система шин сообщений, простой способ для приложений общаться друг с другом. Итак, соединение D-Bus для notify2 в текущем скрипте Python инициализируется с помощью:
    notify2.init("News Notifier")
    

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

  • Теперь мы создаем объект уведомления, п с помощью:
    n = notify2.Notification(None, icon = ICON_PATH)
    

    Общий синтаксис для вышеуказанного метода:

    notify2.Notification(summary, message='', icon='')
    

    Вот,

    • резюме: текст заголовка
    • сообщение: основной текст
    • значок: путь к изображению значка

    В настоящее время мы установили сводку как None и передали ICON_PATH в качестве аргумента значка .

    Примечание. Вам необходимо указать полный путь к значку изображения.

  • При желании вы можете установить уровень срочности уведомлений, используя метод set_urgency :
    n.set_urgency(notify2.URGENCY_NORMAL)
    

    Доступные константы:

    • notify2.URGENCY_LOW
    • notify2.URGENCY_NORMAL
    • notify2.URGENCY_CRITICAL
  • Другой необязательной утилитой является метод set_timeout, с помощью которого вы можете явно установить продолжительность отображения в миллисекундах, как показано ниже:
    n.set_timeout(10000)
    
  • Теперь, когда мы перебираем каждый элемент новостей один за другим, нам нужно обновить объект уведомления новыми сводками и сообщениями, используя метод обновления :
    n.update(newsitem['title'], newsitem['description'])
  • Для того , чтобы отобразить уведомление, просто вызовите шоу () метод объекта уведомления , как это:
    n.show()
    

Пример снимка экрана рабочего стола при запуске над скриптом Python:

Github-репозиторий для этого приложения для уведомлений на рабочем столе: Desktop-Notifier-Example

Этот блог предоставлен Нихилом Кумаром . Если вам нравится GeeksforGeeks и вы хотели бы внести свой вклад, вы также можете написать статью, используя contrib.geeksforgeeks.org, или отправить свою статью на электронный адрес contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

Рекомендуемые посты:

Настольный уведомитель в Python

0.00 (0%) 0 votes