This repository has been archived on 2020-11-22. You can view files and clone it, but cannot push or open issues/pull-requests.
mangareader/local_reader.py

49 lines
1.4 KiB
Python
Raw Normal View History

2019-12-07 00:08:27 +01:00
#!/usr/bin/env python3
from flask import Flask, jsonify, render_template, Response
from mimetypes import types_map as mimetypes
from zipfile import ZipFile
import logging
import os
import sys
import webbrowser
import werkzeug.exceptions as exceptions
# disable access log
2020-02-15 15:41:11 +01:00
log = logging.getLogger("werkzeug")
2019-12-07 00:08:27 +01:00
log.setLevel(logging.ERROR)
# disable flask startup message
2020-02-15 15:41:11 +01:00
os.environ["WERKZEUG_RUN_MAIN"] = "true"
2019-12-07 00:08:27 +01:00
2020-02-15 15:41:11 +01:00
mimetypes[".webp"] = "image/webp"
archive = ZipFile(sys.argv[1], "r")
app = Flask(
__name__, static_folder="frontend/dist/static", template_folder="frontend/dist"
)
2019-12-07 00:08:27 +01:00
# kind of redundant, but avoids returning 200 if page does not exist
2020-02-15 15:41:11 +01:00
@app.route("/")
@app.route("/series/0")
@app.route("/volume/0")
2019-12-07 00:08:27 +01:00
def serve_app(**kwargs):
2020-02-15 15:41:11 +01:00
return render_template("index.html")
2019-12-07 00:08:27 +01:00
2020-02-15 15:41:11 +01:00
@app.route("/api/volume/0")
2019-12-07 00:08:27 +01:00
def get_volume_info():
2020-02-15 15:41:11 +01:00
return jsonify({"pages": len(archive.filelist), "series": 0, "title": sys.argv[1]})
2019-12-07 00:08:27 +01:00
2020-02-15 15:41:11 +01:00
@app.route("/api/volume/0/page/<int:page_number>")
2019-12-07 00:08:27 +01:00
def get_volume_page(page_number):
try:
page = archive.filelist[page_number - 1]
except IndexError:
raise exceptions.NotFound() from None
mimetype = mimetypes[os.path.splitext(page.filename)[1]]
return Response(archive.read(page.filename), mimetype=mimetype)
2020-02-15 15:41:11 +01:00
if __name__ == "__main__":
webbrowser.open("http://localhost:5051/volume/0")
app.run(host="127.0.0.1", port=5051)