用Python开发可用于iPhone的Google Reader API

标签: python google reader api iphone | 发表时间:2011-07-13 08:12 | 作者:笑傲狂歌 MadFrog
出处:http://blog.letaoba.info

Google Reader是我最喜欢的web服务,可惜在iPhone上没有一个我理想中的客户端,所以只好自己动手丰衣足食了。
而开发的第一步自然就是搞定Google Reader API,可惜Google一直没有放出官方文档。所幸的是前人已经通过反向工程探寻出了相关信息(GoogleReaderAPIUsing the Google Reader APIGReader-Cocoa等),所以不用自己去一一摸索了。
不过文档有点老了,这期间Google也稍微改了一些东西,所以还需要稍作修正。

由于现在手头上没有Mac,所以就不用Objective-C,而拿Python来演示。这样代码量也会少很多,逻辑显得更加清晰。

在访问之前需要证明你的身份,所以先去https://www.google.com/accounts/ClientLogin获取登录凭证。
此处需要POST 3个字段:service为’reader’,Email为Google账号,Passwd为密码。此外还可以附加source字段用于标明你的客户端,其中网页版是’scroll’,iOS网页版是’mobilescroll’,你可以随意改成其他字符串。

from urllib import urlencode from urllib2 import urlopen, Request LOGIN_URL = 'https://www.google.com/accounts/ClientLogin' EMAIL = '你的邮箱' PASSWORD = '你的密码' request = Request(LOGIN_URL, urlencode({ 'service': 'reader', 'Email': EMAIL, 'Passwd': PASSWORD, 'source': 'mobilescroll' })) f = urlopen(request)

然后会拿到这样一串字符串,一共3行:

SID=…
LSID=…
Auth=…

这里我们需要SID和Auth,它们应该是不会过期的,除非退出登录:

lines = f.read().split() sid = lines[0] auth = lines[2][5:]

拿到这2个字段后就可以使用Google Reader API了。具体方法就是访问API地址(见GoogleReaderAPI文档),然后把SID作为cookie,Auth作为Authorization。
例如获取订阅列表:

headers = {'Authorization': 'GoogleLogin auth=' + auth, 'Cookie': sid} request = Request('https://www.google.com/reader/api/0/subscription/list?output=json', headers=headers) f = urlopen(request) print f.read()

就会拿到如下的信息:

{“subscriptions”:[{"id":"feed/供稿地址","title":"供稿名","categories":[{"id":"user/Google Reader用户ID/label/分类名","label":"分类名"}],”sortid”:”不知道啥玩意”,”firstitemmsec”:”第一个条目的时间戳”,”htmlUrl”:”供稿的网站地址”},…(其他供稿的信息)]}

不过如果要修改的话(一般是POST请求),还需要一个token参数。这个token与SID和Auth不同,它很容易过期。因此如果失效了,需要再次请求一个。
请求的地址是http[s]://www.google.com/reader/api/0/token,它可以附带2个可选的GET参数:ck是时间戳,client是客户端名称。

request = Request('https://www.google.com/reader/api/0/token', headers=headers) f = urlopen(request) token = f.read()

拿到token后就可以进行订阅等操作了,例如订阅本站:

request = Request('https://www.google.com/reader/api/0/subscription/quickadd?output=json', urlencode({ 'quickadd': 'http://blog.letaoba.info/feed', 'T': token }), headers=headers) f = urlopen(request) print f.read()

会拿到这样的结果:

