使用GAE将颓特消息同步到新浪微博

  1. 注意事项:
    1. 本程序自动将颓特消息同步到新浪微博上。
    2. 友情提示:太频繁的更新或许会被新浪block帐户。
    3. 其实步骤挺简单的,如果您觉得篇幅太长,细节太多,请原谅我的表达能力太弱。如果您对于某步骤觉得不清晰,可留言告诉我,第某点某步出错,出错信息是什么,我相应作答。
    4. 程序每分钟运行一次,每次至多取20条颓特消息。如果您的消息数大于此,请留言,我单独为您修改程序。
    5. 程序自动忽视@开头的消息。
    6. 一则颓特已是墙外之物,二则sina并没有完全开放。因此程序虽可免费自由使用,但请不要高调宣传。本文只显示和回复技术类留言。谢谢合作。
  2. 准备GAE账户。
    如果您没有多余的GAE账户,可以在这里申请。一个手机号只能用一次。请记下您申请的账号名称备用。本文假定您申请的ID为twitter2sina。新手可参考教程:Google App Engine服务申请教程
  3. 准备python环境。
    推荐使用python2.5,linux系统一般自带。windows用户可在activestate下载。
    在windows下安装python,默认安装即可。我的安装目录是D:\IDE\Python25。
    安装python后,请在命令行中测试以下命令:python –version 或python -V。我的windowsXP显示的是2.5.2。如果显示找不到命令行,可以在桌面右击“我的电脑”图标,属性->高级->环境变量->系统变量->Path->编辑,在“变量值”末尾加上";D:\IDE\Python25"或者您自己的目录。其中的分号是为了与前面的变量分隔开。设置后重启机器。
    我没试过Mac系统。深柳堂:使用GAE将颓特消息同步到新浪微博
  4. 准备GAE开发环境
    可以在这里下载。目前最新版本是1.2.5。如果您电脑上的GAE版本低于1.2.5,请务必覆盖升级。GAE自1.2.5版支持Referer,这在程序中至关重要。
    默认安装即可。本人选择的目录是D:\Program Files\Google。
  5. 下载程序源码。
    源码在这里
    解压后,放在这里:D:\Program Files\Google\google_appengine。此时的目录结构应该是:
    D:\Program Files\Google\google_appengine\twitter2sina\,该目录里是相应文档。
  6. 修改程序。
    1. 修改程序ID号。
      打开D:\Program Files\Google\google_appengine\twitter2sina\app.yaml文件,将第一行的application: twitter2sina中的twitter2sina修改为您自己申请的ID号。
      要点1:不要使用记事本(notepad),可使用vim/ultraedit/editplus等等程序专用的文本编辑器。
      要点2:application: twitter2sina中,冒号后有一个半角空格。保存退出。
    2. 修改文件:D:\Program Files\Google\google_appengine\twitter2sina\main.py
      parseTwitter(twitter_id="zhasm",sina_id="zhasm",sina_sn="**********",since_id=latest)
      依次修改twitter_id="zhasm",sina_id="zhasm",sina_sn="**********"三个字段为您自己的颓特ID、新浪登录名、新浪密码。
      要点1:不要使用记事本(notepad),可使用vim/ultraedit/editplus等等程序专用的文本编辑器。
      要点2:新浪登录名或许不同于您的新浪微博昵称,请留意。
  7. 上传程序
    1. 打开命令行窗口(windows下win+r键,然后cmd,然后回车),输入"cd D:\Program Files\Google\google_appengine",到GAE所在的目录。
    2. 使用命令"python appcfg.py update twitter2sina"上传。
      要点1:提示输入email时,请输入您用于申请GAE 账户的gmail 地址。
      要点2:提示输入密码时,请输入上述邮箱的密码。为安全起见,程序不显示密码。如果输入错误可按Backspace修正,如果输入正确直接按回车。

至此完工。

