Suite à l’achat de cet excellent et simplissime produit, j’ai décider qu’il m’avertisse de l’arrivée de mail de 2 manière différentes. Une première en position colorée bleue (couleur 1) durant 15 secondes lors de la disposition sur mon compte gmail de 1 à 10 messages non lus.
La deuxième, en position colorée bleue clignotante lors de la disposition de plus de 10 messages non lus.

mail notifier
Le produit, dans cette caverne d’alibaba à geek :http://dx.com/p/usb-universal-e-mail-webmail-im-notifier-gmail-outlook-outlook-express-pop3-27062?item=3
Tout d’abord, veuillez enregistrer cette librairie dans l’environnement de python sur votre OS Linux.
Source : http://usbmailnotifier.googlecode.com/svn/trunk/setcolor.py
Le code :
#!/usr/bin/env python
import usb
import sys
import time
class MailNotifier:
def makeData(self, color):
return (color, 0, 0, 0, 0)
def __init__(self):
self.dev=UsbDevice(0x1294, 0x1320)
self.dev.open()
self.dev.handle.reset()
def setColor(self, color):
self.dev.handle.interruptWrite(0x02, self.makeData(color), 1000)
class UsbDevice:
def __init__(self, vendor_id, product_id):
busses = usb.busses()
self.handle = None
count = 0
for bus in busses:
devices = bus.devices
for dev in devices:
if dev.idVendor==vendor_id and dev.idProduct==product_id:
self.dev = dev
self.conf = self.dev.configurations[0]
self.intf = self.conf.interfaces[0][0]
self.endpoints = []
for endpoint in self.intf.endpoints:
self.endpoints.append(endpoint)
return
sys.stderr.write("No mail notifier found\n")
def open(self):
if self.handle:
self.handle = None
try:
self.handle = self.dev.open()
self.handle.detachKernelDriver(0)
self.handle.detachKernelDriver(1)
self.handle.setConfiguration(self.conf)
self.handle.claimInterface(self.intf)
self.handle.setAltInterface(self.intf)
return True
except:
return False
def main(argv):
if len(argv) != 2:
sys.stderr.write("Usage : %s color_number\n" % argv[0])
else:
m = MailNotifier()
m.setColor(int(argv[1]))
if __name__=="__main__":
main(sys.argv)
Maintenant, voici le programme s’occupant de la requête au serveur de messagerie ainsi que de la gestion du mail notifier.
import imaplib, re, time, setcolor
conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login('account@gmail.com', 'password')
unreadCount = re.search("UNSEEN (\d+)", conn.status("INBOX", "(UNSEEN)")[1][0]).group(1)
print unreadCount + " mail"
unreadCount = int(unreadCount)
clignote = 0
if (unreadCount > 0):
if (unreadCount > 10):
while (clignote < 10):
m = setcolor.MailNotifier()
m.setColor(int('2'))
time.sleep(1)
m = setcolor.MailNotifier()
m.setColor(int('0'))
#print clignote
clignote = clignote + 1
else:
m = setcolor.MailNotifier()
m.setColor(int('2'))
time.sleep(15)
m = setcolor.MailNotifier()
m.setColor(int('0'))
Voila il ne reste plus qu’à créer une tâche cron pour automatiser cela.
Appel du programme :
sudo python mailnotifier.py