Відправляємо push-повідомлення на робочий стіл в Linux за допомогою Python


Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.

Десктопне повідомлення – це спливаюче на робочому столі повідомлення, яке оповіщає про яку-небудь подію.

Комп’ютер може прислати вам повідомлення по безлічі причин, не обов’язково пов’язаних з вашою поточною діяльністю: оновлення ПЗ, нове повідомлення в мессенджере, низький заряд батареї і багато що інше.

Найбільш відповідний варіант для повідомлень, які не потребують негайної реакції користувача, – це не інтерактивне спливаюче повідомлення.

Сьогодні ми створимо програму, яка присилатиме такі повідомлення.

Більше інформації про повідомлення в Linux можна знайти у документації Gnome і у документації Arch Linux.

Підготовка

Для відправки повідомлень нам знадобиться пакет для мови Python notify2, який можна встановити за допомогою команди pip install notify2.

Створюємо Crypto – Notifier

Давайте напишемо інструмент, який повідомлятиме поточний курс біткоіна до долара.

Увесь процес роботи програми можна розбити на три кроки:

  1. Збір даних для відображення.
  2. Ініціалізація інструменту відправки повідомлень.
  3. Відображення даних в спливаючому повідомленні.

Збір даних

Для отримання поточного курсу біткоіна до долара нам треба витягнути дані з CoinGecko. Оскільки цей сайт не надає API-інтерфейсу, нам необхідно отримати дані з чистого HTML. Ми зробимо це за допомогою бібліотеки BeautifulSoup.

Потрібні нам дані знаходяться в тегах

і

. Структура сторінки показана на скриншоті нижче:

Створимо файл з назвою rates.py і помістимо в нього наступний код:

from bs4 import BeautifulSoupimport requestsdef fetch_bitcoin (): # URL з актуальним курсом url = "https://www.coingecko.com/en/price_charts/bitcoin/usd" headers ={'User - Agent': 'Mozilla/5.0'} bitcoin_file = requests.get (url)  # Створюємо soup-об'єкт soup = BeautifulSoup (bitcoin_file.text, "html.parser") bitcoin_li =[] # Витягаємо необхідні дані з тегів for table in soup.find_all ("table", attrs={"class": "table table - responsive mt - 2"}): for td in table.find_all ("td"): bitcoin_li.append (td.text) del bitcoin_li[3:] # Прибираємо непотрібні символи з елементів списку
bitcoin_li = map (lambda s: s.strip (), bitcoin_li) return bitcoin_li

Тут ми визначили функцію, яка повертає деталі курсу у формі списку після витягання інформації по заданому url.

Ініціалізація інструменту відправки push- повідомлень

Після отримання необхідної для відображення інформації нам треба ініціалізувати інструмент відправки push-повідомлень, як показано нижче:

import notify2import ratesdef notify (): ICON_PATH= "повний шлях до іконки" # Отримуємо поточний курс bitcoin = rates.fetch_bitcoin () # Ініціалізували d - bus з'єднання notify2.init ("Cryptocurrency rates notifier")  # Створюємо Notification- об'єкт n = notify2.Notification ("Crypto Notifier", icon = ICON_PATH)  # Встановлюємо рівень терміновості n.set_urgency (notify2.URGENCY_NORMAL)
# Встановлюємо затримку n.set_timeout (1000)

Давайте пройдемося за кодом крок за кроком:

notify2.init ("Засіб повідомлення про курс криптовалют")

Потім ми створюємо об’єкт повідомлень :

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_CRITICAL.

Також ми можемо встановити затримку між відправкою повідомлень :

n.set_timeout (1000)

Відображення контенту

З ініціалізацією покінчено, займемося відображенням повідомлень. У фрагменті коду нижче показано, як це можна зробити:

result = '{0} - {1}'.format (*bitcoin)  # Оновлюваний вміст n.update ("Поточний курс", result)  # Показуємо уведомлениеn.show ()

Проаналізуємо код:

  1. Спочатку ми формуємо контент для відображення, використовуючи список, повернений функцією fetch_bitcoin.
  2. Потім ми передаємо цей контент нашому інструменту для відправки повідомлень.
  3. І нарешті ми показуємо повідомлення з допомогою n.show () .

Зрештою у нас повинно вийти щось подібне до цього:

Переклад статті “Building a desktop notification tool for Linux using Python”

Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Ехо © 2018
Актуальні новини та цікаві статті зі світу IT для програмістів і всіх, хто пов'язаний з розробкою програмного забезпечення.

Тема від WP Puzzle