青青子衿, 悠悠我心, 但为君故, 沉吟至今
« Google发布Dashboard服务“腾讯开发儿童社区”,玩的是寂寞 »

实时同步Twitter信息到新浪微博

  如何自动将的Twitter信息同步到国内的新浪微博、开心网、人人网等国内SNS网站,我先前曾经介绍过一个同步方法,该方法虽能实现同步功能,但是同步不是实时的,有大约一小时左右的时差,这个时差是由TwitterFeed引起的,同时该方法的设置较为繁琐,需要多次翻墙。

  因此,我开始尝试一种新的同步方法,开发了一个定时自动读取并同步Twitter信息的Python程序,以简化同步的流程,并缩短同步时间,做到基本实时同步功能。原先的同步的流程图是: twitter -> appspot -> twitterfeed -> ping.fm -> customurl -> huotu -> 新浪微博,新的同步流程变成了: twitter -> appspot -> huotu -> 新浪微博,步骤大为简化,只需在GAE上设置一个定时执行的计划任务即可。

  由于GAE支持Cron Job计划任务,因此,我们的Python程序可以实现每分钟自动调用一次,调用的时候,先从Twitter上抓取用户最新的消息,抓取成功后,将消息同步到嘀咕火兔,然后分发到新浪微博、开心网等,如果设置为每分钟执行的话,同步时差只有一分钟左右的时间,基本实现了实时同步Twitter信息到新浪微博等SNS网站的功能。

  该程序Python程序我在GAE上调试并不太顺利,按照官方的说明配置好了cron.yaml文件,但是更新twitter.py之后,Cron Job计划任务还是不起作用,后台也看不到相关的Cron Job任务。

  后来经过一番研究,终于解决了GAE中Python的Cron Job计划任务问题,原因很简单,因为我的“Google App Engine SDK for Python”是很久以前安装的,那时候GAE还不支持计划任务,因此无法更新cron.yaml文件,重新下载了一个最新版本的“Google App Engine SDK for Python”安装后,Cron Job计划任务更新就成功了。

  不过,新的问题又来了,我发现该应用调用Twitter API的时候,失败率非常高,几乎有一半的情况,调用的时候会提示“Rate limit exceeded. Clients may not make more than 150 requests per hour.”,这让我怀疑GAE的外部IP是不是非常少,还有很多第三方程序在GAE上调用Twitter API,才导致每小时的调用超过150次,否则的话,光我自己的调用绝对不会有这么高的频率,大概是因为Twitter没有将GAE的IP设置为白名单,如果有一天Twitter不限制GAE的IP,那应该就没什么问题了。

  安装使用说明:

  下载方法,使用TortoiseSVN检出这个SVN地址,然后,编辑app.yaml,修改为自己的appspot应用名,接着,修改twitter.py文件的最后一行,将自己的Twitter用户名,嘀咕火兔用户名和密码分别填入,cron.yaml文件里是计划任务设置,然后就可以按照此文的方法进行发布,执行 appcfg.py update 目录名,使用Gmail帐号和密码,就可以发布了。

  发布之后,GAE就可以定时执行twitter.py程序,由于定时执行可以设置最短为1分钟,因此同步速度很快,基本可以实现即时自动同步的效果。



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/1980.html
  • 文章排行:
  • 1.招
  • 新浪的用了几次就没什么兴趣了,我觉得微薄也不会有多大的前途。
  • 2009/11/7 21:32:25   支持(15)反对(7) 回复
  • 2.Jacse
  • 这和邪世界真折腾啊。
    Twitter浮云啊。
  • 2009/11/7 20:38:36   支持(13)反对(6) 回复
  • 3.Hjvg
  • 此文一出,一小时150耗的更快
    williamlong 于 2009-11-7 20:11:57 回复
    未必非得安装到GAE上,如果安装在自己支持Python的空间,例如Dreamhost的,就不会出现150次的问题了。
    hafid 于 2009-11-7 20:47:17 回复
    我用dabr安装在dreamhost的空间,也会有150的限制。
    同步到 于 2009-11-8 16:34:13 回复
    同步到底为了什么呢?宣传网站?宣传思想?
    leejeans 于 2009-12-12 11:20:35 回复
    今天发现无法sync了,看gae日志,错误如下,求大大指点,怎么解决?
    12-11 05:20PM 32.387 /twitter.py 500 4197ms 144cpu_ms 47api_cpu_ms 1kb

    details因为包含某些系统关键词,这里无法提交,这是错误标题
    leejeans 于 2009-12-12 11:20:53 回复
    今天发现无法sync了,看gae日志,错误如下,求大大指点,怎么解决?
    12-11 05:20PM 32.387 /twitter.py 500 4197ms 144cpu_ms 47api_cpu_ms 1kb

    details因为包含某些系统关键词,这里无法提交,这是错误标题
  • 2009/11/7 19:58:52   支持(11)反对(8) 回复
  • 4.wotch
  • 有一点技术含量,俺得慢慢看
  • 2009/11/7 22:08:51   支持(10)反对(7) 回复
  • 5.张楠
  • 可惜微薄最大的问题在于,质量低
  • 2009/11/8 21:13:48   支持(12)反对(9) 回复
  • 7.视野博客
  • 好麻烦哦,现在天天也是在翻着上
  • 2009/11/9 9:18:55   支持(11)反对(8) 回复
  • 8.lucker
  • 进来学习学习.. 这年头.. 不容易..
  • 2009/11/7 22:35:03   支持(17)反对(15) 回复
  • 9.Shaws
  • 顶一下。文章写的有技术含量。
  • 2009/11/8 11:21:20   支持(10)反对(8) 回复
  • 10.SUN休闲吧
  • 新浪的那个比较山寨啊@!
  • 2009/11/7 20:49:13   支持(10)反对(9) 回复
  • 11.炎龙博客
  • 新浪的用了几次就没什么兴趣了,我觉得微薄也不会有多大的前途。
  • 2009/11/7 20:51:52   支持(16)反对(15) 回复
  • 12.冰泉视觉
  • 估计GAE距离河蟹的日子不远了
  • 2009/11/7 22:00:12   支持(11)反对(10) 回复
  • 13.vim
  • 好麻烦的方案,给一个比较简单的方案:
    以zuosa.com为入口帐号,zuosa.com可以直接同步twitter和新浪微博的(而且可以间接实现手现更新twitter),如果需要从twitter好友处收消息,另外再装个可以翻墙的浏览器插件,或者干脆手机接收好了
    shiqianlu 于 2009-11-8 9:34:09 回复
    1.不赞同Vim用zuosa的方法来更新,月光这篇文章侧重于重心放在twitter的用户(RT,@什么的很重要),仅仅是想同步更新twitter和新浪围脖的话,有很多微博服务都可以.
    2.深柳堂有一篇文章,也是利用appspot,直接更新新浪,略去了中间火兔的部分.
    http://zhasm.com/blog/synchronise-sina-miniblog-with-twitter.html
    3.月光这篇文章对于想同步到嘀咕或其他网站的筒子来说依然很有用.貌似现在只有嘀咕一家支持再次转发从别的网站发来的tweets.(要是嘀哒插件复活就好了.)
  • 2009/11/8 1:05:35   支持(10)反对(9) 回复
  • 15.Hobo
  • 同步到底为了什么呢?宣传网站?宣传思想?
  • 2009/11/8 15:07:21   支持(14)反对(13) 回复
  • 16.番茄红素
  • 月光真是高手,越来越有兴趣读月光博客了
  • 2012/5/5 11:39:44   支持(10)反对(9) 回复
  • 17.葫芦娃博客
  • 来这里看看!!!PR都到5了
  • 2009/11/7 22:12:48   支持(9)反对(9) 回复
  • 18.shiqianlu
  • 晕.虽然刚刚成功同步到嘀咕了,却发现嘀神不支持正版开心网了.
    现在想同步到开心网真是很难,可以同步到开心网的微博服务(9911,5follow),又不支持从别的网站来的消息再次转发.很郁闷.
  • 2009/11/8 10:12:54   支持(14)反对(14) 回复
  • 19.alswl
  • 万一何谐了appspot。。。
    一切成为浮云
    williamlong 于 2009-11-8 9:23:07 回复
    即使appspot被和谐,该同步方案依然有效。
  • 2009/11/7 21:24:19   支持(10)反对(11) 回复
  • 21.未寒
  • 我花了一小时解决了从QQ签名同步到所有微薄,你这里进入是反过来的
  • 2009/11/7 23:27:45   支持(9)反对(11) 回复
  • 22.潜行者
  • 感觉没看太明白啊,你那个地址有六个文件,是都需要下载下来还是只需要app.yaml和cron.yaml文件?
  • 2009/11/9 14:23:22   支持(12)反对(14) 回复
  • 23.littlebt
  • 请问这个方法还能用吗 能的话请问这里“将自己的Twitter用户名,嘀咕火兔用户名和密码分别填入,cron.yaml文件里是计划任务设置”具体怎么改 不好意思 刚开始学……
  • 2010/9/8 1:40:56   支持(9)反对(11) 回复
  • 24.小倩
  • Twitter被河蟹了,所以同步twitter也成了需要一些技巧的事情了
  • 2009/11/7 20:19:02   支持(8)反对(11) 回复
  • 25.飞晏
  • “河蟹”促进技术进步
    voasia 于 2009-11-8 15:34:32 回复
    名言!
  • 2009/11/7 20:05:49   支持(11)反对(15) 回复
  • 26.coloriy
  • 占座,收藏,每天关注月光,每天关注互联网
  • 2009/11/9 13:29:33   支持(10)反对(14) 回复
  • 27.小农夫
  • 长见识了呀,里面有些东西还是不能理解,先收藏一下再说吧,以后可能用得着
  • 2009/11/8 3:56:29   支持(9)反对(14) 回复
  • 28.yegle
  • 这不叫实时…
    实时的问题我想过,最实时的方法就是在twitter api proxy里整合一个发推到其他网站的功能
  • 2009/12/10 15:53:01   支持(7)反对(12) 回复
  • 29.takheng
  • 请问在哪里填写火兔的用户名和密码?我找了半天也找不到填写的地方,倒是有个地方可以填写新浪微博的用户名和密码.
  • 2010/10/15 13:55:00   支持(8)反对(13) 回复
  • 31.弱者
  • 作为一名缺乏运动,无力翻墙的天朝居民,即使按照此文安装完毕,但也不知道如何去更新twitter,然而,怎么看此文中信息源头都是从twitter起始,然后逐个同步开去,我等只能望洋兴叹了
    williamlong 于 2009-11-7 21:59:06 回复
    使用Twitter API Proxy在TwitterFox或twhirl可更新Twitter。
  • 2009/11/7 21:06:15   支持(9)反对(16) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.