--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2008/03/01

gmail の未読数を取得する

python の libgmail を使ったスクリプト。一定時間置きに走査する。未読数は $HOME/.gmail_stats に書き出される。

#!/usr/bin/env python

import sys
import time
import libgmail

output = '$HOME/.gmail_stats'
interval = 10 #ten seconds

username=''
password=''
try:
    username = sys.argv[1]
    password = sys.argv[2]
except IndexError:
    print '''
    Error: not enough arguments.

    Usage: python gmail_watcher.py username password
    '''
    quit()

account = libgmail.GmailAccount('%s@gmail.com'%(username), password)
account.login()

def output_msg_info(not_read_mails):
    port = file(output, 'w')
    try:
        #print out, not read mails count
        port.write('not read count:%d\n' % (len(not_read_mails)))
        port.flush()
    finally:
        port.close()

while 1:
    folder = account.getMessagesByFolder('inbox')
    not_read_mails = []
    for thread in folder:
        #info[1] == 1 -> not read
        if thread.info[1]:
            not_read_mails.append(thread)
    output_msg_info(not_read_mails)
    time.sleep(interval)

久々すぎて文字列の連結の仕方とか、関数の呼出しかたとか忘れてた。

ファイルに書き出すようにしたのは dzen に出力したかったため。直接文字列を渡すことが難しいので、ファイルに書き出すことでお茶を濁した。必要なければ標準出力に出すとか、その辺はいかようにもなる。

前は色々苦労したけど、結局実行直後にログイン→無限ループで走査が一番簡単。.xsession に、これを裏プロセスで実行させるように設定してる。

ちなみにファイルから未読数を取得するには、

sed -e 's/[^:]*://' $HOME/.gmail_stats

とかすりゃいい。てきとー。

スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。