用pynotify獲得Google日曆提醒
我使用Google日曆(Google Calendar)管理日程表,不過,我還急需一項功能,即在設定過提醒的約會到期時通知自己。
本文給出了一個完成這項功能的Python程式示例。該程式利用Google Data API的Python客戶端庫和pynotify。
下面會詳細給出程式碼,以便各位根據自己的需要加以修改。
首先,匯入GTK+和pynotify,並初始化pynotify。
import gtk
import pynotify
pynotify.init(sys.argv[0])
其次,匯入gdata Calendar API,連線到指定日曆。這裡使用簡單的email/密碼組合進行登入,這不是最佳做法,但卻是最簡單的。隨意使用OAuth 2.0。:-)
calendar_service = gdata.calendar.service.CalendarService()
calendar_service.email = 'mygooglelogin'
calendar_service.password = 'mygooglepassword'
calendar_service.ProgrammaticLogin()
接下來,準備請求日曆資訊並進行通知!首先,從預設日曆請求提取事件。
feed = calendar_service.GetCalendarEventFeed()
隨後,遍歷feed中的所有條目,執行各種檢查。
for event in feed.entry:
# If the event status is not confirmed, go to the next event.
if event.event_status.value != "CONFIRMED":
continue
# Now iterate over all the event dates (usually it has one)
for when in event.when:
# Parse start and end time
try:
start_time = datetime.datetime.strptime(when.start_time.split(".")[0], "%Y-%m-%dT%H:%M:%S")
end_time = datetime.datetime.strptime(when.end_time.split(".")[0], "%Y-%m-%dT%H:%M:%S")
except ValueError:
# ValueError happens on parsing error. Parsing errors
# usually happen for "all day" events since they have
# not time, but we do not care about this events.
continue
now = datetime.datetime.now()
# Check that the event hasn't already ended
if end_time > now:
# Check each alert
for reminder in when.reminder:
# We handle only reminders with method "alert"
# and whose start time minus the reminder delay has passed
if reminder.method == "alert" \
and start_time - datetime.timedelta(0, 60 * int(reminder.minutes)) < now:
# Build the notification
notification = pynotify.Notification(summary=event.title.text,
message=event.content.text)
# Set an icon from the GTK+ stock icons
notification.set_icon_from_pixbuf(gtk.Label().render_icon(gtk.STOCK_DIALOG_INFO,
gtk.ICON_SIZE_LARGE_TOOLBAR))
notification.set_timeout(0)
# Show the notification
notification.show()
執行這個程式,如果這時恰好有個約會發出提醒,你就會看到一個通知。
利用上述程式碼,足以做出點東西來。
不樂意用Python程式設計的話,不妨試試gcalcli。
特別說明:感謝大家積極參與【iTran樂譯】第3期!
相關文章
- Android日曆提醒軟體Android
- Win10如何刪除日曆提醒事件_win10刪除日曆提醒事件教程Win10事件
- 日曆管理和提醒工具:EzyCal for MacMac
- 任務日曆提醒工具:Doo for macMac
- TinyCal for mac(Google日曆軟體)啟用版MacGo
- Google日曆簡易版Go
- Mac日曆如何新增提醒事件的教程Mac事件
- Google日曆簡易版 2.0Go
- 選單欄日曆提醒工具:Calendar 366 II for MacMac
- 世界盃日曆提醒小卡片:快用Python程式語言來實現它Python
- Oracle用SQL列印日曆OracleSQL
- Google Calendar免費手機提醒功能試用Go
- 微軟對Win10 Mobile版《郵件和日曆》進行更新:增加節日提醒微軟Win10
- 用java實現日曆demo。Java
- BusyCal for Mac(日曆應用程式)Mac
- Java 周曆日曆Java
- 如何開啟Win10日曆應用_ win10日曆應用開啟教程Win10
- JS編寫日曆控制元件(支援單日曆 雙日曆 甚至多日曆等)JS控制元件
- 7款最佳安卓日曆應用安卓
- PHP獲取農曆、陽曆轉陰曆PHP
- 【SQL】日曆SQL
- 日曆2021年日曆表|2021年日曆表列印版 Excel版Excel
- 如何在Mac中使用佛教日曆,波斯日曆等Mac
- Win10日曆應用怎麼更換主題_Win10日曆應用如何更換背景Win10
- win10找不到日曆應用如何解決_win10日曆應用找不到解決教程Win10
- 根據兩個日期之間獲取LocalDate日曆列表LDA
- 日曆外掛
- 日曆計算
- 用PHP寫一個簡單的日曆PHP
- 用Java獲得當前效能資訊Java
- win10系統日曆在哪裡_win10系統怎麼開啟日曆應用Win10
- vue之實現日曆----顯示農曆,滾動日曆監聽年月改變Vue
- Win10 Mobile或PC版郵件和日曆獲更新Win10
- win10 日曆怎麼顯示農曆_win10日曆不顯示農曆怎麼辦Win10
- js手寫日曆JS
- java Calendar日曆類Java
- SQL查詢日曆SQL
- javascript日曆外掛JavaScript