movie_search_metadata/demo_app/backend/main.py (36 lines of code) (raw):
import os
import traceback
from typing import List
import uvicorn
from fastapi import FastAPI, Query
from scene_search import search_scenes
from file_search import search_files
from utils import generate_download_signed_url_v4
app = FastAPI()
@app.get('/')
def root():
pass
@app.get('/file_search')
async def api_file_search(
query: str = Query(..., description='検索キーワード')
) -> dict:
try:
results = search_files(query)
return {'results': results}
except Exception as e:
traceback.print_exc()
return {'error': str(e)}, 500
@app.get('/scene_search')
async def api_scene_search(
query: str = Query(..., description='検索キーワード'),
top_n: int = Query(1, le=3, description='上位何件の動画に対してシーン検索を行うか')
) -> dict:
try:
results = search_scenes(query, top_n=top_n)
return {'results': results}
except Exception as e:
traceback.print_exc()
return {'error': str(e)}, 500
if __name__ == '__main__':
port = int(os.getenv('PORT', 8080))
uvicorn.run(app, host='0.0.0.0', port=port)