如果你和我一样,是个
豆瓣迷的话,一定会时不时上豆瓣刷一下页面,看看组里有什么新人加入、有什么好玩的新话题、自己下的饵有没有人咬钓上钩...而结果往往事与愿违,十之八九既没有新人加入、也没有好玩的新话题、更没有人咬你的饵上你的钩。怎么办?
这种重复劳动还是让程序自动帮你去做吧。当且仅当有新人加入、有好玩的新话题、有人咬钓上钩时,才告诉你——最好是通过即时消息——“打雷啦,下雨啦,快回组里收衣服啊!”这样岂不是很make sense?哈哈。
我在豆瓣上建了一个
杭州书虫小组,组里有700来号人,每天组员人数、讨论帖、小组收藏总计的变化次数在20-30次左右,人工反复去查看实在浪费时间。于是就想到利用脚本,实现通过即时消息告知小组页面更新的功能。具体思路是这样的,每隔3分钟用"lynx --source
http://www.douban.com/group/hzbookworm/"命令抓取杭州书虫小组页面源码,再用md5sum命令生成MD5校验值,与前次保存的MD5校验值比对,若一致,则不做任何动作,若不一致,则通过python脚本发送Google Talk即时消息给我,通知页面更新。首先下载Jabber协议的Python库:
xmpppy,并在Linux系统里安装:
localhost ~ # wget http://nchc.dl.sourceforge.net/sourceforge/xmpppy/xmpppy-0.4.0.tar.gz
localhost ~ # tar xvfz xmpppy-0.4.0.tar.gz
localhost ~ # cd xmpppy-0.4.0
localhost xmpppy-0.4.0 # python setup.py install |
然后在你的普通用户目录里存放一个用于发送Google Talk即时消息的Python脚本(需要调用前面下载的xmpppy库):
#!/usr/bin/python
# FILENAME: sendgoogletalk.py
import xmpp
login = 'loginID' # @gmail.com
pwd = 'password'
cnx = xmpp.Client('gmail.com')
cnx.connect( server=('talk.google.com',5223) )
cnx.auth(login,pwd, 'botty')
cnx.send( xmpp.Message( "loginID@gmail.com" ,"http://www.douban.com/group/hzbookworm/ updated" ) )
|
请将代码中的 loginID 改为你的Google帐号ID,password 改为你的Google帐号密码,发送消息改成“打雷啦,下雨啦,快回组里收衣服啊!”
最后用"crontab -e"命令编辑你的用户定时任务,加入一段:
*/3 * * * * ( if [ `lynx --source http://www.douban.com/group/hzbookworm/ | md5sum -c /tmp/md5sum-douban | grep OK | wc -l` != '1' ]; then lynx --source http://www.douban.com/group/hzbookworm/ | md5sum > /tmp/md5sum-douban ; /usr/bin/python /home/hutuworm/douban/sendgoogletalk.py > /dev/null 2>&1 ; fi ) |
大功告成!从此,每当
杭州书虫小组有任何风吹草动,我都会即时收到Google Talk跳出来的消息了。