来源:http://micbase.com/send-twitter-by-python/
比如我在写程序,突然来了个灵感,想发推。这时,停下手头的工作,打开firefox,上twitter.com,选中输入框,输入,tweet。 看起来简单,但实际上打断了我写程序的思路,一看到Timeline,就想着往下翻,手头的工作就不要做了。发推应该就跟说话一样简单,不需要那么多步 骤。所以,我折腾出了用命令行发推。其实类似的软件或脚本应该有很多,但我觉得我这个还是比较简单的。
从2010年8月31号开始,twitter停止了原先的Basic认证方式,改由OAuth认证。这种认证初看会觉得很复杂,几个token发来 发去。简化他有两个办法,第一,官方提供基于OAuth认证的library,各种语言都有,直接拿来用就是;第二,对于单一用户,不用完整实现 OAuth功能,官方可以提供最终的access_token。
本文就是基于第二点做的,而且这个方法具有普遍性。很多情况是这样:你在GAE上建了一个gtap来做twitter API,或者GTalk机器人来发推,但实际上,这些服务很有可能只有你自己在使用。这时,你就可以直接从官方获取access_token来进行操作。
1.准备工作
首先你要有一个twitter app,这里有一段文字讲如何注册应用。
https://dev.twitter.com/apps 从这里进入,选择你的应用,记录下Consumer key和Consumer secret。
然后点右边的“My Access Token”,记录下里面的oauth_token和oauth_token_secret。
获得这四个值,你就可以控制你自己的twitter帐号了。
2.获取oauth2库
这是官方推荐的一个OAuth认证库,这里使用easy_install来安装。
如果没有easy_install,请先安装,当然python你肯定要装。
apt-get install python-setuptools
Windows用户可以先去Google搜一个ez_setup.py的脚本,执行后就自动装好了。
装好easy_install后执行:
easy_install oauth2
3.程序代码
点击这里下载程序代码。
02
03 import oauth2 as oauth
04 import urllib
05 import sys
06
07 def oauth_req(url, http_method=“GET”, post_body=None, http_headers=None):
08 consumer = oauth.Consumer(key=“Consumer key”, secret=“Consumer secret”)
09 token = oauth.Token(key=“oauth_token”, secret=“oauth_token_secret”)
10 client = oauth.Client(consumer, token)
11
12 resp, content = client.request(
13 url,
14 method=http_method,
15 body=post_body,
16 headers=http_headers
17 )
18 return content
19
20 if len(sys.argv) == 2:
21 #For Windows
22 #a = “status=” + urllib.quote(sys.argv[1].decode('gb2312').encode(‘utf-8′))
23 #For Linux
24 a = “status=” + urllib.quote(sys.argv[1])
25 print “Tweeting…”
26 req = oauth_req(
27 ‘http://api.twitter.com/1/statuses/update.xml‘,
28 ‘POST’,
29 a)
30 #print req
31 print “Done.”
32 else :
33 print “Error Parameter”
Windows下的命令行不是UTF8编码,所以要转换一下。
另外,不同系统下请使用相应的代码。然后把上面的四个值替换成从第一步获取的值。
4.使用
在命令行下执行
python t.py “从命令行发推测试”
你如果还嫌前面的python麻烦,那就写个shell脚本替代吧。如果你还问为什么没有看TL、fo人、RT功能。我做这个东西的目的就是在不打 断思路的前提下去发个推,仅此而已。如果你都想到了要RT某某推,那还是去官网或者其他客户端吧,这时你已经没心思在手头工作上了,就谈不上不打断思路。
5.参考资料
Authenticating Requests with OAuth
Using one access token with OAuth
—————————————————————————————————————————
需要翻墙利器赛风? 请阅读和关注中国数字时代。
推特用户请点击这里免翻墙上推特
请点击这里下载翻墙软件
更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com
请阅读和关注中国数字时代、翻墙技术博客GFW BLOG(免翻墙)
请使用Google Reader订阅中国数字时代中文版(http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。
要翻墙?(发邮件到Gmail):wangluoziyou2011ATgmail.com