. Структура сторінки показана на скриншоті нижче: 
Створимо файл з назвою 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 ()
Проаналізуємо код:
- Спочатку ми формуємо контент для відображення, використовуючи список, повернений функцією
fetch_bitcoin
. - Потім ми передаємо цей контент нашому інструменту для відправки повідомлень.
- І нарешті ми показуємо повідомлення з допомогою
n.show ()
.
Зрештою у нас повинно вийти щось подібне до цього:

Переклад статті “Building a desktop notification tool for Linux using Python”
Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?
Post Views: 1 168
➤