Mercurial > code > home > repos > video
annotate 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 |
rev | line source |
---|---|
3 | 1 import asyncio |
2 import logging | |
3 from typing import List | |
4
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
4 from pathlib import Path |
3 | 5 import uvicorn |
6 from prometheus_client import Gauge | |
7 from starlette.applications import Starlette | |
8 from starlette.requests import Request | |
4
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
9 from starlette.responses import HTMLResponse, JSONResponse |
3 | 10 from starlette.routing import Route |
11 from starlette_exporter import PrometheusMiddleware, handle_metrics | |
4
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
12 from video_service import findAll |
0 | 13 |
3 | 14 logging.basicConfig(level=logging.DEBUG) |
15 log = logging.getLogger() | |
0 | 16 |
17 | |
3 | 18 def root(req): |
19 return HTMLResponse("api") | |
0 | 20 |
21 | |
4
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
22 def videos(req: Request) -> JSONResponse: |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
23 return JSONResponse({ |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
24 "videos": [{ |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
25 'webRelPath': vf.webRelPath, |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
26 'label': vf.label, |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
27 } for vf in findAll()] |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
28 }) |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
29 |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
30 |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
31 def main(): |
3 | 32 |
33 app = Starlette( | |
34 debug=True, | |
35 routes=[ | |
4
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
36 Route('/video/api/', root), |
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
37 Route('/video/api/videos', videos), |
3 | 38 ], |
39 ) | |
40 | |
41 app.add_middleware(PrometheusMiddleware, app_name='video_api') | |
42 app.add_route("/metrics", handle_metrics) | |
4
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
43 return app |
3 | 44 |
45 | |
4
c8a41359505c
server provides video listing from disk
drewp@bigasterisk.com
parents:
3
diff
changeset
|
46 app = main() |