gmail: count all unread messages
Widget now uses the Gmail unread tag to get a list of all unread messages, not only the Inbox. The auth argument was removed, and login information should now be placed directly in the widget (and file made read-only by user) until a safer storage is introduced.
This commit is contained in:
parent
5dac6a44fd
commit
f99a74b7c8
19
gmail.lua
19
gmail.lua
|
@ -10,22 +10,25 @@ local helpers = require("vicious.helpers")
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
|
|
||||||
-- Gmail: provides count of new and subject of last e-mail in a Gmail inbox
|
-- Gmail: provides count of new and subject of last e-mail on Gmail
|
||||||
module("vicious.gmail")
|
module("vicious.gmail")
|
||||||
|
|
||||||
|
|
||||||
|
-- User data
|
||||||
|
local user = "" -- Todo
|
||||||
|
local pass = "" -- * find a safer storage
|
||||||
|
|
||||||
-- {{{ Gmail widget type
|
-- {{{ Gmail widget type
|
||||||
local function worker(format, login)
|
local function worker(format, feed)
|
||||||
|
local auth = user .. ":" .. pass
|
||||||
|
local feed = feed or "https://mail.google.com/mail/feed/atom/unread"
|
||||||
local mail = {
|
local mail = {
|
||||||
["{count}"] = "0",
|
["{count}"] = "0",
|
||||||
["{subject}"] = "N/A"
|
["{subject}"] = "N/A"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Todo: find a safer way to do this
|
|
||||||
local auth = login[1] .. ":" .. login[2]
|
|
||||||
|
|
||||||
-- Get info from the Gmail atom feed
|
-- Get info from the Gmail atom feed
|
||||||
local f = io.popen("curl --connect-timeout 1 -m 3 -fsu "..auth.." https://mail.google.com/mail/feed/atom")
|
local f = io.popen("curl --connect-timeout 1 -m 3 -fsu "..auth.." "..feed)
|
||||||
|
|
||||||
-- Could be huge don't read it all at once, info we are after is at the top
|
-- Could be huge don't read it all at once, info we are after is at the top
|
||||||
for line in f:lines() do
|
for line in f:lines() do
|
||||||
|
@ -34,8 +37,8 @@ local function worker(format, login)
|
||||||
-- Find subject tags
|
-- Find subject tags
|
||||||
local title = line:match("<title>(.*)</title>")
|
local title = line:match("<title>(.*)</title>")
|
||||||
-- If the subject changed then break out of the loop
|
-- If the subject changed then break out of the loop
|
||||||
if title ~= nil and -- Ignore the feed title
|
if title ~= nil and -- Todo: find a better way to deal with 1st title
|
||||||
title ~= "Gmail - Inbox for "..login[1].."@gmail.com" then
|
title ~= "Gmail - Label 'unread' for "..user.."@gmail.com" then
|
||||||
-- Spam sanitize the subject
|
-- Spam sanitize the subject
|
||||||
title = helpers.escape(title)
|
title = helpers.escape(title)
|
||||||
-- Don't abuse the wibox, truncate, then store
|
-- Don't abuse the wibox, truncate, then store
|
||||||
|
|
Loading…
Reference in New Issue