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


友情提示下,在新浪微博更新过快会被当作SPAM,因此控制好节奏
幸亏我不是话痨。呵呵。
为何我用gvim打开app.yaml不会彩色显示,就象记事本显示效果一样,由于不会用gvim,还是用记事本编辑了。
之所以不推荐记事本,是因为有时折行不正确。颜色倒在其次。
如果能直接上传代码就方便了,这样还要先建立一个开发环境,凭空多了很多麻烦。
的确是这样。它是为开发人员准备的,而不是为一般用户。因此的确麻烦。
这篇文章里有提到一个程序,可以直接上传而不需要GAE开发环境,前几天想用的时候却总是下载失败,今天再下载时成功了。http://puppyguy.org/archives/641.html
我想知道
https://login.sina.com.cn/sso/login.php?username=%s&password=%s&returntype=TEXT
http://t.sina.com.cn/mblog/publish.php
是怎么得来的啊。知道这个的话岂不是很多网站都很好玩了
试一下firefox的插件httpfox.
请问可以修改twitter信息的头部吗?
比如把”用户名:”去掉,加上[TW],表示这是来自twitter的信息
可以的。在合适的地方添加字串即可。
貌似不起作用.
貌似出现了很多错误,一条都没有成功过.
下面是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]])
能帮忙看一下是哪里不对吗?
哦,没有出现过类似错误提示。有时间gtalk上聊一下。我的是rex[at]zhasm[dot]com。
呵呵,犯了一个低级错误.
现在成功了.万分感谢博主!
你好!
请问有没有办法从twitter同步到嘀咕呢?
建议同步到9911(博主有一篇同步到9911的文章) 然后再到 嘀咕
可不可以把 RT 的内容也去掉
好复杂
为什么显示get twitter data error
我的twitter的id有下划线,怎么办啊?
在上传程序,upload twitter2sina的时候,命令行提示“AttributeError:(module)object has no Attribute “HTTPShandler””
请问这是怎么回事?我现在的GAE是1.2.7的。
几天前还正常使用,这三天已经不同步了,也不更新了,是不是已经失效了?
GAE不稳定,经常出故障。我也遇到过。
请问如果我想把同步的间隔从1分钟改成5分钟,应该在什么地方修改?
目录下有个cron.yaml文件,将1 mins改为5 mins即可。
我上传的时候总是出现的错误是 not a directory
没有遇到这个问题。建议的解决方法:在适当位置加上try…except语句,以便调试出从哪里出错。
博主你好,从今天(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]])
谢谢博主!
博主你好,我看到了上面shqianlu朋友的问题与我相同,是否因为这个把我的回复删掉了?我想请问这个问题是否已经解决掉了?我出现这个问题之前连续发了两条推。
博主你好,我在GAE上重新开了一个application,用了新的名字,重新上传了程序。这次不再报错,但是也没有能将推同步到新浪微博。微博上看不到更新。不好意思占用您的版面空间!
不好意思,一直没有回复您:)
博主你好,我才刚刚刷出您的回复。我新开的App目前运行三天,没有能够把任何一条推同步到新浪上。我想问这个是程序的问题,GAE的问题还是新浪把来自GAE的消息封掉了?有没有什么解决方案?
博主能否回复我一下?我已经一个星期不能同步了。上网上搜其他的方法,大都要用到嘀咕,但现在嘀咕好像也上不了。请您告诉我解决方案,谢谢!
使用命令”python appcfg.py update twitter2sina”上传。
这一步有错误
应该的命令是使用命令”appcfg.py update twitter2sina”上传。
原理是这样的,如果是在linux下,.py文件第一行指定了程序目录,例如#!/usr/bin/python,而且该脚本具有可执行权限(chmod +x),那么appcfg.py update twitter2sina这样操作是没有问题的;
如果上面的条件不满足,则python appcfg.py update twitter2sina是一种更可靠的方式。
你的这个程序我用了很长时间,今天才知道是你写的,真的很好用,其实一个GAE ID同步一个Sina微博客很浪费的,能否考虑将嘀咕,做啥这样的微博客统一一起利用GAE更新。我在网上看到一个用PHP代码写的,但是要求Corn调用,这个不会操作。呵呵,只是一个建议,祝博主新年快乐!
谢谢。
同步多个微博,与同步一个微博的原理其实是一样的,框架不变,多增加几个源而已。不过,目前我只用twitter,不再用sina 围脖,所以这个程序也就不再提供更新和维护了。程序是开放的,谁愿意怎么折腾都可以。
回祝新年快乐。