微博比特币价格机器人

前几天看到 twitter 上有一个机器人帐号 btcprice , 会定时报告各大交易所上比特币的最新成交价,觉得蛮有意思的,不用盯盘了,刷刷微博就能跟踪行情。心想微博上应该也应该有类似的帐号,搜了一下,竟然没有,所以就在微博上把 btcprice 注册了。今天有空折腾了几个小时,现在看起来似乎可用了,微博地址:http://weibo.com/btcprice  欢迎关注,目前只提供了 OkCoin 的数据。

做这样一个微博机器人其实很简单,类似的帐号有古城钟楼,这个帐号每个时辰报一次时间。据作者微博称,为了实现这个功能,写了三万多行代码。有点夸张了,不知道古城钟楼还有什么特殊能力?btcprice 这个帐号所有代码只有 48 行,实现一个微博机器人没有想象的那么难。

首先需要到 http://open.weibo.com/ 注册成为开发者,建议使用你注册的机器人帐号登录,这样会方便些。创建一个应用,类型选择网页应用。创建完成后,会获得 App Key 和 App Secret,其实对于机器人帐号来说,这两个字段没太大用处。应用审核通过需要提交开发者实名认证信息,但不审核也不影响调用微博发表接口。不过没有通过审核的应用,状态为测试中,授权的帐号只有1天的有效期。不过据称,对于开发者的帐号,授权有效期为5年。这就不需要担心授权过期的问题了。

发表微的API: http://open.weibo.com/wiki/2/statuses/update 对于一个机器人帐号来说,填两个参数就够了,一个是 status 就是要发表的微博消息,还有一个是 access_token。我一开始就卡在获取 access_token 上了。根据文档,access_token 必须通过 OAuth2.0 获取,而实现一个OAuth2.0 流程还挺麻烦的,况且机器人帐号只需要一次性授权拿到 access_token 就好了,最好有现成的东西可以获取。我想到一个办法是:在我的 wordpress 上安装一个社会化插件,填上在创建应时是获取的 App key 和 App Secret,然后用机器人微博帐号登录到自己的博客上,博客插件应该会通过某种方式把 access_token 保存起来,拿到 access_token 就万事大吉了。不过不知道什么问题,总是授权失败。Google 了一下可能是应用地址设置的问题,和回调地址不匹配。遂改了应用地址,但需要一段时间来生效。后来,看到微博开放平台上有一个API测试工具,http://open.weibo.com/tools/console 点进去就看到开发者自己的  access_token 了,真是踏破铁鞋无觅处得来全不费工夫。

获取比特币最新成交价格通过 OkCoin 的行情API获取 https://www.okcoin.com/t-1000052.html。接口返回的是一段 json 数据,使用 Python 中的 json 模块处理。Python 代码如下:

import urllib2
import json

def get_okcoin_btc_price():
        url = 'https://www.okcoin.com/api/ticker.do'
        r = urllib2.urlopen(url)
        data = json.loads(r.read())
        return float(data['ticker']['last'])

获取到价格后格式化消息体,然后调用微博的发表接口发布微博,Python 代码:

import urllib
import urllib2

        post_data = urllib.urlencode({'access_token' : access_token, 'status' : msg.encode('utf-8') })
        post_url = 'https://api.weibo.com/2/statuses/update.json'
        r = urllib2.urlopen(post_url, post_data);

完整代码可以在 github 上查看:https://github.com/haipome/btcprice/blob/master/btcprice_update.py

最后设置 crontab 每隔 30 分钟更新一次,程序部署在我的位于日本 linode 上。

TODO:

  1. 添加其他交易所数据
  2. 比特币价格监控,有大的波动时发表微博

发表评论

电子邮件地址不会被公开。 必填项已用*标注