Cache thumbnails
This commit is contained in:
@@ -7,4 +7,5 @@ aiosqlite
|
|||||||
passlib
|
passlib
|
||||||
requests
|
requests
|
||||||
python-multipart
|
python-multipart
|
||||||
Pillow
|
Pillow
|
||||||
|
joblib
|
||||||
@@ -9,6 +9,7 @@ import subprocess
|
|||||||
from fastapi import APIRouter, Depends, FastAPI, File, UploadFile, status
|
from fastapi import APIRouter, Depends, FastAPI, File, UploadFile, status
|
||||||
from fastapi.responses import FileResponse
|
from fastapi.responses import FileResponse
|
||||||
from fastapi_jwt_auth import AuthJWT
|
from fastapi_jwt_auth import AuthJWT
|
||||||
|
from joblib import Memory
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
from starlette.responses import StreamingResponse
|
from starlette.responses import StreamingResponse
|
||||||
@@ -21,7 +22,11 @@ from src.models.sign import Sign
|
|||||||
from src.models.signvideo import SignVideo, SignVideoOut
|
from src.models.signvideo import SignVideo, SignVideoOut
|
||||||
from src.utils.cryptography import verify_password
|
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):
|
def extract_thumbnail(video_path):
|
||||||
proc = subprocess.run(["ffmpeg", "-i", video_path, "-ss", "00:00:02.000", "-vframes", "1", "-f", "image2pipe", "-"], stdout=subprocess.PIPE)
|
proc = subprocess.run(["ffmpeg", "-i", video_path, "-ss", "00:00:02.000", "-vframes", "1", "-f", "image2pipe", "-"], stdout=subprocess.PIPE)
|
||||||
byte_data = proc.stdout
|
byte_data = proc.stdout
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ DB_SQLITE_PATH: str = os.getenv("DB_SQLITE_PATH", "./sqlite.db")
|
|||||||
|
|
||||||
"""Storage"""
|
"""Storage"""
|
||||||
DATA_PATH: str = os.getenv("DATA_PATH", "data")
|
DATA_PATH: str = os.getenv("DATA_PATH", "data")
|
||||||
|
CACHE_PATH: str = os.getenv("CACHE_PATH", "cache")
|
||||||
|
|
||||||
|
|
||||||
"""Authentication"""
|
"""Authentication"""
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ services:
|
|||||||
DB_USE_SQLITE: "true"
|
DB_USE_SQLITE: "true"
|
||||||
DB_SQLITE_PATH: "/data/sqlite.db"
|
DB_SQLITE_PATH: "/data/sqlite.db"
|
||||||
DATA_PATH: "/data/videos"
|
DATA_PATH: "/data/videos"
|
||||||
|
CACHE_PATH: "/data/cache"
|
||||||
|
|
||||||
JWT_SECRET_KEY: "e8ae5c5d5cd7f0f1bec2303ad04a7c80f09f759d480a7a5faff5a6bbaa4078d0"
|
JWT_SECRET_KEY: "e8ae5c5d5cd7f0f1bec2303ad04a7c80f09f759d480a7a5faff5a6bbaa4078d0"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user