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
@@ -3,7 +3,7 @@ import json
|
||||
import asyncpg
|
||||
|
||||
from utils.files import media_file_name
|
||||
from utils.read.models import MediaVersionView, MediaView
|
||||
from utils.read.models import MediaPlaceView, MediaVersionView, MediaView
|
||||
|
||||
MEDIA_COLS = (
|
||||
"m.id, m.account_id, m.chat_id, m.message_id, m.kind, m.storage_key, "
|
||||
@@ -23,6 +23,12 @@ LEFT JOIN LATERAL (
|
||||
|
||||
_VERSION_COLS = "id, kind, storage_key, file_size, mime, observed_at"
|
||||
|
||||
_PLACES = """
|
||||
SELECT account_id, chat_id, message_id, kind, extracted_text FROM media
|
||||
WHERE storage_key = $1 AND ($2::bigint IS NULL OR account_id = $2)
|
||||
ORDER BY created_at DESC LIMIT 100
|
||||
"""
|
||||
|
||||
_WEB_PAGE_MEDIA_KINDS = ("photo", "video", "animation", "document", "audio")
|
||||
|
||||
|
||||
@@ -100,6 +106,13 @@ async def get_message_media(
|
||||
return await _web_page_media_stub(pool, account_id, chat_id, message_id)
|
||||
|
||||
|
||||
async def find_by_content(
|
||||
pool: asyncpg.Pool, storage_key: str, account_id: int | None = None
|
||||
) -> list[MediaPlaceView]:
|
||||
rows = await pool.fetch(_PLACES, storage_key, account_id)
|
||||
return [MediaPlaceView(**dict(row)) for row in rows]
|
||||
|
||||
|
||||
async def get_media_versions(
|
||||
pool: asyncpg.Pool, account_id: int, chat_id: int, message_id: int
|
||||
) -> list[MediaVersionView]:
|
||||
|
||||
Reference in new issue
Block a user