diff --git a/README.md b/README.md
index 8e7f841..9d36a29 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,8 @@
+
+
## Python 版访问次数计数器使用了flask 作为服务端接收请求
* [文档](https://request-counter-docs.vercel.app/#/)
### 开源
@@ -35,7 +37,63 @@
# 一些信息
- 使用了Python3.6 的标准库`Sqlite3`进行数据库操作
+- 当前支持的主题如下
+
+
+foot
+gelbooru
+gelbooruh
+moebooru
+moebooruh
+g
+cripple
+blacked
+allgirl
+rule34
+steambanner
+lefty
+erpg
+crewbooru
+hgoon
+sthg
+rfck
+lisu
+tv
+lewd
+amibooru
+blankatlas
+mmballbusting
+sss
+legolamb
+goldengator
+r6gdrawfriends
+vivi
+twifanartsfw
+hololive
+vglobby
+jaypee
+melanin
+dollstuffing
+orb
+min
+mjg
+cloppers
+townofgravityfalls
+brown
+enacdoa
+daifuku
+straponff
+keyofnik
+osc
+konan
+girlsfeet
+hybreedsgeneral
+sr
+mono
+riskofrain
+neovb
+ffsr
+
-
-
+* 仓库总共约`4.12Mb` `theme.db`占用了`4Mb` ...
\ No newline at end of file
diff --git a/app.py b/app.py
index 5808a69..a13b83c 100644
--- a/app.py
+++ b/app.py
@@ -13,90 +13,14 @@ from flask import request
from flask import Response
from flask import make_response
from flask import send_from_directory
+from bin.core.error import ErrorProcess
from bin.core.render_ import render_temp_
from bin.core.b64img import re_sort_number_image
-from db.db import (fetch_data,
- update_data,
- fetch_table)
+from db.db import fetch_data
app = Flask(__name__)
-
-
-def get_theme_list() -> Response:
- """
- 直接获取可选主题
- :return:
- """
- table_list = fetch_table()
- response = make_response({'code': 200,
- 'msg': '可用主题如下',
- 'themes': table_list})
- response.status_code = 200
- response.headers['Content-Type'] = 'application/json: charset=utf-8'
- response.headers['cache-control'] = 'max-age=0, no-cache, no-store, must-revalidate'
- response.headers['date'] = time.ctime()
- return response
-
-
-def error_theme(theme: str) -> Response:
- """
- 错误的主题
- :param theme:
- :return:
- """
- table_list = fetch_table()
- response = make_response({'code': -2,
- 'msg': f'数据库内没有选择的主题: {theme}. 可用主题如下',
- 'themes': table_list})
- response.status_code = 200
- response.headers['Content-Type'] = 'application/json; charset=utf-8'
- response.headers['cache-control'] = 'max-age=0, no-cache, no-store, must-revalidate'
- response.headers['date'] = time.ctime()
- return response
-
-
-def error_length(length: int) -> Response:
- """
- 数值太长显示此页面
- :param length:
- :return:
- """
- response = make_response({'code': -2,
- 'msg': f'错误的长度: {length}'})
- response.status_code = 200
- response.headers['Content-Type'] = 'application/json; charset=utf-8'
- response.headers['cache-control'] = 'max-age=0, no-cache, no-store, must-revalidate'
- response.headers['date'] = time.ctime()
- return response
-
-
-def too_lang_to_count(name: str) -> Response:
- """
- 数据过长重置数据
- :param name:
- :return:
- """
- update_data(name, 0)
- response = make_response({'code': -2,
- 'msg': '当前长度超过了最大可计数长度:10. 已将重置该名称的计数器'})
- response.headers['Content-Type'] = 'application/json; charset=utf-8'
- response.headers['cache-control'] = 'max-age=0, no-cache, no-store, must-revalidate'
- response.headers['date'] = time.ctime()
- return response
-
-
-def arg_not_be_full() -> Response:
- """
- 参数不完整
- :return:
- """
- response = make_response({'code': -2,
- 'msg': '参数填写不完整或填写错误'})
- response.status_code = 200
- response.headers['Content-Type'] = 'application/json; charset=utf-8'
- response.headers['cache-control'] = 'max-age=0, no-cache, no-store, must-revalidate'
- response.headers['date'] = time.ctime()
- return response
+app.config['JSON_SORT_KEYS'] = False # 设置JSON消息不根据字母顺序重新排序
+app.config['JSON_AS_ASCII'] = False # 设置JSON消息显示中文
def build_page(name: str, length: int, theme: str) -> list[bool | Response] | list[bool | str] | bool:
@@ -109,7 +33,7 @@ def build_page(name: str, length: int, theme: str) -> list[bool | Response] | li
"""
count = fetch_data(name)
if len(str(count)) > length:
- return [False, too_lang_to_count(name)]
+ return [False, ErrorProcess().too_lang_to_count(name)]
if 7 <= length <= 10:
zero_count = '0' * (length - len(str(count))) + str(count)
status, sorted_image, width, height = re_sort_number_image(zero_count, theme)
@@ -132,7 +56,7 @@ def api_page() -> Response | str:
length = args.get('length')
theme = args.get('theme')
if theme == 'ls':
- return get_theme_list()
+ return ErrorProcess().get_theme_list()
if name and name != 'null':
if not length:
length = 7
@@ -148,13 +72,13 @@ def api_page() -> Response | str:
response.headers['date'] = time.ctime()
return response
elif build_page_result[1] == 'BadLength':
- return error_length(length)
+ return ErrorProcess().error_length(length)
elif build_page_result[1] == 'BadTheme':
- return error_theme(theme)
+ return ErrorProcess().error_theme(theme)
else:
return build_page_result[1]
else:
- return arg_not_be_full()
+ return ErrorProcess().arg_not_be_full()
@app.route('/', methods=['GET', 'POST'])
diff --git a/bin/core/error.py b/bin/core/error.py
new file mode 100644
index 0000000..b8bba44
--- /dev/null
+++ b/bin/core/error.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/9
+# @File Name: error.py
+
+
+from flask import jsonify
+from flask import Response
+from db.db import (update_data, fetch_table)
+
+
+class ErrorProcess:
+ def __init__(self):
+ self.msg_template = {'code': -2,
+ 'msg': '',
+ 'data': None}
+
+ def get_theme_list(self):
+ """
+ 直接获取可选主题
+ :return:
+ """
+ table_list = fetch_table()
+ self.msg_template['code'] = 200
+ self.msg_template['msg'] = '当前已保存到数据库的主题如下'
+ self.msg_template['data'] = table_list
+ return jsonify(self.msg_template)
+
+ def error_theme(self, theme: str) -> Response:
+ """
+ 错误的主题
+ :param theme:
+ :return:
+ """
+ table_list = fetch_table()
+ self.msg_template['code'] = -2
+ self.msg_template['msg'] = f'错误的主题: {theme}. 以下是已保存的主题'
+ self.msg_template['data'] = table_list
+ return jsonify(self.msg_template)
+
+ def error_length(self, length: int) -> Response:
+ """
+ 数值太长显示此页面
+ :param length:
+ :return:
+ """
+ self.msg_template['code'] = -2
+ self.msg_template['msg'] = f'错误的长度: {length}'
+ self.msg_template['data'] = None
+ return jsonify(self.msg_template)
+
+ def too_lang_to_count(self, name: str) -> Response:
+ """
+ 数据过长重置数据
+ :param name:
+ :return:
+ """
+ update_data(name, 0)
+ self.msg_template['code'] = 200
+ self.msg_template['msg'] = '当前长度已超过最大可计数范围. 已将此名称的计数器重置为零'
+ self.msg_template['data'] = None
+ return jsonify(self.msg_template)
+
+ def arg_not_be_full(self) -> Response:
+ """
+ 参数不完整
+ :return:
+ """
+ self.msg_template['code'] = -2
+ self.msg_template['msg'] = '参数填写错误或填写不完整'
+ self.msg_template['data'] = None
+ return jsonify(self.msg_template)
diff --git a/db/data.db b/db/data.db
index 44cab3c..20683b6 100644
Binary files a/db/data.db and b/db/data.db differ