diff options
Diffstat (limited to 'flaskapi.py')
| -rw-r--r-- | flaskapi.py | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/flaskapi.py b/flaskapi.py deleted file mode 100644 index 7d10a7e..0000000 --- a/flaskapi.py +++ /dev/null @@ -1,89 +0,0 @@ -from flask import Flask, Blueprint, request, send_from_directory, send_file, abort, redirect, jsonify -from flask_socketio import SocketIO, emit -from flask_cors import CORS -from engineio.async_drivers import threading # For pyinstaller - -from manager import PixMan -from settings import Config - - -app = Flask(__name__, static_folder=PixMan().static_dir, static_url_path="/") -api = Blueprint("api", __name__) -socketio = SocketIO(app, async_mode="threading", cors_allowed_origins="*") # NOTE debug, async_mode for pyinstaller -CORS(api, origins="*") # NOTE debug - - -@app.route("/") -@app.route("/slideshow") -@app.route("/albums") -@app.route("/settings") -def home(): - return send_from_directory(PixMan().static_public, "index.html") - - -@socketio.on("seek") -def seek(increment): - if not (display := PixMan().display): - return {} - display.queue.put(lambda: display.seek(increment)) - while not display.queue.empty(): - pass - return { "imageIndex": display.current_texture_index } - - -@api.route("/albums/update", methods=["POST"]) -def albums_update(): - return { "success": PixMan().update_config({ "album_list": request.json }) } - -@api.route("/albums") -def albums_get(): - if not (ic := PixMan().immich_connector): - return {} - keys = [ "albumName", "albumThumbnailAssetId", "id", "startDate", "endDate", "assetCount", "shared", ] - selected_albums = PixMan().config.album_list - return [{ - key: album.get(key, None) for key in keys - } | { "selected": album["id"] in selected_albums } for album in ic.load_all_albums() if album["assetCount"] ] - - -@api.route("/asset/<key>/filename") -def get_asset_name(key): - if not (ic := PixMan().immich_connector): - return {} - # TODO ensure getting actual album thumb - name = ic.load_image_filename(key) - if name is None: - abort(400) - return { "filename": name } - - -@api.route("/asset/<key>/fullsize", defaults={ "size": "fullsize" }) -@api.route("/asset/<key>/thumbnail", defaults={ "size": "thumbnail" }) -@api.route("/asset/<key>", defaults={ "size": "preview" }) -def get_asset(key, size): - if not (ic := PixMan().immich_connector): - return {} - # TODO ensure getting actual album thumb - image_data, mimetype = ic.load_image(key, size=size) - if image_data is None: - abort(400) - return send_file(image_data, mimetype=mimetype) - - -@api.route("/redirect/<path:path>") -def immich_redirect(path): - if not (ic := PixMan().immich_connector): - return {} - return redirect(f"{ic.server_url}/{path}") - - -@api.route("/config/update", methods=["POST"]) -def config_update(): - return { "success": PixMan().update_config(request.json) } - -@api.route("/config") -def config_get(): - return jsonify(PixMan().config) - - -app.register_blueprint(api, url_prefix="/api") |
