两分钟搭建自己的twitter机器人
September 12, 2009
01:09 AM, Sep 13
在Google App Engine支持XMPP之后,搭建一个属于自己的twitter发布机器人已经变得非常容易,在此之前,这项工作显得很复杂,即使有imified这样专业的机器人服务的存在。简单介绍一下如何搭建,实现最简单的发布功能。
在app.yaml中启用xmpp消息服务:
inbound_services: - xmpp_message
这行代码是加在handlers内容区块之外的。
具体的代码:
from google.appengine.api import xmpp from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app TWITTER_USERNAME = "your twitter name" TWITTER_PASSWORD = "your twitter password" YOUR_EMAIL = "your email" class XMPPHandler(webapp.RequestHandler): def post(self): message = xmpp.Message(self.request.POST) if message.sender.split('/')[0] == YOUR_EMAIL: authStr = TWITTER_USERNAME +':'+ TWITTER_PASSWORD msg = message.body msg = msg.encode('utf8') url='http://twitter.com/statuses/update.json' form_fields={'source':'','status':msg} form_data=urllib.urlencode(form_fields) result=urlfetch.fetch(url=url, payload=form_data, method=urlfetch.POST, headers={"Content-type": "application/x-www-form-urlencoded", "Accept": "text/xml", "Authorization": "Basic "+authStr.encode("base64")[0:-1]}) if result.status_code == 200: message.reply(u"发布成功.") else: message.reply(u"发布失败,请重试!") application = webapp.WSGIApplication([('/_ah/xmpp/message/chat/', XMPPHandler)], debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main()
上传就可以用YOUR_EMAIL定义的email地址加[email protected]为好友,然后就可以给它发送twitter了。