Archived
更新数据库名称
This commit is contained in:
10 files changed
+180
-130
No files matched your search
@@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
import requests
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask import Response
|
from flask import Response
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
@@ -17,31 +19,24 @@ from bin.utils.b64img import re_sort_number_image
|
|||||||
from bin.utils.error import ErrorProcess
|
from bin.utils.error import ErrorProcess
|
||||||
from bin.utils.render_ import render_temp_
|
from bin.utils.render_ import render_temp_
|
||||||
from bin.utils.logger import logger
|
from bin.utils.logger import logger
|
||||||
from db.db import fetch_data
|
from db.sqlite import fetch_data
|
||||||
|
|
||||||
app = Flask(__name__, static_url_path='')
|
app = Flask(__name__, static_url_path='')
|
||||||
app.config['JSON_SORT_KEYS'] = False # 设置JSON消息不根据字母顺序重新排序
|
app.config['JSON_SORT_KEYS'] = False # 设置JSON消息不根据字母顺序重新排序
|
||||||
app.config['JSON_AS_ASCII'] = False # 设置JSON消息显示中文
|
app.config['JSON_AS_ASCII'] = False # 设置JSON消息显示中文
|
||||||
|
|
||||||
|
|
||||||
@app.errorhandler(404)
|
@app.route('/sync')
|
||||||
def miss(reason) -> Response:
|
def sync():
|
||||||
"""
|
"""
|
||||||
404页面使用json格式显示
|
同步count.db
|
||||||
:param reason:
|
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
return jsonify({'code': 404, 'msg': '没有定义的页面', 'data': None})
|
try:
|
||||||
|
requests.get('https://themedatabase.vercel.app/')
|
||||||
|
return {'code': 200, 'msg': '从远程服务器同步成功', 'data': []}
|
||||||
@app.errorhandler(500)
|
except BaseException as e:
|
||||||
def error(reason) -> Response:
|
return {'code': -2, 'msg': f'从远程服务器同步失败: {e}', 'data': []}
|
||||||
"""
|
|
||||||
500 页面使用json格式显示
|
|
||||||
:param reason:
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
return jsonify({'code': 500, 'msg': '服务器内部错误', 'data': None})
|
|
||||||
|
|
||||||
|
|
||||||
def build_page(name: str, length: int, theme: str) -> list[bool or Response] or list[bool or str] or bool:
|
def build_page(name: str, length: int, theme: str) -> list[bool or Response] or list[bool or str] or bool:
|
||||||
@@ -66,6 +61,26 @@ def build_page(name: str, length: int, theme: str) -> list[bool or Response] or
|
|||||||
return [False, 'BadLength']
|
return [False, 'BadLength']
|
||||||
|
|
||||||
|
|
||||||
|
@app.errorhandler(404)
|
||||||
|
def miss(reason) -> Response:
|
||||||
|
"""
|
||||||
|
404页面使用json格式显示
|
||||||
|
:param reason:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
return jsonify({'code': 404, 'msg': '没有定义的页面', 'data': None})
|
||||||
|
|
||||||
|
|
||||||
|
@app.errorhandler(500)
|
||||||
|
def error(reason) -> Response:
|
||||||
|
"""
|
||||||
|
500 页面使用json格式显示
|
||||||
|
:param reason:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
return jsonify({'code': 500, 'msg': '服务器内部错误', 'data': None})
|
||||||
|
|
||||||
|
|
||||||
@app.route('/get', methods=['GET', 'POST']) # 允许 GET 和 POST 方法
|
@app.route('/get', methods=['GET', 'POST']) # 允许 GET 和 POST 方法
|
||||||
def main() -> Response or str:
|
def main() -> Response or str:
|
||||||
"""
|
"""
|
||||||
@@ -81,6 +96,8 @@ def main() -> Response or str:
|
|||||||
if name and name != 'null':
|
if name and name != 'null':
|
||||||
if not length:
|
if not length:
|
||||||
length = 7
|
length = 7
|
||||||
|
elif type(length) is not int:
|
||||||
|
return ErrorProcess().error_length(length)
|
||||||
else:
|
else:
|
||||||
length = int(length) # 将类型转换为整型
|
length = int(length) # 将类型转换为整型
|
||||||
if not theme:
|
if not theme:
|
||||||
@@ -89,14 +106,15 @@ def main() -> Response or str:
|
|||||||
if build_page_result[0]:
|
if build_page_result[0]:
|
||||||
response = make_response(build_page_result[1]) # 设置响应体 和 响应头
|
response = make_response(build_page_result[1]) # 设置响应体 和 响应头
|
||||||
response.headers['Content-Type'] = 'image/svg+xml; charset=utf-8'
|
response.headers['Content-Type'] = 'image/svg+xml; charset=utf-8'
|
||||||
|
# 防止浏览器和markdown编辑器缓存图片
|
||||||
response.headers['cache-control'] = 'max-age=0, no-cache, no-store, must-revalidate'
|
response.headers['cache-control'] = 'max-age=0, no-cache, no-store, must-revalidate'
|
||||||
response.headers['date'] = time.ctime()
|
response.headers['date'] = time.ctime()
|
||||||
return response
|
return response
|
||||||
elif build_page_result[1] == 'BadLength':
|
elif build_page_result[1] == 'BadLength': # 输入的长度错误
|
||||||
return ErrorProcess().error_length(length)
|
return ErrorProcess().error_length(length)
|
||||||
elif build_page_result[1] == 'BadTheme':
|
elif build_page_result[1] == 'BadTheme': # 输入的主题错误
|
||||||
return ErrorProcess().error_theme(theme)
|
return ErrorProcess().error_theme(theme)
|
||||||
else:
|
else: # 长度过长无法计数重置数据库内的已有数据
|
||||||
return build_page_result[1]
|
return build_page_result[1]
|
||||||
else:
|
else:
|
||||||
return ErrorProcess().arg_not_be_full()
|
return ErrorProcess().arg_not_be_full()
|
||||||
|
|||||||
Whitespace-only changes.
@@ -0,0 +1,4 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
print(sys.argv)
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -- coding:utf-8 --
|
||||||
|
# @Author: markushammered@gmail.com
|
||||||
|
# @Development Tool: PyCharm
|
||||||
|
# @Create Time: 2022/2/16
|
||||||
|
# @File Name: connectdb.py
|
||||||
|
|
||||||
|
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
|
||||||
|
def exec(cmd):
|
||||||
|
try:
|
||||||
|
conn = sqlite3.connect('../../db/count.db')
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(cmd)
|
||||||
|
return cursor.fetchall()
|
||||||
|
finally:
|
||||||
|
cursor.close()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
while True:
|
||||||
|
cmd = input('>>>')
|
||||||
|
print(exec(cmd))
|
||||||
|
|
||||||
@@ -4,7 +4,7 @@ import os
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
|
|
||||||
conn = sqlite3.connect('../assets/theme.db')
|
conn = sqlite3.connect('../../db/theme.db')
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
|
||||||
file_list = os.listdir('../assets/themes/')
|
file_list = os.listdir('../assets/themes/')
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ import random
|
|||||||
import base64
|
import base64
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
|
conn = sqlite3.connect('../../db/style.db')
|
||||||
conn = sqlite3.connect('../assets/theme.db')
|
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
|
||||||
@@ -30,4 +29,6 @@ def get_all_theme():
|
|||||||
fp.write(img_data)
|
fp.write(img_data)
|
||||||
# if i[1] == '':
|
# if i[1] == '':
|
||||||
# print(n)
|
# print(n)
|
||||||
get_all_theme()
|
|
||||||
|
|
||||||
|
get_all_theme()
|
||||||
@@ -59,7 +59,7 @@ class Check:
|
|||||||
检验本地文件md5是否和远程md5相同
|
检验本地文件md5是否和远程md5相同
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
with open('./bin/assets/theme.db', 'rb') as fp:
|
with open('./db/style.db', 'rb') as fp:
|
||||||
data = fp.read()
|
data = fp.read()
|
||||||
local_md5 = hashlib.md5(data).hexdigest()
|
local_md5 = hashlib.md5(data).hexdigest()
|
||||||
remote_md5 = self.session.get(self.remote_md5).json()['data'][0]
|
remote_md5 = self.session.get(self.remote_md5).json()['data'][0]
|
||||||
@@ -84,9 +84,9 @@ class Check:
|
|||||||
mtd_list = []
|
mtd_list = []
|
||||||
start = 0
|
start = 0
|
||||||
end = -1
|
end = -1
|
||||||
with open('./bin/assets/theme.db', 'w') as initial_file:
|
with open('./db/style.db', 'w') as initial_file:
|
||||||
initial_file.close()
|
initial_file.close()
|
||||||
with open('./bin/assets/theme.db', 'rb+') as f:
|
with open('./db/style.db', 'rb+') as f:
|
||||||
name = 1
|
name = 1
|
||||||
fileno = f.fileno()
|
fileno = f.fileno()
|
||||||
while end < filesize - 1:
|
while end < filesize - 1:
|
||||||
@@ -117,10 +117,10 @@ def single_download(url):
|
|||||||
session.trust_env = False
|
session.trust_env = False
|
||||||
logger.info(f'正在使用单线程下载中')
|
logger.info(f'正在使用单线程下载中')
|
||||||
resp = session.get(url)
|
resp = session.get(url)
|
||||||
with open('./bin/assets/theme.db', 'wb') as fp:
|
with open('./db/style.db', 'wb') as fp:
|
||||||
fp.write(resp.content)
|
fp.write(resp.content)
|
||||||
logger.info('下载完成 正在检验文件md5')
|
logger.info('下载完成 正在检验文件md5')
|
||||||
with open('./bin/assets/theme.db', 'rb') as fp:
|
with open('./db/style.db', 'rb') as fp:
|
||||||
data = fp.read()
|
data = fp.read()
|
||||||
local_md5 = hashlib.md5(data).hexdigest()
|
local_md5 = hashlib.md5(data).hexdigest()
|
||||||
remote_md5 = session.get('https://themedatabases.vercel.app/md5').json()['data'][0]
|
remote_md5 = session.get('https://themedatabases.vercel.app/md5').json()['data'][0]
|
||||||
@@ -136,6 +136,6 @@ def single_download(url):
|
|||||||
if __name__ != '__main__':
|
if __name__ != '__main__':
|
||||||
if not os.path.exists('./bin/log'):
|
if not os.path.exists('./bin/log'):
|
||||||
os.mkdir('./bin/log')
|
os.mkdir('./bin/log')
|
||||||
if not os.path.exists('./bin/assets/theme.db'):
|
if not os.path.exists('./db/style.db'):
|
||||||
logger.error('没有检测到本地主题数据库即将开始下载')
|
logger.error('没有检测到本地主题数据库即将开始下载')
|
||||||
Check().download()
|
Check().download()
|
||||||
+2
-2
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from db.db import fetch_table
|
from db.sqlite import fetch_table
|
||||||
|
|
||||||
|
|
||||||
def re_sort_number_image(origin_number: str, theme: str) -> tuple[bool, bool, bool, bool] or list[
|
def re_sort_number_image(origin_number: str, theme: str) -> tuple[bool, bool, bool, bool] or list[
|
||||||
@@ -66,5 +66,5 @@ def re_sort_number_image(origin_number: str, theme: str) -> tuple[bool, bool, bo
|
|||||||
|
|
||||||
|
|
||||||
if __name__ != '__main__':
|
if __name__ != '__main__':
|
||||||
conn = sqlite3.connect('./bin/assets/theme.db', check_same_thread=False)
|
conn = sqlite3.connect('./db/theme.db', check_same_thread=False)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
+2
-2
@@ -9,7 +9,7 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
from flask import Response
|
from flask import Response
|
||||||
from db.db import (update_data, fetch_table)
|
from db.sqlite import (update_data, fetch_table)
|
||||||
|
|
||||||
|
|
||||||
class ErrorProcess:
|
class ErrorProcess:
|
||||||
@@ -42,7 +42,7 @@ class ErrorProcess:
|
|||||||
self.msg_template['data'] = table_list
|
self.msg_template['data'] = table_list
|
||||||
return jsonify(self.msg_template)
|
return jsonify(self.msg_template)
|
||||||
|
|
||||||
def error_length(self, length: int) -> Response:
|
def error_length(self, length: int or str) -> Response:
|
||||||
"""
|
"""
|
||||||
数值太长显示此页面
|
数值太长显示此页面
|
||||||
:param length:
|
:param length:
|
||||||
|
|||||||
+97
-97
@@ -1,97 +1,97 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -- coding:utf-8 --
|
# -- coding:utf-8 --
|
||||||
# @Author: markushammered@gmail.com
|
# @Author: markushammered@gmail.com
|
||||||
# @Development Tool: PyCharm
|
# @Development Tool: PyCharm
|
||||||
# @Create Time: 2022/2/4
|
# @Create Time: 2022/2/4
|
||||||
# @File Name: db.py
|
# @File Name: sqlite.py
|
||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
"""
|
"""
|
||||||
使用python3自带的Sqlite3进行数据库操作
|
使用python3自带的Sqlite3进行数据库操作
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def insert_data(name: str) -> None:
|
def insert_data(name: str) -> None:
|
||||||
"""
|
"""
|
||||||
插入数据
|
插入数据
|
||||||
:param name:
|
:param name:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
conn = sqlite3.connect('./db/count.db', check_same_thread=False)
|
conn = sqlite3.connect('./db/count.db', check_same_thread=False)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
try:
|
try:
|
||||||
cursor.execute('insert into ReqCount values(?, ?)', (name, 1))
|
cursor.execute('insert into ReqCount values(?, ?)', (name, 1))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
finally:
|
finally:
|
||||||
cursor.close()
|
cursor.close()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def fetch_data(name: str) -> int:
|
def fetch_data(name: str) -> int:
|
||||||
"""
|
"""
|
||||||
获取数据
|
获取数据
|
||||||
:param name:
|
:param name:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
conn = sqlite3.connect('./db/count.db', check_same_thread=False)
|
conn = sqlite3.connect('./db/count.db', check_same_thread=False)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
try:
|
try:
|
||||||
cursor.execute('select * from ReqCount')
|
cursor.execute('select * from ReqCount')
|
||||||
conn.commit()
|
conn.commit()
|
||||||
data = cursor.fetchall()
|
data = cursor.fetchall()
|
||||||
|
|
||||||
temp_dict = {}
|
temp_dict = {}
|
||||||
for k, v in data: # 遍历数据将元组数据转换为字典类型
|
for k, v in data: # 遍历数据将元组数据转换为字典类型
|
||||||
temp_dict.setdefault(k, []).append(v)
|
temp_dict.setdefault(k, []).append(v)
|
||||||
for i, c in zip(temp_dict.keys(), temp_dict.values()):
|
for i, c in zip(temp_dict.keys(), temp_dict.values()):
|
||||||
temp_dict[i] = c[0]
|
temp_dict[i] = c[0]
|
||||||
|
|
||||||
if name in temp_dict.keys():
|
if name in temp_dict.keys():
|
||||||
count = temp_dict[name] # 获取原数字 为 整型
|
count = temp_dict[name] # 获取原数字 为 整型
|
||||||
update_data(name, count)
|
update_data(name, count)
|
||||||
return count
|
return count
|
||||||
else:
|
else:
|
||||||
# 新建用户数据
|
# 新建用户数据
|
||||||
insert_data(name)
|
insert_data(name)
|
||||||
return 0
|
return 0
|
||||||
finally:
|
finally:
|
||||||
cursor.close()
|
cursor.close()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def update_data(name: str, times: int) -> None:
|
def update_data(name: str, times: int) -> None:
|
||||||
"""
|
"""
|
||||||
更新数据
|
更新数据
|
||||||
:param name:
|
:param name:
|
||||||
:param times:
|
:param times:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
conn = sqlite3.connect('./db/count.db', check_same_thread=False)
|
conn = sqlite3.connect('./db/count.db', check_same_thread=False)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
try:
|
try:
|
||||||
times += 1
|
times += 1
|
||||||
cursor.execute('update ReqCount set times=? where name=?', (times, name))
|
cursor.execute('update ReqCount set times=? where name=?', (times, name))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
finally:
|
finally:
|
||||||
cursor.close()
|
cursor.close()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def fetch_table() -> list:
|
def fetch_table() -> list:
|
||||||
"""
|
"""
|
||||||
返回已有主题列表
|
返回已有主题列表
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
conn_temp = sqlite3.connect('./bin/assets/theme.db', check_same_thread=False)
|
conn_temp = sqlite3.connect('./db/style.db', check_same_thread=False)
|
||||||
cursor_temp = conn_temp.cursor()
|
cursor_temp = conn_temp.cursor()
|
||||||
try:
|
try:
|
||||||
lst = []
|
lst = []
|
||||||
cursor_temp.execute("select * from sqlite_master where type='table'")
|
cursor_temp.execute("select * from sqlite_master where type='table'")
|
||||||
for i in cursor_temp.fetchall():
|
for i in cursor_temp.fetchall():
|
||||||
lst.append(i[1])
|
lst.append(i[1])
|
||||||
return lst
|
return lst
|
||||||
finally:
|
finally:
|
||||||
cursor_temp.close()
|
cursor_temp.close()
|
||||||
conn_temp.close()
|
conn_temp.close()
|
||||||
|
|
||||||
Reference in New Issue
Block a user