def details_page(request,book_isbn): ''' details page of news ''' # judge if use mobile device #print request.META['HTTP_USER_AGENT'] # get book messages by book id(ISBN) rapi = RequestService_douban() book_message = rapi.search_book_by_isbn(book_isbn) book_id = book_message['id'] request.session['book_id'] = book_id request.session['book_title'] = book_message['title'] c = { # get book_message from douban API 'tags':book_message['tags'], 'cover':book_message['images']['large'], 'title':book_message['title'], 'author':book_message['author'], 'publisher':book_message['publisher'], 'price':book_message['price'], 'rating':book_message['rating'], 'author_intro':book_message['author_intro'], 'summary':book_message['summary'], 'id':book_message['id'], # get book_message from spider 'rating_details':1, } return render_to_response('details_page.html',c,context_instance=RequestContext(request))
def get_view_history_from_cookie(request): isbn_list = get_history_from_cookie(request,type='view') rapi = RequestService_douban() book_message_dict = {} book_message_json = [] tmp_dict = {} for book_isbn in simplejson.loads(isbn_list.content): book_message_dict = rapi.search_book_by_isbn(book_isbn) tmp_dict = { 'cover':book_message_dict['images']['large'], 'title':book_message_dict['title'], 'author':book_message_dict['author'], 'publisher':book_message_dict['publisher'], 'pub_date':book_message_dict['pubdate'], 'price':book_message_dict['price'], 'isbn':str(book_message_dict['isbn13']) if book_message_dict.has_key('isbn13') else book_message_dict['isbn10'], } book_message_json.append(tmp_dict) return HttpResponse(simplejson.dumps(book_message_json))
def get_ratings(request): ''' get book ratings via spider ''' book_id = request.session['book_id'] rapi = RequestService_douban() ratings = rapi.get_ratings(book_id) return HttpResponse(ratings,content_type='application/javascript')
def get_book_message(request,book_name): ''' get book message from douban api ''' rapi = RequestService_douban() book_message_dict = {} book_message_for_xml = {} book_message_dict = rapi.search_books(unicode(book_name).encode('utf-8')) book_message_for_xml.update({'title':book_message_dict['books'][0]['title']}) book_message_for_xml.update({'description':book_message_dict['books'][0]['summary']}) book_message_for_xml.update({'picture_url':book_message_dict['books'][0]['images']['large']}) # book id now is ISBN book_message_for_xml.update({'book_id':str(book_message_dict['books'][0]['isbn13'])}) return book_message_for_xml
def get_book_reviews_by_offset_douban(request,is_offset=0): if not is_offset: request.session['next_offset_douban'] = 1 else: request.session['next_offset_douban'] += 5 book_id = request.session['book_id'] rapi = RequestService_douban() book_reviews = rapi.get_book_reviews(book_id.encode('utf-8'),offset=request.session['next_offset_douban']) reviews = [] reg_exp = re.compile(r'(\d+\-\d+\-\d+).*?(\d+\:\d+)\:') for book_review in book_reviews['entry']: reg_result = reg_exp.match(book_review['published']['texts']) published = reg_result.group(1) + ' ' + reg_result.group(2) author_image = book_review['author']['link'][2]['href']#.replace(r'/u',r'/ul') review = { 'author_image' : author_image, 'author_name' : book_review['author']['name']['texts'], 'title' : book_review['title']['texts'], # 用户可能没有星评,所以给个默认值5 'rating' : (book_review['rating']['value'] if book_review.has_key('rating') else 5), 'published' : published, 'summary' : book_review['summary']['texts'], # 默认头像链接为http://img3.douban.com/icon/uxxx,大图为http://img3.douban.com/icon/ulxxx 'link' : book_review['link'][1]['href'], 'votes' : book_review['votes']['value'], 'useless' : book_review['useless']['value'], } reviews.append(review) c = { 'reviews':reviews, } return render_to_response('third_party_content/book_reviews_douban.html',c)
def get_books_by_offset(request,search_string='百年孤独',is_offset=0,is_gession=0): ''' get books by offset ''' if not int(is_offset): request.session['next_offset'] = 0 if int(is_gession): limit = 3 else: limit = 10 else: request.session['next_offset'] += 10 limit = 10 rapi = RequestService_douban() book_message_dict = {} book_message_dict = rapi.search_books(unicode(search_string).encode('utf-8'),offset=request.session['next_offset'],limit=limit) return book_message_dict