2009年9月10日10:46
  • 2009年9月11日00:07 | #1

    友情提示下,在新浪微博更新过快会被当作SPAM,因此控制好节奏

    • rex
      2009年9月12日10:41 | #2

      幸亏我不是话痨。呵呵。

  • 潜行者
    2009年9月11日12:39 | #3

    为何我用gvim打开app.yaml不会彩色显示,就象记事本显示效果一样,由于不会用gvim,还是用记事本编辑了。

    • rex
      2009年9月12日10:41 | #4

      之所以不推荐记事本,是因为有时折行不正确。颜色倒在其次。

  • 2009年9月13日21:44 | #5

    如果能直接上传代码就方便了,这样还要先建立一个开发环境,凭空多了很多麻烦。

    • rex
      2009年9月14日08:52 | #6

      的确是这样。它是为开发人员准备的,而不是为一般用户。因此的确麻烦。

  • 潜行者
    2009年9月14日09:03 | #7

    这篇文章里有提到一个程序,可以直接上传而不需要GAE开发环境,前几天想用的时候却总是下载失败,今天再下载时成功了。http://puppyguy.org/archives/641.html

  • 小卒
    2009年9月15日16:53 | #8

    我想知道
    https://login.sina.com.cn/sso/login.php?username=%s&password=%s&returntype=TEXT
    http://t.sina.com.cn/mblog/publish.php
    是怎么得来的啊。知道这个的话岂不是很多网站都很好玩了

    • 深柳堂主
      2009年9月16日23:22 | #9

      试一下firefox的插件httpfox.

  • 2009年10月25日23:07 | #10

    请问可以修改twitter信息的头部吗?
    比如把”用户名:”去掉,加上[TW],表示这是来自twitter的信息

    • rex
      2009年10月27日10:52 | #11

      可以的。在合适的地方添加字串即可。

  • 2009年10月26日02:03 | #12

    貌似不起作用.

  • 2009年10月26日14:37 | #13

    貌似出现了很多错误,一条都没有成功过.
    下面是GAE给的错误信息:

    E 10-25 11:33PM 06.062
    : global name ‘htmlentitydefs’ is not defined
    Traceback (most recent call last):
    File “/base/data/home/apps/seon-t-s/twitter-sina-20090909.337287446539184463/main.py”, line 130, in
    parseTwitter(twitter_id=”shiqianlu”,sina_id=”shiqianlu”,sina_sn=”隐藏”,since_id=latest)
    File “/base/data/home/apps/seon-t-s/twitter-sina-20090909.337287446539184463/main.py”, line 102, in parseTwitter
    text=unescape(x[1])
    File “/base/data/home/apps/seon-t-s/twitter-sina-20090909.337287446539184463/main.py”, line 84, in unescape
    return re.sub(“&#?\w+;”, fixup, text)
    File “/base/python_dist/lib/python2.5/re.py”, line 150, in sub
    return _compile(pattern, 0).sub(repl, string, count)
    File “/base/data/home/apps/seon-t-s/twitter-sina-20090909.337287446539184463/main.py”, line 79, in fixup
    text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])

    能帮忙看一下是哪里不对吗?

    • rex
      2009年10月27日10:56 | #14

      哦,没有出现过类似错误提示。有时间gtalk上聊一下。我的是rex[at]zhasm[dot]com。

  • 2009年10月30日00:42 | #15

    呵呵,犯了一个低级错误.
    现在成功了.万分感谢博主!

  • maxwell
    2009年10月30日09:56 | #16

    你好!
    请问有没有办法从twitter同步到嘀咕呢?

    • 2009年11月8日17:29 | #17

      建议同步到9911(博主有一篇同步到9911的文章) 然后再到 嘀咕

  • 2009年11月8日17:27 | #18

    可不可以把 RT 的内容也去掉

  • Aliaosha
    2009年11月8日18:06 | #19

    好复杂

  • headpin
    2009年11月9日00:41 | #20

    为什么显示get twitter data error

  • headpin
    2009年11月9日00:48 | #21

    我的twitter的id有下划线,怎么办啊?

  • bluemarsfeifei
    2009年11月16日08:27 | #22

    在上传程序,upload twitter2sina的时候,命令行提示“AttributeError:(module)object has no Attribute “HTTPShandler””

    请问这是怎么回事?我现在的GAE是1.2.7的。

  • 2009年11月17日18:11 | #23

    几天前还正常使用,这三天已经不同步了,也不更新了,是不是已经失效了?

    • rex
      2009年11月21日09:12 | #24

      GAE不稳定,经常出故障。我也遇到过。

  • ji_laizhi
    2009年12月7日21:19 | #25

    请问如果我想把同步的间隔从1分钟改成5分钟,应该在什么地方修改?

    • rex
      2009年12月7日23:22 | #26

      目录下有个cron.yaml文件,将1 mins改为5 mins即可。

  • 2009年12月8日11:54 | #27

    我上传的时候总是出现的错误是 not a directory

    • 深柳堂主
      2009年12月8日12:29 | #28

      没有遇到这个问题。建议的解决方法:在适当位置加上try…except语句,以便调试出从哪里出错。

  • ji_laizhi
    2009年12月8日22:57 | #29

    博主你好,从今天(12月8日)晚上7点半开始程序执行突然出现了问题,没法正常同步了。好像是连续发了两条。但是在新浪网页上还是可以正常发。下面是GAE上的错误信息。请您帮忙分析一下!
    : global name ‘htmlentitydefs’ is not defined
    Traceback (most recent call last):
    File “/base/data/home/apps/jilaizhidesktop/twitter2sina-20090909.338277243387452741/main.py”, line 130, in
    parseTwitter(twitter_id=”*****”,sina_id=”*****”,sina_sn=”*****”,since_id=latest)
    File “/base/data/home/apps/jilaizhidesktop/twitter2sina-20090909.338277243387452741/main.py”, line 102, in parseTwitter
    text=unescape(x[1])
    File “/base/data/home/apps/jilaizhidesktop/twitter2sina-20090909.338277243387452741/main.py”, line 84, in unescape
    return re.sub(“&#?\w+;”, fixup, text)
    File “/base/python_dist/lib/python2.5/re.py”, line 150, in sub
    return _compile(pattern, 0).sub(repl, string, count)
    File “/base/data/home/apps/jilaizhidesktop/twitter2sina-20090909.338277243387452741/main.py”, line 79, in fixup
    text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])

    谢谢博主!

  • ji_laizhi
    2009年12月9日00:09 | #30

    博主你好,我看到了上面shqianlu朋友的问题与我相同,是否因为这个把我的回复删掉了?我想请问这个问题是否已经解决掉了?我出现这个问题之前连续发了两条推。

  • ji_laizhi
    2009年12月9日01:04 | #31

    博主你好,我在GAE上重新开了一个application,用了新的名字,重新上传了程序。这次不再报错,但是也没有能将推同步到新浪微博。微博上看不到更新。不好意思占用您的版面空间!

    • rex
      2009年12月10日22:12 | #32

      不好意思,一直没有回复您:)

      • ji_laizhi
        2009年12月12日02:36 | #33

        博主你好,我才刚刚刷出您的回复。我新开的App目前运行三天,没有能够把任何一条推同步到新浪上。我想问这个是程序的问题,GAE的问题还是新浪把来自GAE的消息封掉了?有没有什么解决方案?

  • ji_laizhi
    2009年12月15日01:25 | #34

    博主能否回复我一下?我已经一个星期不能同步了。上网上搜其他的方法,大都要用到嘀咕,但现在嘀咕好像也上不了。请您告诉我解决方案,谢谢!

  • lingbaoboy
    2010年1月7日17:26 | #35

    使用命令”python appcfg.py update twitter2sina”上传。

    这一步有错误
    应该的命令是使用命令”appcfg.py update twitter2sina”上传。

    • rex
      2010年1月7日23:47 | #36

      原理是这样的,如果是在linux下,.py文件第一行指定了程序目录,例如#!/usr/bin/python,而且该脚本具有可执行权限(chmod +x),那么appcfg.py update twitter2sina这样操作是没有问题的;

      如果上面的条件不满足,则python appcfg.py update twitter2sina是一种更可靠的方式。

  • 2010年1月7日21:12 | #37

    你的这个程序我用了很长时间,今天才知道是你写的,真的很好用,其实一个GAE ID同步一个Sina微博客很浪费的,能否考虑将嘀咕,做啥这样的微博客统一一起利用GAE更新。我在网上看到一个用PHP代码写的,但是要求Corn调用,这个不会操作。呵呵,只是一个建议,祝博主新年快乐!

    • rex
      2010年1月7日23:50 | #38

      谢谢。

      同步多个微博,与同步一个微博的原理其实是一样的,框架不变,多增加几个源而已。不过,目前我只用twitter,不再用sina 围脖,所以这个程序也就不再提供更新和维护了。程序是开放的,谁愿意怎么折腾都可以。

      回祝新年快乐。

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">