{“query”:”http://blog.letaoba.info/feed”,”numResults”:1,”streamId”:”feed/http://blog.letaoba.info/feed”}

再去看看你的Google Reader,应该就订阅好本站了。

来源:keakon的涂鸦馆

您可能也喜欢:

用Python和Pygame写游戏-从入门到精通

不看好google+

美国用户的角度看社交网站的差异

什么是沙盒技术

Avira Premium Security Suite v10(小红伞安全套装)三个月免费KEY申请

来自无觅网络的相关文章:

DIY狡猾的案件 - Neostitch iPhone 4例丝锥你内心的奶奶技能(图库) (@chuangyix)

iPhone版Google+发布 (@tourmsg)

Google+ iPhone版通过 Safari浏览器流畅运行 (@seoued)

google向中小企业广告客户推AdWords信用卡服务 (@seoued)

谷奥: Doug Edwards 新书里揭露的 10 个 Google 早期趣闻 (@laozhai)
无觅

相关 [python 开发 iphone] 推荐:

用Python开发可用于iPhone的Google Reader API

- MadFrog - 乱弹琵琶playit
Google Reader是我最喜欢的web服务,可惜在iPhone上没有一个我理想中的客户端,所以只好自己动手丰衣足食了. 而开发的第一步自然就是搞定Google Reader API,可惜Google一直没有放出官方文档. 所幸的是前人已经通过反向工程探寻出了相关信息(GoogleReaderAPI、Using the Google Reader API和GReader-Cocoa等),所以不用自己去一一摸索了.

iPhone开发资源汇总

- 圣斌 - Starming星光社最新更新
这里总结了iPhone开发者开发过程中可能需要的一些资源. 如何用Facebook graphic api上传视频:. Keychain保存数据封装:. 自定义圆角Switch按件:. 弹出窗口For iphone and ipad:. 可伸缩的toolBar实例:. cocos2d中也可用UIScrollView,UITableView,UIGestureRecognizers.

PyCon China - 首届中国Python开发者大会

- Dexter.Yy - pycon.51qiangzuo.com
为什么我一来帝都⋯⋯各种活动就都跑到魔都杭州广州去了⋯⋯. 世界Python开发者的盛会PyCon首次落地中国,由Python软件基金会下的PyCon.Org授权中国办第一次PyCon China Conference. 本次大会由GTUG, TopGeek,CPyUG联合举办. žPyCon.Org是举办Python语言的国际性社区,在世界各地举办Python大会,是Python 爱好者的盛会,对推动Python在各地的发展有深远的影响.

“PyCon China - 首届中国Python开发者大会”开始报名

- jeff - python.cn(jobs, news)
# 来源 + 报名地址:http://pycon.51qiangzuo.com/. 世界Python开发者的盛会PyCon首次落地中国,由Python软件基金会下的PyCon.Org授权中国办第一次PyCon China Conference. 本次大会由GTUG, TopGeek,CPyUG联合举办.

学习python语言来快速开发web(一)

- - ITeye博客
安装python到windows.    下载http://www.python.org/download/releases/2.7.6/.   安装到d:\python. 安装eclipse和python插件pydev.    后者可以方便在eclipse这个熟悉的强大的ide中开发python程序.

用Python+Django在Eclipse环境下开发web网站 - Ruthless

- - 博客园_Ruthless
如果这是你第一次使用Django,那么你必须进行一些初始设置. 也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置、Django详细选项设置和应用特性配置,具体操作步骤如下所示. 1.新建Django项目. 3.测试新建的模块是否正常. 服务器启动起来后,去浏览器输入网址:http://127.0.0.1:8000,你会看到一个令人愉悦的,柔和的淡蓝色 “Welcome to Django” 页面.

Python超级程序员使用的开发工具

- - 外刊IT评论网
我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题:. 你在项目中使用的电脑是怎样的. 有什么给Python程序员的建议. 就是这几个问题,我找了几个顶尖的程序员和编程书籍作家,问他们这几个相同的问题. 下面是他们的回答,希望在他们的回答中你能找到一些可以让你的开发更便捷的工具.

10个用于Web开发的最好 Python 框架

- - 淡忘~浅思
Python 是一门动态、面向对象语言. 其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性. 除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还自带服务器. 其它方面,Python拥有足够多的免费数据函数库、免费的Web网页模板系统、还有与Web服务 器进行交互的库、这些都可以设计到你的Web应用程序里面.

做一名iPhone自由开发人员

- Kanny - cnBeta.COM
四个月前,我辞掉工作,成为了一名全职的自由职业开发人员. 我创建了自己的网站,注册了公司业务,并开始寻找客户. 我想找的是现在比较感兴趣的iPhone和iPad应用的开发工作. 要找到与iOS相关的开发工作并不难,因为现行市场对手机开发人员的需求量非常大. (注:Freelancer最近的一个调查报告就是证明.

iphone开发小技巧汇总(1)

- - CSDN博客推荐文章
1.iphone之xx_Prefix.pch的作用和用法.     Prefix.pch:扩展名.pch表示"pre-compiled-header",这是一个你工程要用到的 来自于外部框架的头文件列表. xcode将编译这些头到文件,这将减少你在选择Build或Build and Go时编译项目的时间.