Robotsae

采用Python的Flask框架编写,运行在新浪SAE上的微博机器人

Download .zip Download .tar.gz View on GitHub

QRobotX

微博机器人,使用Python语言的Flask框架编写,适用于新浪SAE平台。

本项目依赖于:

  • Flask,一个简单的面向需求的微框架,很适合做小项目。
  • sinaweibopy,新浪微博python sdk

类似于英国的大本钟的微博,每小时发布一条微博。本项目微博演示地址:大笨钟


安装


myConfig.py文件内容如下:

APP_KEY = '225488****'
APP_SECRET = '3bd49f5d***********' 
CALL_BACK = 'https://api.weibo.com/oauth2/default.html'
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'
USERID = '****登陆邮箱'
PASSWD = '****密码'
  • 如果需要本地测试,则必须安装Flask,pip install Flask。然后用python运行myApp.py,在浏览器输入localhost:5000。也可键入一个其他地址来测试(如localhost:5000/chime用来测试chime函数)。
  • 最后用svn提交

    • svn add 1\
    • svn ci -m "simple project done!"
  • 此时,键入浏览器地址栏中该项目的地址,projectName.sinaapp.com, 就能进入本项目。

原理


本项目主要利用了sae的cron功能,能实现定时任务。 在config.yaml中更改成如下代码,就能实现每小时去做某一项任务,该任务为url项,即跳转到projectName.sinaapp.com/chime,去运行相应函数chime()。cron语法见新浪官方cron文档

name: robot
version: 1

cron:
- url: /chime
schedule: every 1 hour, offset 0

该网站的首页受myApp中的如下代码控制,模板引擎会渲染一个index.html。

@app.route('/')
def index():
return render_template('index.html')

在myApp.py里面,设定定时任务要完成的工作。为了防止token过期,还要在每次发微博之前重新授权得到token。

@app.route('/chime', methods=['GET', 'POST'])
def chime():
    hour = time.strftime('%H',time.localtime(time.time()))

    #每次发微博重新授权
    token = myToken.getToken();
    content = "" + greet.duang(hour) + greet.morning(hour);
    data = {'access_token':token,'status':content}
    data_urlencode = urllib.urlencode(data)
    requrl = "https://api.weibo.com/2/statuses/update.json"
    req = urllib2.Request(url = requrl,data =data_urlencode)
    urllib2.urlopen(req,timeout=60)
    return 'send success!'