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)