昨天下午突发灵感,想整个服务把pocket上的东西转发到kindle上读,于是看了看pocket的api文档就上路了。

加上昨天下午的一个多小时和今天上午的两个小时,pocket的授权和获取所有项的功能算完成了。先短暂记录一下。

pocket的授权用是的oauth v3,官方文档上写的是6步,最后写成代码后,我觉得只是3步:
1. 在pocket上获取consumer_key
1. 用consumer_key来获取request_token
1. 用consumer_key和request_token来获取access_token

三步完事后,就可以用consumer_key和access_token来对用户的内容进行操作了。代码写得随意,但意思应该能看出来:

import requests as rs
import json

CONSUMER_KEY = u'your consummer key'
BASE_URL = u'https://getpocket.com/v3'

def _request(url, data):
    headers = {
        'content-type': 'application/json; UTF-8',
        'X-Accept': 'application/json',
    }
    r = rs.post(BASE_URL + url, data=json.dumps(data), headers=headers)
    if r.status_code != 200:
        return None
    return r.json()

def get_request_code():
    data = {
        'consumer_key': CONSUMER_KEY,
        'redirect_uri': '/manage',
    }
    r = _request('/oauth/request', data)
    if not r: return None
    return r['code']

def get_access_info(req_code):
    data = {
        'consumer_key': CONSUMER_KEY,
        'code': req_code,
    }
    r = _request('/oauth/authorize', data)
    if not r:
        return None, None

    return r['access_token'], r['username']

if __name__=='__main__':
    req_code = get_request_code()
    print req_code

    print get_access_info(req_code)

说实话,在写这个东西的时候,我心里对oauth是有点打怵的,因为以前曾经看过介绍oauth的文档,那叫一个长。。。。但其实原理很复杂,实际用起来的时候还是非常容易的。

后面看到获取文档内容的时候,需要一个article view api,官方文档上写着这个功能不公开,如果想用的话可以申请,随手写了个email发过去,估计肯定审核不过,不过官方上推荐另一个玩意:diffbot,看网站介绍说是比pocket还要强大,在google上看了一些关于这个的访谈,算法还是很有意思的,居然是用计算机视觉技术实现的,不过这东西是收费的,而且相当的贵,所以还是先等等pocket的回信吧-____-


chaoswong
48 声望2 粉丝