mirror of
https://github.com/Kakune55/ComiPy.git
synced 2025-05-06 18:29:26 +08:00
使用蓝图重构项目结构
This commit is contained in:
parent
b950ae8b76
commit
372435d224
105
main.py
105
main.py
@ -1,115 +1,24 @@
|
|||||||
import configparser, gc
|
import configparser
|
||||||
import db, file
|
import db, file
|
||||||
from flask import *
|
from flask import *
|
||||||
|
|
||||||
|
from web.api_Img import api_Img_bp
|
||||||
|
from web.page import page_bp
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config.read("./conf/app.ini")
|
config.read("./conf/app.ini")
|
||||||
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
def appinit():
|
def appinit():
|
||||||
file.init()
|
file.init()
|
||||||
db.init()
|
db.init()
|
||||||
file.auotLoadFile()
|
file.auotLoadFile()
|
||||||
|
|
||||||
|
|
||||||
@app.route("/", methods=["GET", "POST"])
|
app.register_blueprint(api_Img_bp)
|
||||||
def login(): # 登录页面
|
app.register_blueprint(page_bp)
|
||||||
if request.method == "GET":
|
|
||||||
if request.cookies.get("islogin") is not None:
|
|
||||||
return redirect("/overview/1")
|
|
||||||
return render_template("login.html")
|
|
||||||
elif request.method == "POST":
|
|
||||||
if request.form["username"] == config.get("user", "username") and request.form[
|
|
||||||
"password"
|
|
||||||
] == config.get("user", "password"):
|
|
||||||
resp = make_response(redirect("/overview/1"))
|
|
||||||
resp.set_cookie("islogin", "True")
|
|
||||||
return resp
|
|
||||||
else:
|
|
||||||
return redirect("/")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/overview/<page>")
|
|
||||||
def overview(page): # 概览
|
|
||||||
page = int(page)
|
|
||||||
if request.cookies.get("islogin") is None:
|
|
||||||
return redirect("/")
|
|
||||||
metaDataList = db.getMetadata((page - 1) * 20, page * 20)
|
|
||||||
if page <= 3:
|
|
||||||
lastPageList = range(1,page)
|
|
||||||
else:
|
|
||||||
lastPageList = range(page-3,page)
|
|
||||||
nextPageList = range(page+1,page+4)
|
|
||||||
return render_template("overview.html",list=metaDataList,lastPageList=lastPageList,pagenow=page,nextPageList=nextPageList)
|
|
||||||
|
|
||||||
|
|
||||||
# @app.route("/api/info") 暂时弃用
|
|
||||||
# def api(): # 接口
|
|
||||||
# if request.cookies.get("islogin") is None:
|
|
||||||
# return abort(403)
|
|
||||||
# func = request.args.get("func")
|
|
||||||
# if func == "bookname" and request.args.get("page") is not None:
|
|
||||||
# page = int(request.args.get("page"))
|
|
||||||
# return db.getMetadata((page - 1) * 20, page * 20)
|
|
||||||
|
|
||||||
# return abort(400)
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/api/img/<bookid>/<index>")
|
|
||||||
def img(bookid, index): # 图片接口
|
|
||||||
if request.cookies.get("islogin") is None:
|
|
||||||
return abort(403)
|
|
||||||
if db.searchByid(bookid) == "":
|
|
||||||
return abort(404)
|
|
||||||
# 设置响应类型为图片
|
|
||||||
data, filename = file.raedZip(bookid,index)
|
|
||||||
if isinstance(data, str):
|
|
||||||
abort(404)
|
|
||||||
if request.args.get("mini") == "yes":
|
|
||||||
data = file.thumbnail(data)
|
|
||||||
else:
|
|
||||||
data = file.imageToWebP(data)
|
|
||||||
response = make_response(data) #读取文件
|
|
||||||
del data
|
|
||||||
response.headers.set('Content-Type', 'image/Webp')
|
|
||||||
response.headers.set('Content-Disposition', 'inline', filename=filename)
|
|
||||||
gc.collect()
|
|
||||||
return response
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/book/<bookid>")
|
|
||||||
def book(bookid): # 接口
|
|
||||||
if request.cookies.get("islogin") is None:
|
|
||||||
return abort(403)
|
|
||||||
data = db.searchByid(bookid)
|
|
||||||
if data == "":
|
|
||||||
return abort(404)
|
|
||||||
return render_template("view.html",id = bookid , index = range(1,data[0][3]))
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/view/<bookid>")
|
|
||||||
def view(bookid): # 接口
|
|
||||||
if request.cookies.get("islogin") is None:
|
|
||||||
return abort(403)
|
|
||||||
return bookid
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/upload', methods=["GET", "POST"]) #文件上传
|
|
||||||
def upload_file():
|
|
||||||
if request.method == "GET":
|
|
||||||
return render_template("upload.html")
|
|
||||||
uploaded_file = request.files.getlist('files[]') # 获取上传的文件列表
|
|
||||||
for fileitem in uploaded_file:
|
|
||||||
if fileitem.filename != '':
|
|
||||||
fileitem.save(config.get("file", "inputdir") + "/" + fileitem.filename)
|
|
||||||
file.auotLoadFile()
|
|
||||||
return redirect("/")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
appinit()
|
appinit()
|
||||||
|
26
web/api_Img.py
Normal file
26
web/api_Img.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from flask import *
|
||||||
|
from flask import Blueprint
|
||||||
|
import db, file
|
||||||
|
|
||||||
|
api_Img_bp = Blueprint("api_Img_bp", __name__)
|
||||||
|
|
||||||
|
|
||||||
|
@api_Img_bp.route("/api/img/<bookid>/<index>")
|
||||||
|
def img(bookid, index): # 图片接口
|
||||||
|
if request.cookies.get("islogin") is None:
|
||||||
|
return abort(403)
|
||||||
|
if db.searchByid(bookid) == "":
|
||||||
|
return abort(404)
|
||||||
|
# 设置响应类型为图片
|
||||||
|
data, filename = file.raedZip(bookid, index)
|
||||||
|
if isinstance(data, str):
|
||||||
|
abort(404)
|
||||||
|
if request.args.get("mini") == "yes":
|
||||||
|
data = file.thumbnail(data)
|
||||||
|
else:
|
||||||
|
data = file.imageToWebP(data)
|
||||||
|
response = make_response(data) # 读取文件
|
||||||
|
del data
|
||||||
|
response.headers.set("Content-Type", "image/Webp")
|
||||||
|
response.headers.set("Content-Disposition", "inline", filename=filename)
|
||||||
|
return response
|
75
web/page.py
Normal file
75
web/page.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
from flask import *
|
||||||
|
from flask import Blueprint
|
||||||
|
import configparser
|
||||||
|
import db, file
|
||||||
|
|
||||||
|
page_bp = Blueprint("page_bp", __name__)
|
||||||
|
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read("./conf/app.ini")
|
||||||
|
|
||||||
|
|
||||||
|
@page_bp.route("/overview/<page>")
|
||||||
|
def overview(page): # 概览
|
||||||
|
page = int(page)
|
||||||
|
if request.cookies.get("islogin") is None:
|
||||||
|
return redirect("/")
|
||||||
|
metaDataList = db.getMetadata((page - 1) * 20, page * 20)
|
||||||
|
if page <= 3:
|
||||||
|
lastPageList = range(1, page)
|
||||||
|
else:
|
||||||
|
lastPageList = range(page - 3, page)
|
||||||
|
nextPageList = range(page + 1, page + 4)
|
||||||
|
return render_template(
|
||||||
|
"overview.html",
|
||||||
|
list=metaDataList,
|
||||||
|
lastPageList=lastPageList,
|
||||||
|
pagenow=page,
|
||||||
|
nextPageList=nextPageList,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@page_bp.route("/book/<bookid>")
|
||||||
|
def book(bookid): # 接口
|
||||||
|
if request.cookies.get("islogin") is None:
|
||||||
|
return abort(403)
|
||||||
|
data = db.searchByid(bookid)
|
||||||
|
if data == "":
|
||||||
|
return abort(404)
|
||||||
|
return render_template("view.html", id=bookid, index=range(1, data[0][3]))
|
||||||
|
|
||||||
|
|
||||||
|
@page_bp.route("/view/<bookid>")
|
||||||
|
def view(bookid): # 接口
|
||||||
|
if request.cookies.get("islogin") is None:
|
||||||
|
return abort(403)
|
||||||
|
return bookid
|
||||||
|
|
||||||
|
|
||||||
|
@page_bp.route("/upload", methods=["GET", "POST"]) # 文件上传
|
||||||
|
def upload_file():
|
||||||
|
if request.method == "GET":
|
||||||
|
return render_template("upload.html")
|
||||||
|
uploaded_file = request.files.getlist("files[]") # 获取上传的文件列表
|
||||||
|
for fileitem in uploaded_file:
|
||||||
|
if fileitem.filename != "":
|
||||||
|
fileitem.save(config.get("file", "inputdir") + "/" + fileitem.filename)
|
||||||
|
file.auotLoadFile()
|
||||||
|
return redirect("/")
|
||||||
|
|
||||||
|
|
||||||
|
@page_bp.route("/", methods=["GET", "POST"])
|
||||||
|
def login(): # 登录页面
|
||||||
|
if request.method == "GET":
|
||||||
|
if request.cookies.get("islogin") is not None:
|
||||||
|
return redirect("/overview/1")
|
||||||
|
return render_template("login.html")
|
||||||
|
elif request.method == "POST":
|
||||||
|
if request.form["username"] == config.get("user", "username") and request.form[
|
||||||
|
"password"
|
||||||
|
] == config.get("user", "password"):
|
||||||
|
resp = make_response(redirect("/overview/1"))
|
||||||
|
resp.set_cookie("islogin", "True")
|
||||||
|
return resp
|
||||||
|
else:
|
||||||
|
return redirect("/")
|
Loading…
x
Reference in New Issue
Block a user