summaryrefslogtreecommitdiff
path: root/flaskapi.py
diff options
context:
space:
mode:
authorTim Keller <tjk@tjkeller.xyz>2025-12-09 22:16:48 -0600
committerTim Keller <tjk@tjkeller.xyz>2025-12-09 22:16:57 -0600
commit3e7fdfb6c8a50c59ac933f701526ad1815dded92 (patch)
treed2c699ff93e23d0fe45845a4c2dc05d820ec317b /flaskapi.py
parent39738b84e9164b0f2d01f22440548c4393160013 (diff)
downloadimmich-frame-3e7fdfb6c8a50c59ac933f701526ad1815dded92.tar.xz
immich-frame-3e7fdfb6c8a50c59ac933f701526ad1815dded92.zip
refactor codebase. Reorganize file structure. Replace webpack for vite. Setup setuptools for application. Move closer to distributable appv0.3.0
Diffstat (limited to 'flaskapi.py')
-rw-r--r--flaskapi.py89
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")