From fd52dee435cba64ca50260071fd0325786e09369 Mon Sep 17 00:00:00 2001 From: Victor Mylle Date: Wed, 1 Mar 2023 21:03:54 +0100 Subject: [PATCH] Cache thumbnails --- backend/requirements.txt | 3 ++- backend/src/routers/signvideo.py | 5 +++++ backend/src/settings.py | 1 + docker-compose.yml | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 5f25024..c702760 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -7,4 +7,5 @@ aiosqlite passlib requests python-multipart -Pillow \ No newline at end of file +Pillow +joblib \ No newline at end of file diff --git a/backend/src/routers/signvideo.py b/backend/src/routers/signvideo.py index b78b828..a9ce4f9 100644 --- a/backend/src/routers/signvideo.py +++ b/backend/src/routers/signvideo.py @@ -9,6 +9,7 @@ import subprocess from fastapi import APIRouter, Depends, FastAPI, File, UploadFile, status from fastapi.responses import FileResponse from fastapi_jwt_auth import AuthJWT +from joblib import Memory from pydantic import BaseModel from sqlalchemy.ext.asyncio import AsyncSession from starlette.responses import StreamingResponse @@ -21,7 +22,11 @@ from src.models.sign import Sign from src.models.signvideo import SignVideo, SignVideoOut from src.utils.cryptography import verify_password +# Create a Memory object that caches data to the specified directory +cache_dir = settings.CACHE_PATH +memory = Memory(location=cache_dir, verbose=0) +@memory.cache def extract_thumbnail(video_path): proc = subprocess.run(["ffmpeg", "-i", video_path, "-ss", "00:00:02.000", "-vframes", "1", "-f", "image2pipe", "-"], stdout=subprocess.PIPE) byte_data = proc.stdout diff --git a/backend/src/settings.py b/backend/src/settings.py index 9bd5750..7f2ee07 100644 --- a/backend/src/settings.py +++ b/backend/src/settings.py @@ -19,6 +19,7 @@ DB_SQLITE_PATH: str = os.getenv("DB_SQLITE_PATH", "./sqlite.db") """Storage""" DATA_PATH: str = os.getenv("DATA_PATH", "data") +CACHE_PATH: str = os.getenv("CACHE_PATH", "cache") """Authentication""" diff --git a/docker-compose.yml b/docker-compose.yml index c833713..29d7821 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,7 @@ services: DB_USE_SQLITE: "true" DB_SQLITE_PATH: "/data/sqlite.db" DATA_PATH: "/data/videos" + CACHE_PATH: "/data/cache" JWT_SECRET_KEY: "e8ae5c5d5cd7f0f1bec2303ad04a7c80f09f759d480a7a5faff5a6bbaa4078d0"