2009年8月5日星期三

[GFW Blog] 利用GAE实现Twitter短信通知

随着国内Twitter Clone集体被自杀,利用叽歪绑定飞信获取Twitter更新的法子就失效了,于是我再一次开始折腾。

这次用到的东西包括cocobear写的PyFetion、Yahoo Pipes和Google App Engine。基本思路就是利用GAE的Cron功能定时检查Yahoo Pipes抓取的RSS,如果有新的东西就用PyFetion给自己的手机发短信。

我将Cron任务设置为每5分钟执行一次,实际延迟在10来分钟的样子,还可以接受。

PyFetion源码在这里下载,需要把全局变量debug改成False。GAE的Cron配置文档在这里

以下是代码部分:

#! /usr/bin/env python
# coding=utf-8

# 需要修改的参数
FETION_ID
= '13838383838'
FETION_PWD
= '383838'
RSS_URL
= 'http://'


import sys, os
sys
.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
from PyFetion import *

from google.appengine.api import urlfetch
from google.appengine.api import memcache
import xml.etree.cElementTree as etree

def m_fetch_url(url):
    r
= urlfetch.fetch(url)
   
if r.status_code == 200:
       
return r.content
   
else:
       
return ''

def m_check_msg(xml):
    dom
= etree.fromstring(xml)
    items
= dom.findall('./channel/item')
    msgs
= {}
    rss
= {}
   
for item in items:
        guid
= item.findtext('.//guid')
        title
= item.findtext('.//title')
        rss
[guid] = 1
       
if memcache.get(guid) == None:
            msgs
[guid] = title
    memcache
.flush_all()
    memcache
.set_multi(rss)
   
return msgs

def m_send_sms(msgs):
   
try:
        phone
= PyFetion(FETION_ID, FETION_PWD, 'HTTP')
   
except PyFetionInfoError, e:
       
return -1
   
    phone
.login()
   
for guid, msg in msgs.iteritems():
       
try:
            phone
.send_sms(msg.encode('utf-8'))
       
except:
            memcache
.delete(guid)


def main():
   
print 'Content-Type: text/plain'
   
print ''
    xml
= m_fetch_url(RSS_URL)
   
if xml == '':
       
return -1
    msgs
= m_check_msg(xml)
   
if msgs == None:
       
return -1
    m_send_sms
(msgs)

main
()




--
Posted By GFW Blog to GFW Blog at 8/05/2009 11:33:00 P
--~--~---------~--~----~------------~-------~--~----~
1、请点击www.chinagfw.org访问我们,订阅地址:http://feeds2.feedburner.com/chinagfwblog。2、需要Psiphon2注册邀请的朋友,请向english@sesawe.net发送电子邮件请求,说明 "can I have psiphon2 access" 并告诉您所在的国家。也可以使用Twitter Direct Messages或登陆Psiphon网站直接向Psiphon索取使用邀请。3、GFW Blog现提供最新翻墙工具下载(地址一、二、三),翻墙(突破网络封锁)方法介绍请见本站anti-censorship部分。4、本站热烈欢迎各位朋友投稿或推荐文章,请发邮件至chinagfwblog[at]gmail.com。5、敬请关注、支持、参与Sesawe和黑箱监管集体诉讼。
To unsubscribe from this group, send email to
gfw-blog+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/gfw-blog?hl=zh-CN
-~----------~----~----~----~------~----~------~--~---

没有评论:

发表评论