feat(backend,frontend,mcp): any voice or round video can be transcribed on request, media is found by its bytes
This commit is contained in:
1 parent
c2180e80ad
commit
2dd4e589c3
17 files changed
+523
-159
No files matched your search
@@ -8,17 +8,19 @@ from fastapi.responses import FileResponse
|
||||
from utils.cache import DAY_HEADERS, IMMUTABLE_HEADERS
|
||||
from utils.files import content_disposition, media_file_name, resolve_mime
|
||||
from utils.read.media import (
|
||||
find_by_content,
|
||||
get_media,
|
||||
get_media_version,
|
||||
get_media_versions,
|
||||
get_message_media,
|
||||
)
|
||||
from utils.read.models import MediaVersionView, MediaView
|
||||
from utils.read.models import MediaPlaceView, MediaVersionView, MediaView
|
||||
from utils.storage import ContentAddressedStorage
|
||||
|
||||
router = APIRouter(prefix="/api/media", tags=["media"], route_class=DishkaRoute)
|
||||
|
||||
Download = Annotated[bool, Query()]
|
||||
Sha256 = Annotated[str, Query(pattern="^[0-9a-f]{64}$")]
|
||||
|
||||
|
||||
def _attachment(headers: dict[str, str], file_name: str) -> dict[str, str]:
|
||||
@@ -81,6 +83,15 @@ async def message_media(
|
||||
return media
|
||||
|
||||
|
||||
@router.get("/lookup")
|
||||
async def lookup_media(
|
||||
pool: FromDishka[asyncpg.Pool],
|
||||
sha256: Sha256,
|
||||
account_id: Annotated[int | None, Query()] = None,
|
||||
) -> list[MediaPlaceView]:
|
||||
return await find_by_content(pool, sha256, account_id)
|
||||
|
||||
|
||||
@router.get("/{media_id}")
|
||||
async def serve_media(
|
||||
pool: FromDishka[asyncpg.Pool],
|
||||
|
||||
Reference in new issue
Block a user