backend: move mimetype recognition to backend
This commit is contained in:
parent
021476bfa2
commit
c5e6b9f4bf
|
@ -1,10 +1,13 @@
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
from mimetypes import types_map as mimetypes
|
||||||
from zipfile import ZipFile
|
from zipfile import ZipFile
|
||||||
import os.path
|
import os.path
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import werkzeug.exceptions as exceptions
|
import werkzeug.exceptions as exceptions
|
||||||
|
|
||||||
|
mimetypes['.webp'] = 'image/webp'
|
||||||
|
|
||||||
|
|
||||||
# https://docs.python.org/3.7/library/sqlite3.html#sqlite3.Connection.row_factory
|
# https://docs.python.org/3.7/library/sqlite3.html#sqlite3.Connection.row_factory
|
||||||
def dict_factory(cursor, row):
|
def dict_factory(cursor, row):
|
||||||
|
@ -192,5 +195,5 @@ class CalibreDB:
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'data': page_data,
|
'data': page_data,
|
||||||
'extension': os.path.splitext(page_filename)[1]
|
'mimetype': mimetypes[os.path.splitext(page_filename)[1]]
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ from backend import CalibreDB
|
||||||
from flask import Flask, jsonify, send_from_directory, send_file, render_template, request
|
from flask import Flask, jsonify, send_from_directory, send_file, render_template, request
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
from werkzeug.routing import BaseConverter
|
from werkzeug.routing import BaseConverter
|
||||||
from mimetypes import types_map as mimetypes
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,8 +13,6 @@ def send_from_cwd(filename):
|
||||||
app = Flask(__name__, static_folder='frontend/dist/static', template_folder='frontend/dist')
|
app = Flask(__name__, static_folder='frontend/dist/static', template_folder='frontend/dist')
|
||||||
CORS(app)
|
CORS(app)
|
||||||
|
|
||||||
mimetypes['.webp'] = 'image/webp'
|
|
||||||
|
|
||||||
db = CalibreDB()
|
db = CalibreDB()
|
||||||
|
|
||||||
# kind of redundant, but avoids returning 200 if page does not exist
|
# kind of redundant, but avoids returning 200 if page does not exist
|
||||||
|
@ -66,8 +63,7 @@ def get_volume_info(volume_id):
|
||||||
@app.route('/api/volume/<int:volume_id>/page/<int:page_number>')
|
@app.route('/api/volume/<int:volume_id>/page/<int:page_number>')
|
||||||
def get_volume_page(volume_id, page_number):
|
def get_volume_page(volume_id, page_number):
|
||||||
page = db.get_volume_page(volume_id, page_number)
|
page = db.get_volume_page(volume_id, page_number)
|
||||||
mimetype = mimetypes[page['extension']]
|
return send_file(page['data'], mimetype=page['mimetype'])
|
||||||
return send_file(page['data'], mimetype=mimetype)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Reference in a new issue