mirror of
https://github.com/WhaleFell/SMSBoom.git
synced 2026-02-03 10:23:22 +08:00
106 lines
2.6 KiB
Python
Executable File
106 lines
2.6 KiB
Python
Executable File
# encoding=utf8
|
|
# flask app 主文件
|
|
import click
|
|
from loguru import logger
|
|
from pathlib import Path
|
|
import json
|
|
from flask_app import db, app
|
|
from flask_app.model import Apis
|
|
from utils.models import API
|
|
|
|
json_path = Path(app.root_path).parent.joinpath(
|
|
"api.json")
|
|
|
|
|
|
@click.command()
|
|
@click.option('--drop', is_flag=True, help='重建数据库') # 设置选项
|
|
def init(drop):
|
|
"""初始化数据库"""
|
|
if drop:
|
|
db.drop_all()
|
|
logger.info("删除数据库...准备重建..")
|
|
db.create_all()
|
|
logger.success("数据库创建成功")
|
|
|
|
|
|
@click.command()
|
|
@logger.catch()
|
|
def json2sqlite():
|
|
"""将json数据转为sqlite数据库"""
|
|
j = json_path.read_text(encoding="utf8")
|
|
|
|
jss = json.loads(j)
|
|
for js in jss:
|
|
api = Apis(
|
|
desc=str(js['desc']),
|
|
url=str(js['url']),
|
|
method=str(js['method']),
|
|
data=str(js['data']),
|
|
header=str(js['header'])
|
|
)
|
|
# print(api.desc)
|
|
try:
|
|
db.session.add(api)
|
|
db.session.commit()
|
|
logger.info(f"{api.desc} 写入成功!")
|
|
except Exception as e:
|
|
db.session.rollback() # 回滚
|
|
logger.error(f"{api.desc}写入数据库错误:{e}")
|
|
|
|
logger.success("json To sqlite 成功!")
|
|
|
|
|
|
@click.command()
|
|
@logger.catch()
|
|
def sqlite2json():
|
|
"""将sqlite数据转为json"""
|
|
apis = Apis.query.all()
|
|
apis_ = []
|
|
for api in apis:
|
|
# print(api.url)
|
|
if api.data is None:
|
|
api.data = ""
|
|
if api.header is None:
|
|
api.header = ""
|
|
data = {
|
|
"desc": api.desc,
|
|
"url": api.url,
|
|
"method": api.method,
|
|
"data": api.data,
|
|
"header": api.header,
|
|
}
|
|
try:
|
|
api = API(**data).handle_API()
|
|
apis_.append(api.dict())
|
|
except:
|
|
pass
|
|
# print(apis_)
|
|
with open(json_path, mode="w", encoding="utf8") as j:
|
|
try:
|
|
json.dump(apis_, j, ensure_ascii=False, sort_keys=False, indent=4)
|
|
logger.success("sqlite->json 成功!")
|
|
except Exception:
|
|
logger.exception("写入到 json 文件错误!")
|
|
|
|
|
|
@click.command()
|
|
@click.option('--host', '-h', help='监听地址', default="0.0.0.0")
|
|
@click.option('--port', '-p', help='监听端口', default=9090)
|
|
def start(host, port):
|
|
"""启动 flask app"""
|
|
app.run(host=host, port=port, debug=True)
|
|
|
|
|
|
@click.group()
|
|
def cli():
|
|
pass
|
|
|
|
|
|
cli.add_command(init)
|
|
cli.add_command(start)
|
|
cli.add_command(json2sqlite)
|
|
cli.add_command(sqlite2json)
|
|
|
|
if __name__ == "__main__":
|
|
cli()
|