diff video.py @ 17:071943adf000

dnd a file or a url which we'll queue and fetch
author drewp@bigasterisk.com
date Sun, 16 Apr 2023 03:19:33 -0700
parents 53d99454f394
children 1b388ee5dd09
line wrap: on
line diff
--- a/video.py	Sun Apr 16 03:17:48 2023 -0700
+++ b/video.py	Sun Apr 16 03:19:33 2023 -0700
@@ -1,3 +1,5 @@
+import asyncio
+import json
 import logging
 from pathlib import Path
 
@@ -11,9 +13,10 @@
 
 from video_file_store import VideoFileStore
 from video_ingest import VideoIngest
-
+import dl_queue
 logging.basicConfig(level=logging.DEBUG)
 log = logging.getLogger()
+logging.getLogger('sse_starlette').setLevel(logging.WARNING)
 
 
 def root(req):
@@ -36,7 +39,7 @@
 
 async def ingestVideoUrl(req: Request) -> Response:
     url = await req.body()
-    svc.ingestUrl(url)
+    await svc.ingestUrl(url.decode('utf8'))
     return Response(status_code=202)
 
 
@@ -47,18 +50,15 @@
 
 
 async def ingestQueue(req: Request) -> EventSourceResponse:
-
-    def convertEvents(svcEvents):
-        for ev in svcEvents:
-            yield dict(type='ev')
-
-    return EventSourceResponse(convertEvents(svc.events()))
+    async def g():
+        async for ev in svc.events():
+            yield json.dumps(ev)
+    return EventSourceResponse(g())
 
 
 store = VideoFileStore(top=Path('/data'))
 svc = VideoIngest(store)
 
-
 def main():
 
     app = Starlette(
@@ -78,6 +78,8 @@
 
     app.add_middleware(PrometheusMiddleware, app_name='video_api')
     app.add_route("/metrics", handle_metrics)
+    
+    app.state.processTask = asyncio.create_task(dl_queue.process())
     return app