چگونه با پایتون برای لینوکس ابزار اعلانات ایجاد کنیم؟ — راهنمای گامبهگام
اعلانات یا نوتیفیکیشن دسکتاپ چیست؟
واژه نوتیفیکیشن (Notification) به معنای اعلانات است و در دسکتاپ ابزاری است که رویدادهای خاص و مهم را به کاربران اعلان میکند. به بیانی دیگر، یک نرمافزار ساده است که پیام و اعلانات را در قالب پاپآپهای گرافیکی بر روی صفحه، نمایش میدهد.
چرا از نوتیفیکیشن استفاده میشود؟
نمایش اعلانات میتواند دلایل بسیاری داشته باشد، که از جمله آنها میتوان به انتشار یک بهروزرسانی جدید، نمایش یک پیام اضطراری، اتمام فرآیند چاپ یک فایل متنی، هشدار اتمام باتری و موارد دیگری از این دست اشاره کرد. برخی از این اعلانات در کادری همراه با صدای هشدار ظاهر میشوند تا نظر کاربر را به خود جلب کنند. این اعلانات میتوانند نیازمند یک واکنش سریع از سوی کاربر یا صرفاً جهت اطلاعرسانی وی باشند. بهتر است برخی از اعلانات را کاربر فوراً بخواند، اما بهترین مکانیسم برای آنها فقدان گزینهای برای واکنش سریع است؛ چرا که با یک کلیک اشتباه ممکن است اطلاعات یا هر چیز مهم دیگری در معرض خطر قرار گیرد.
روش نصب
برای ساخت نوتیفایر یا اعلان کننده برای لینوکس، ابتدا باید ماژول پایتون notify2 را نصب کنید. نصب این ماژول به سادگی و از طریق دستور pip که در زیر آمده، امکان پذیر است.
1pip install notify2
بهعنوانمثال میخواهیم یک نوتیفایری بسازیم که قیمت لحظهای ارز دیجیتال بیتکوین را نمایش دهد.
نحوه بهکارگیری این ابزار اعلانات طبق مراحل زیر است:
- محتویات جهت نمایش را بدست بیاوریم.
- نوتیفایر را ایجاد کنیم.
- محتویات را در قالب یک نوتیفیکیشن به نمایش بگذاریم.
پیدا کردن محتویات
برای اطلاع از ارزش فعلی بیت کوین در INR، میتوانیم قیمت لحظهای آن را از وبسایتهای مختلف تهیه کنیم. اکنون ما با استفاده از توابع BeautifulSoup، آن را از محتوای یک وبسایت پیدا میکنیم. ساختار و اطلاعات استخراجشده وبسایت در اسنیپت (snippet) زیر نمایش داده شده است.
برای مشاهده تصویر در ابعاد بزرگتر روی آن کلیک کنید.
1from bs4 import BeautifulSoup
2import requests
3
4def fetch_bitcoin():
5 # URL to fetch the latest price in INR
6 url = "https://www.coingecko.com/en/price_charts/bitcoin/inr"
7 headers = {'User-Agent': 'Mozilla/5.0'}
8 bitcoin_file = requests.get(url)
9
10 # Forming the soup object
11 soup = BeautifulSoup(bitcoin_file.text, "html.parser")
12
13 bitcoin_li = []
14
15 # Getting the necessary details from the page by observing the structure
16 for table in soup.find_all("table", attrs={"class" : "table"}):
17 for td in table.find_all("td"):
18 bitcoin_li.append(td.text)
19
20 del bitcoin_li[3:]
21 # Removing unnecessary characters from the list items
22 bitcoin_li = map(lambda s : s.strip(), bitcoin_li)
23 return bitcoin_li
در اینجا ما بهسادگی یک تابع را اجرا کردیم تا جزئیات بیتکوین در INR بهصورت یک لیست بهدست آید.
ایجاد نوتیفایر
پس از آنکه محتویات لازم برای نمایش را پیدا کردیم، باید به سراغ ایجاد یک ابزار نوتیفیکیشن برویم. کدهای مذکور در اسنیپت زیر، فرآیند ایجاد این ابزار را نشان میدهند.
1import notify2
2import Rates
3
4def notify():
5
6 icon_path = "full path to the icon image"
7
8 # Fetch the current bitcoin rate
9 bitcoin = Rates.fetch_bitcoin()
10
11 # initialise the d-bus connection
12 notify2.init("Cryptocurrency rates notifier")
13
14 # create Notification object
15 n = notify2.Notification("Crypto Notifier", icon = ICON_PATH)
16
17 # Set the urgency level
18 n.set_urgency(notify2.URGENCY_NORMAL)
19
20 # Set the timeout
21 n.set_timeout(1000)
بیایید کدها را مرحلهبهمرحله تجزیهوتحلیل کنیم:
- پیش از آنکه بتوانیم اعلانی ارسال کنیم، لازم است که یک ارتباط D-Bus ایجاد کنیم. D-Bus یک سیستم گذرگاهی پیام است که بهوسیله آن برنامهها بهسادگی با یکدیگر ارتباط برقرار میکنند. بنابراین، ارتباط D-Bus برای notify2 با استفاده از کد زیر در پایتون ایجاد خواهد شد.
1notify2.init("Cryptocurrency rates notifier")
- با استفاده از کد زیر شکل اعلان را ایجاد میکنیم.
1n = notify2.Notification("Crypto Notifier", icon = icon_path)
کد تنظیم ساختار کلی اعلان نیز بدین شکل است.
1notify2.Notification(summary, message='body text', icon='icon path')
- میتوانیم بهصورت اختیاری سطح ضرورت اعلانات را با استفاده از روش set_urgency تنظیم کنیم.
1n.set_urgency(notify2.URGENCY_NORMAL)
Constantهای دیگری که میتوانید استفاده کنید، notify2.URGENCY_LOW و notify2.URGENCY_HIGH هستند.
- همچنین میتوانیم مدتزمان نمایش را با استفاده از کد زیر زمانبندی کنیم.
1n.set_timeout(1000)
نمایش محتوا در قالب نوتیفیکیشن
با نصب نوتیفایر، میتوانیم اعلانات را در قالب نوتیفیکیشن به کاربر نشان دهیم. کدهای زیر نمونۀ مختصری از کدهای لازم جهت انجام این کار است.
1result = ""
2result = result + str(bitcoin[0]) + " - " + str(bitcoin[2].encode('utf-8')) + "\n"
3
4# Update the content
5n.update("Current Rates", result)
6
7# Show the notification
8n.show()
بیایید در این بخش هم کدها را مرحلهبهمرحله تجزیهوتحلیل کنیم.
- در مرحله اول، ما محتوای لازم برای نمایش را با استفاده از تابع fetch_bitcoin ایجاد میکنیم.
- در مرحله بعد، نوتیفایر را با محتوای موردنظر بهروز میکنیم.
- و در آخر، با استفاده از n.show() اعلان را به نمایش میگذاریم.
این هم نمونه نوتیفیکیشن
مخزن نرمافزاری گیتهاب برای نرمافزار نوتیفایر دسکتاپ: Crypto-Notifier
اگر مطلب بالا برای شما مفید بوده است و تمایل دارید در رابطه با مباحث آن مطالعه بیشتری داشته باشید، شاید آموزشهایی که در زیر آمدهاند برایتان مفید باشند.
^^
سلام
می شود با یک مثال ساده تر اموزش بدهید؟
من خوب درک نکردم. مثلا ارسال یک نوتیکیفیشن ساده برای ویندوز.
با تشکر