Add conkys and wallpapers
This commit is contained in:
70
.conky/scripts/gmail.py
Executable file
70
.conky/scripts/gmail.py
Executable file
@@ -0,0 +1,70 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
import urllib.request
|
||||
import urllib # For BasicHTTPAuthentication
|
||||
import feedparser # For parsing the feed
|
||||
from textwrap import wrap # For pretty printing assistance
|
||||
import json
|
||||
from os.path import expanduser
|
||||
import sys
|
||||
import time
|
||||
|
||||
_URL = "https://mail.google.com/gmail/feed/atom/unread"
|
||||
WRAP_LIMIT = 50
|
||||
|
||||
def auth():
|
||||
|
||||
json_data=open(expanduser('~')+'/.conky/scripts/.passwords.json')
|
||||
data = json.load(json_data)
|
||||
username=data['gmail']['username']
|
||||
password=data['gmail']['password']
|
||||
|
||||
auth_handler = urllib.request.HTTPBasicAuthHandler()
|
||||
auth_handler.add_password(realm='New mail feed',
|
||||
uri='https://mail.google.com/',
|
||||
user= username,
|
||||
passwd= password)
|
||||
|
||||
opener = urllib.request.build_opener(auth_handler)
|
||||
# ...and install it globally so it can be used with urlopen.
|
||||
urllib.request.install_opener(opener)
|
||||
|
||||
'''The method to do HTTPBasicAuthentication'''
|
||||
|
||||
f = opener.open(_URL)
|
||||
feed = f.read()
|
||||
return feed
|
||||
|
||||
def fill(text, width):
|
||||
'''A custom method to assist in pretty printing'''
|
||||
if len(text) < width:
|
||||
return text + ' '*(width-len(text))
|
||||
else:
|
||||
return text
|
||||
|
||||
def readmail(feed):
|
||||
'''Parse the Atom feed and print a summary'''
|
||||
atom = feedparser.parse(feed)
|
||||
|
||||
print ("${color white}You have %s new mails${color} ${alignr}Updated: ${color white}%s" % ((len(atom.entries)), time.strftime("%I:%M")))
|
||||
|
||||
for i in range(len(atom.entries)):
|
||||
if(i>10):
|
||||
break
|
||||
if(len(atom.entries[i].title) > WRAP_LIMIT):
|
||||
#print ("%s" % (fill(wrap(atom.entries[i].title, 50)[0]+" ...", 55)))
|
||||
print ("${color1}%s" % (wrap(atom.entries[i].title, WRAP_LIMIT)[0]+" ..."))
|
||||
else:
|
||||
print ("${color1}%s" % (wrap(atom.entries[i].title, WRAP_LIMIT)[0]))
|
||||
|
||||
def countmail(feed):
|
||||
'''Parse the Atom feed and print a summary'''
|
||||
atom = feedparser.parse(feed)
|
||||
print ("Emails: %s new" %len(atom.entries))
|
||||
|
||||
if __name__ == "__main__":
|
||||
f = auth() # Do auth and then get the feed
|
||||
if(len(sys.argv) > 1):
|
||||
countmail(f)
|
||||
else:
|
||||
readmail(f) # Let the feed be chewed by feedparse
|
||||
Reference in New Issue
Block a user