Beispiel #1
0
    def save_book_info_to_db(self, info):
        '''保存书本信息到数据库'''
        logging.info('保存<<{}>>信息到数据库'.format(info['name']))

        author = self.save_or_get_author_db(info)

        book = self.book
        if not self.book:
            lock.acquire()
            try:
                books = Book.normal.filter(title=info['name'],
                                           author=author,
                                           book_type=self.book_type)
                if books.count() > 0:
                    book = books[0]
                    for book in books[1:]:
                        book.delete()
                else:
                    book = Book()

                if not book.desc:
                    book.book_type = self.book_type
                    book.title = info.get('name')
                    book.author = author
                    book.desc = info.get('desc')
                    book.markeup = info.get('markeup')
                    book.origin_addr = self.url
                    book.on_shelf = self.on_shelf
                    book.save()
            finally:
                lock.release()
        self.book = book
        return book
Beispiel #2
0
    def _save_comic_db(self, info):
        logger.info('_save_comic_db')

        comic = Book.normal.filter(title=info['name'],
                                   book_type=BOOK_TYPE_DESC.Comic).first()
        if not comic:
            comic = Book()
        comic.book_type = BOOK_TYPE_DESC.Comic
        comic.title = info.get('name')
        comic.author_id = self._save_or_get_author_db(info)
        comic.desc = info.get('desc')
        comic.markeup = info.get('markeup')
        comic.title = info.get('name')
        comic.origin_addr = self.url
        comic.save()
        if isinstance(info['cover'], list):
            logger.info('_save_comic_db run loop')
            for index, url in enumerate(info['cover'], 1):
                info = self._save_image_disk(url)
                img, flag = Image.normal.get_or_create(
                    img_type=IMAGE_TYPE_DESC.COVER,
                    key=info['id'],
                    name=info['name'])
                logger.info('_save_comic_db run loop,{}==={}==={}'.format(
                    comic, info, img))
                comic.cover.add(img)

        else:
            info = self._save_image_disk(info['cover'])
            # img = Image(img_type=IMAGE_TYPE_DESC.COMIC_COVER, key=info['id'], name=info['name']).save()
            img, flag = Image.normal.get_or_create(
                img_type=IMAGE_TYPE_DESC.COVER,
                key=info['id'],
                name=info['name'])
            logger.info('_save_comic_db run singal,{}==={}==={}'.format(
                comic, info, img))
            comic.cover.add(img)
        comic.save()
        return comic