Beispiel #1
0
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))
Beispiel #2
0
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))
Beispiel #3
0
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')
Beispiel #4
0
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
Beispiel #5
0
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)
Beispiel #6
0
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