Loading karaokatalog/ui/serve/__main__.py 0 → 100644 +32 −0 Original line number Diff line number Diff line import json import logging from karaokatalog.get_parser import get_parser from karaokatalog.Library import Library from karaokatalog.ui.serve.get_flask_app import get_flask_app logging.basicConfig( format="%(asctime)s [%(levelname)s] %(message)s", level=logging.INFO ) if __name__ == "__main__": args = get_parser( "ui.serve", "Serve a web UI to browse the Karaokatalog" ).parse_args() songs_json_path = args.library_path / "songs.json" if songs_json_path.exists(): logging.info(f"Loading {songs_json_path}") with songs_json_path.open("r", encoding="utf-8") as f: songs = json.load(f) else: logging.info("Loading library") library = Library.from_dir(args.library_path) logging.info("Library loaded") songs = [song.as_dict() for song in library.songs] logging.info("Starting UI") app = get_flask_app(songs) app.run(port=5657) karaokatalog/ui/serve/get_flask_app.py 0 → 100644 +16 −0 Original line number Diff line number Diff line from collections.abc import Sequence from flask import Flask def get_flask_app(songs: Sequence[dict[str, str]]) -> Flask: app = Flask("karaokatalog.ui", static_url_path="/") # This is only to make the type checker happy. songs_list = list(songs) @app.get("/api/songs") def get_songs() -> list[dict[str, str]]: return songs_list return app Loading
karaokatalog/ui/serve/__main__.py 0 → 100644 +32 −0 Original line number Diff line number Diff line import json import logging from karaokatalog.get_parser import get_parser from karaokatalog.Library import Library from karaokatalog.ui.serve.get_flask_app import get_flask_app logging.basicConfig( format="%(asctime)s [%(levelname)s] %(message)s", level=logging.INFO ) if __name__ == "__main__": args = get_parser( "ui.serve", "Serve a web UI to browse the Karaokatalog" ).parse_args() songs_json_path = args.library_path / "songs.json" if songs_json_path.exists(): logging.info(f"Loading {songs_json_path}") with songs_json_path.open("r", encoding="utf-8") as f: songs = json.load(f) else: logging.info("Loading library") library = Library.from_dir(args.library_path) logging.info("Library loaded") songs = [song.as_dict() for song in library.songs] logging.info("Starting UI") app = get_flask_app(songs) app.run(port=5657)
karaokatalog/ui/serve/get_flask_app.py 0 → 100644 +16 −0 Original line number Diff line number Diff line from collections.abc import Sequence from flask import Flask def get_flask_app(songs: Sequence[dict[str, str]]) -> Flask: app = Flask("karaokatalog.ui", static_url_path="/") # This is only to make the type checker happy. songs_list = list(songs) @app.get("/api/songs") def get_songs() -> list[dict[str, str]]: return songs_list return app