2011年3月2日星期三

[GFW BLOG(功夫网与翻墙)] 用Python实现从命令行发twitter

来源: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.程序代码

点击这里下载程序代码。

01 # -*- coding: utf-8 -*-
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,获取最新翻墙工具和翻墙技巧信息。




--
Posted By GFW BLOG 功夫网与翻墙 to GFW BLOG(功夫网与翻墙) at 3/02/2011 08:14:00 AM

--
1、我们的订阅地址:http://feeds2.feedburner.com/chinagfwblog。2、发一封标题为GFW的邮件到fanqiang70ma@gmail.com,就可获取翻墙利器赛风新地址。附《数字时代》赠阅版。3、本站热烈欢迎各位朋友投稿或推荐文章,请发邮件至chinagfwblog[at]gmail.com。
停止订阅,请发邮件到
gfw-blog+unsubscribe@googlegroups.com

没有评论:

发表评论