wb2t-同步新浪微博到Twitter

我开始使用微博了,主要是关注朋友圈,Startup和VC领域的动向,Twitter上面还是以关注和交流技术为主。工具和平台多了之后,总在考验人类的有限精力,对于懒人总是希望能一招制胜,不喜欢做重复劳动,我也是-发推或发微博,我希望只有一个接口让我做输入,因此我写了这个简单的脚本,帮助我把微博内容同步到Twitter中去。(注:这个脚本不是双向同步的,由于众所周知的原因,国内微博可用性要远远高于另一者)

这个脚本是独立运行在墙外的一段Ruby代码,定时从我的微博获取数据然后导入到我的Twitter帐号。类似的服务有第三方提供,但是我还是比较倾向自己管理,一是出于安全性考虑,二是不想引入太复杂的方案,事实上,这个Ruby脚本很简单,核心代码只有十几行。基本思路是:微博导出数据-解析和获取最新数据-Twitter发布数据。

互联网阅读格式的数据开放标准,目前来说RSS是最为方便的,但是微博虽然做了开放平台,却不提供RSS的输出,这一点确实让人很遗憾。当然,利用微博的开放API也可以导出json数据,但前提是要申请App应用,管理一堆Key,Token等,太麻烦了,我不是不愿意使用新浪的技术平台,只是一个地址栏里的字符串的问题,不想搞成一个SDK的模型去求解。互联网大会上四大巨头接收采访的视频里,曹国伟还在强调微博的管理没有如履薄冰,如何以开放平台的心态迎接未来。微博平台现在就是墙里墙,前段时间把所有第三方同步API也关了,目的就是要围成圈,所有数据概不外借,所有用户都在新浪服务器监控之下,在微博外面出了事,我不管,反正你没有理由说我是在新浪微博发布的信息。好了,扯远了,程序员的世界是无所不能的,微博的RSS输出有很多现成的方案,我用了下面这个地址的服务: http://medcl.net/sinarss/?uname=chagel

解析RSS我用了simple-rss这个gem,Twitter的发布用了twitter,这些都是Ruby里面常用的一些包。没有的话装起来也很方便:

gem install simple-rss
gem install twitter
读取RSS中的Item后就可以判断需要的内容,用Twitter类方法update进行发布:
rss = SimpleRSS.parse(rss)
rss.items.reverse.each_with_index do |item, index|
  if item.pubDate > last_sync_time
    Twitter.update "#{item.title}"
  end
end
记录最后一个状态导入的时间,只有比这个时间新的数据我们才需要同步,代码太简单了,这里就不再啰嗦了。这个项目我已经发布到GitHub上面,如果有兴趣,你也可以获取源码自己玩,有问题请拍砖或者发个Pull request给我吧。

项目地址: https://github.com/chagel/wb2t