Mercurial > code > home > repos > video
diff video.py @ 4:c8a41359505c
server provides video listing from disk
author | drewp@bigasterisk.com |
---|---|
date | Sat, 25 Mar 2023 16:01:56 -0700 |
parents | ee55ed10faec |
children | 75b54be050bc |
line wrap: on
line diff
--- a/video.py Mon Mar 20 20:50:33 2023 -0700 +++ b/video.py Sat Mar 25 16:01:56 2023 -0700 @@ -1,14 +1,15 @@ import asyncio import logging from typing import List - +from pathlib import Path import uvicorn from prometheus_client import Gauge from starlette.applications import Starlette from starlette.requests import Request -from starlette.responses import HTMLResponse +from starlette.responses import HTMLResponse, JSONResponse from starlette.routing import Route from starlette_exporter import PrometheusMiddleware, handle_metrics +from video_service import findAll logging.basicConfig(level=logging.DEBUG) log = logging.getLogger() @@ -18,21 +19,28 @@ return HTMLResponse("api") -async def main(): +def videos(req: Request) -> JSONResponse: + return JSONResponse({ + "videos": [{ + 'webRelPath': vf.webRelPath, + 'label': vf.label, + } for vf in findAll()] + }) + + +def main(): app = Starlette( debug=True, routes=[ - Route('/', root), + Route('/video/api/', root), + Route('/video/api/videos', videos), ], ) app.add_middleware(PrometheusMiddleware, app_name='video_api') app.add_route("/metrics", handle_metrics) - - config = uvicorn.Config(app, host='0.0.0.0', port=9053, log_level="info") - server = uvicorn.Server(config) - await server.serve() + return app -asyncio.run(main(), debug=False) +app = main() \ No newline at end of file