def __init__(self, data, detect_reading=""): super(DoubanUser, self).__init__() if isinstance(data, dict): self.id = data["id"] self.data = data elif isinstance(data, str): self.id = data json = DoubanJson("https://api.douban.com/v2/user/{}".format(self.id)) self.data = json.grab() self.books = None if detect_reading: self.get_user_books(status=detect_reading)
def get_user_books(self, status): """ 获取某个用户的所有图书收藏信息 GET https://api.douban.com/v2/book/user/:name/collections status 收藏状态 选填(想读:wish 在读:reading 读过:read)默认为所有状态 tag 收藏标签 选填 rating 星评 选填,数字1~5为合法值,其他信息默认为不区分星评 """ self.books = [] status_param = "status=" + status + "&" if status != "all" else "" for start in range(10): url = "https://api.douban.com/v2/book/user/{}/collections?{}count=100&start={}".format( self.id, status_param, start * 100 ) json = DoubanJson(url) json_books = json.grab()["collections"] self.books.extend([b["book"]["title"] for b in json_books]) if len(json_books) < 100: break return self.books