diff --git a/app.py b/app.py index 65150d5..7debc4b 100644 --- a/app.py +++ b/app.py @@ -93,7 +93,17 @@ def error(reason) -> Response: return jsonify({'code': 500, 'msg': '服务器内部错误', 'data': None}) -@app.route('/get/log', methods=['GET', 'POST']) +@app.route('/extra/db') +def export_db(): + """ + 导出数据库 + :return: + """ + dir_path = os.path.join(app.root_path, 'bin/db') + return send_from_directory(dir_path, 'count.db', as_attachment=True) + + +@app.route('/extra/log', methods=['GET', 'POST']) def view_log() -> Response: """ 下载日志 diff --git a/bin/db/__init__.py b/bin/db/__init__.py index 66dd024..0237e53 100644 --- a/bin/db/__init__.py +++ b/bin/db/__init__.py @@ -9,7 +9,7 @@ import os from bin.utils.logger import logger -if not os.path.exists('./db/count.db'): +if not os.path.exists('./bin/db/count.db'): logger.error('未检测到用户计数数据库') import sqlite3 conn = sqlite3.connect('./bin/db/count.db', check_same_thread=False) diff --git a/bin/utils/__init__.py b/bin/utils/__init__.py index dd8c1a8..f6a6791 100644 --- a/bin/utils/__init__.py +++ b/bin/utils/__init__.py @@ -59,7 +59,7 @@ class Check: 检验本地文件md5是否和远程md5相同 :return: """ - with open('./db/style.db', 'rb') as fp: + with open('./bin/db/style.db', 'rb') as fp: data = fp.read() local_md5 = hashlib.md5(data).hexdigest() remote_md5 = self.session.get(self.remote_md5).json()['data'][0] @@ -84,9 +84,9 @@ class Check: mtd_list = [] start = 0 end = -1 - with open('./db/style.db', 'w') as initial_file: + with open('./bin/db/style.db', 'w') as initial_file: initial_file.close() - with open('./db/style.db', 'rb+') as f: + with open('./bin/db/style.db', 'rb+') as f: name = 1 fileno = f.fileno() while end < filesize - 1: @@ -115,10 +115,10 @@ class Check: session.trust_env = False logger.info(f'正在使用单线程下载中') resp = session.get(self.assets_url) - with open('./db/style.db', 'wb') as fp: + with open('./bin/db/style.db', 'wb') as fp: fp.write(resp.content) logger.info('下载完成 正在检验文件md5') - with open('./db/style.db', 'rb') as fp: + with open('./bin/db/style.db', 'rb') as fp: data = fp.read() local_md5 = hashlib.md5(data).hexdigest() remote_md5 = session.get('https://themedatabases.vercel.app/md5').json()['data'][0] @@ -132,7 +132,7 @@ class Check: if __name__ != '__main__': - __all__ = ['b64img', 'error', 'logger', 'view'] - if not os.path.exists('./db/style.db'): + __all__ = ['error', 'logger', 'view'] + if not os.path.exists('./bin/db/style.db'): logger.error('没有检测到本地主题数据库即将开始下载') Check().download() diff --git a/bin/utils/error.py b/bin/utils/error.py index b51c0cc..39a5736 100644 --- a/bin/utils/error.py +++ b/bin/utils/error.py @@ -9,14 +9,14 @@ from typing import Optional from flask import jsonify from flask import Response -from bin.db import (update_data, fetch_table) +from bin.db.sqlite import (update_data, fetch_table) class ErrorProcess: """处理错误的页面""" def __init__(self): self.msg_template = {'code': -2, - 'msg': '', + 'msg': Optional[str], 'data': Optional[list]} def get_theme_list(self) -> Response: diff --git a/bin/utils/view.py b/bin/utils/view.py index 0268d64..d4a7c16 100644 --- a/bin/utils/view.py +++ b/bin/utils/view.py @@ -7,8 +7,8 @@ from flask import render_template -from bin.db import fetch_style_data -from bin.db import fetch_table +from bin.db.sqlite import fetch_style_data +from bin.db.sqlite import fetch_table def view_template(style: str, length: int, name: str, count: str) -> str or tuple[bool, str]: