豆瓣API在python中的使用

学习使用豆瓣API中,我们初步使用了豆瓣API。但是,对比python的douban-client的接口和豆瓣API的接口,还是有很大不同的。
就拿 读书 举例,在python的SDK中,只给出了如下示例:

# 以下 id 指图书条目数字 id
# q: 关键词, tag: 标签
获取一本图书信息 client.book.get(id)
通过isbn获取信息 client.book.isbn(isbn_number)
搜索图书信息     client.book.search(q, tag, start, count) 

获取图书标签 client.book.tags(id)
获取用户标签 client.book.tagged_list(user_id)

发表一条书评 client.book.review.new(id, title, content)
更新一条书评 client.book.review.update(review_id, title, content)
删除一条书评 client.book.review.delete(review_id)

可是在对应的图书API,可是给出了很多方法:

说明 HTTP方法 URL path
获取图书信息 GET /v2/book/:id
根据isbn获取图书信息 GET /v2/book/isbn/:name
搜索图书 GET /v2/book/search
获取某个图书中标记最多的标签 GET /v2/book/:id/tags
获取用户对图书的所有标签 GET /v2/book/user/:name/tags
获取某个用户的所有图书收藏信息 GET /v2/book/user/:name/collections
获取用户对某本图书的收藏信息 GET /v2/book/:id/collection
获取某个用户的所有笔记 GET /v2/book/user/:name/annotations
获取某本图书的所有笔记 GET /v2/book/:id/annotations
获取某篇笔记的信息 GET /v2/book/annotation/:id
获取丛书书目信息 GET /v2/book/series/:id/books

至少在python的SDK中没有直接的方法 获取用户的藏书 或 获取用户的笔记 。

再深入看一下douban-client中book的代码

# -*- coding: utf-8 -*-

from .subject import Subject


class Book(Subject):

    target = 'book'

    def __repr__(self):
        return '<DoubanAPI Book>'

    def isbn(self, isbn_id):
        return self._get('/v2/book/isbn/%s' % isbn_id)

就这么十几行。不过,从isbn方法中,我们可以看到获取数据的方法,就是调用_get方法,传递URL path和相应的数据就可以。
这样,我就在应用层中进行尝试,发现果然可以调用_get方法。比如,用如下方法可以看到用户1170656看过的图书

id = '1170656'
result = client.user._get('/v2/book/user/%s/collections' % id, status='read')

参数status参考http://developers.douban.com/wiki/?title=book_v2#get_user_collections

阅读更多
换一批

没有更多推荐了,返回首页