import os
|
|
import sqlite3 as sqlite
|
|
import random
|
|
import base64
|
|
import simplejson as json
|
|
|
|
|
|
class Book:
|
|
id: str
|
|
title: str
|
|
author: str
|
|
publisher: str
|
|
original_title: str
|
|
translator: str
|
|
pub_year: str
|
|
pages: int
|
|
price: int
|
|
binding: str
|
|
isbn: str
|
|
author_intro: str
|
|
book_intro: str
|
|
content: str
|
|
tags: [str]
|
|
pictures: [bytes]
|
|
|
|
def __init__(self):
|
|
self.tags = []
|
|
self.pictures = []
|
|
|
|
|
|
class BookDB:
|
|
def __init__(self, large: bool = False):
|
|
parent_path = os.path.dirname(os.path.dirname(__file__))
|
|
self.db_s = os.path.join(parent_path, "data/book.db")
|
|
self.db_l = os.path.join(parent_path, "data/book_lx.db")
|
|
if large:
|
|
self.book_db = self.db_l
|
|
else:
|
|
self.book_db = self.db_s
|
|
|
|
def get_book_count(self):
|
|
conn = sqlite.connect(self.book_db)
|
|
cursor = conn.execute(
|
|
"SELECT count(id) FROM book")
|
|
row = cursor.fetchone()
|
|
return row[0]
|
|
|
|
def get_book_info(self, start, size) -> [Book]:
|
|
books = []
|
|
conn = sqlite.connect(self.book_db)
|
|
cursor = conn.execute(
|
|
"SELECT id, title, author, "
|
|
"publisher, original_title, "
|
|
"translator, pub_year, pages, "
|
|
"price, currency_unit, binding, "
|
|
"isbn, author_intro, book_intro, "
|
|
"content, tags, picture FROM book ORDER BY id "
|
|
"LIMIT ? OFFSET ?", (size, start))
|
|
for row in cursor:
|
|
book = Book()
|
|
book.id = row[0]
|
|
book.title = row[1]
|
|
book.author = row[2]
|
|
book.publisher = row[3]
|
|
book.original_title = row[4]
|
|
book.translator = row[5]
|
|
book.pub_year = row[6]
|
|
book.pages = row[7]
|
|
book.price = row[8]
|
|
|
|
book.currency_unit = row[9]
|
|
book.binding = row[10]
|
|
book.isbn = row[11]
|
|
book.author_intro = row[12]
|
|
book.book_intro = row[13]
|
|
book.content = row[14]
|
|
tags = row[15]
|
|
|
|
picture = row[16]
|
|
|
|
for tag in tags.split("\n"):
|
|
if tag.strip() != "":
|
|
book.tags.append(tag)
|
|
for i in range(0, random.randint(0, 9)):
|
|
if picture is not None:
|
|
encode_str = base64.b64encode(picture).decode('utf-8')
|
|
book.pictures.append(encode_str)
|
|
books.append(book)
|
|
# print(tags.decode('utf-8'))
|
|
|
|
# print(book.tags, len(book.picture))
|
|
# print(book)
|
|
# print(tags)
|
|
|
|
return books
|
|
|
|
|