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