Comment puis-je vérifier le nombre de messages Gmail non lus dans ma boîte de réception avec un court script Python? Points bonus pour récupérer le mot de passe d'un fichier.
Réponses
Trop de publicités?Je vous conseille d'utiliser le flux atomique de Gmail
C'est aussi simple que cela:
import urllib
url = 'https://mail.google.com/mail/feed/atom/'
opener = urllib.FancyURLopener()
f = opener.open(url)
feed = f.read()
Vous pouvez ensuite utiliser la fonction d'analyse de fil dans ce bel article: Consultez Gmail de manière pythonique.
Bien, je vais aller de l'avant et épeler une solution imaplib comme Cletus a suggéré. Je ne vois pas pourquoi les gens ressentent le besoin d'utiliser gmail.py ou Atom pour cela. Ce genre de chose est ce pour quoi IMAP a été conçu. Gmail.py est particulièrement flagrant, car il analyse en fait le code HTML de Gmail. Cela peut être nécessaire pour certaines choses, mais pas pour compter le nombre de messages!
import imaplib, re
conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login(username, password)
unreadCount = re.search("UNSEEN (\d+)", conn.status("INBOX", "(UNSEEN)")[1][0]).group(1)
La pré-compilation de la regex peut améliorer légèrement les performances.
Pour une implémentation complète de la lecture de la valeur du flux d’atomes:
import urllib2
import base64
from xml.dom.minidom import parse
def gmail_unread_count(user, password):
"""
Takes a Gmail user name and password and returns the unread
messages count as an integer.
"""
# Build the authentication string
b64auth = base64.encodestring("%s:%s" % (user, password))
auth = "Basic " + b64auth
# Build the request
req = urllib2.Request("https://mail.google.com/mail/feed/atom/")
req.add_header("Authorization", auth)
handle = urllib2.urlopen(req)
# Build an XML dom tree of the feed
dom = parse(handle)
handle.close()
# Get the "fullcount" xml object
count_obj = dom.getElementsByTagName("fullcount")[0]
# get its text and convert it to an integer
return int(count_obj.firstChild.wholeText)
Ce n’est pas un extrait de code, mais j’imagine que l’utilisation d’ imaplib et les instructions IMAP de Gmail vous permettent d’atteindre la plupart du temps.