diff --git a/src/BowongModalFunctions/router/video_match.py b/src/BowongModalFunctions/router/video_match.py index 78f1677..3c77c18 100644 --- a/src/BowongModalFunctions/router/video_match.py +++ b/src/BowongModalFunctions/router/video_match.py @@ -1,4 +1,5 @@ from datetime import datetime +from typing import Any, Coroutine import modal from modal import current_function_call_id @@ -78,27 +79,27 @@ async def video_match_video(target_image: str, reference_video: str) -> ModalTas summary="查询参考视频中匹配目标结果", description="查询参考视频中匹配目标结果,返回起止帧/匹配帧信息和置信度", dependencies=[Depends(verify_token)]) -async def video_match_video(task_id: str, response: Response) -> ImageMatchVideoStatusResponse | VideoMatchVideoStatusResponse | BaseFFMPEGTaskStatusResponse: +async def video_match_video(task_id: str, response: Response) -> None | VideoMatchVideoStatusResponse | ImageMatchVideoStatusResponse | BaseFFMPEGTaskStatusResponse: task_status, code, reason, result, transaction = await ModalUtils.get_modal_task_status(task_id) if transaction: response.headers["x-trace-id"] = transaction.x_trace_id response.headers["x-baggage"] = transaction.x_baggage - - if len(result) == 2: - return ImageMatchVideoStatusResponse(taskId=task_id, status=task_status, code=code,error=reason, frame={ - "frame_point": result[0].frame_num, - "frame_time": parse_time(result[0].timestamp), - "similarity": result[1] - }) - elif len(result) == 4: - return VideoMatchVideoStatusResponse(taskId=task_id, status=task_status, code=code,error=reason, start_frame={ - "frame_point": result[0].frame_num, - "frame_time": parse_time(result[0].timestamp), - "similarity": result[2] - },end_frame={ - "frame_point": result[1].frame_num, - "frame_time": parse_time(result[1].timestamp), - "similarity": result[3] - }) + if result: + if len(result) == 2: + return ImageMatchVideoStatusResponse(taskId=task_id, status=task_status, code=code,error=reason, frame={ + "frame_point": result[0].frame_num, + "frame_time": parse_time(result[0].timestamp), + "similarity": result[1] + }) + elif len(result) == 4: + return VideoMatchVideoStatusResponse(taskId=task_id, status=task_status, code=code,error=reason, start_frame={ + "frame_point": result[0].frame_num, + "frame_time": parse_time(result[0].timestamp), + "similarity": result[2] + },end_frame={ + "frame_point": result[1].frame_num, + "frame_time": parse_time(result[1].timestamp), + "similarity": result[3] + }) else: return BaseFFMPEGTaskStatusResponse(taskId=task_id, status=task_status, code=code,error=reason) \ No newline at end of file diff --git a/src/cluster/video.py b/src/cluster/video.py index 5b51878..9acac31 100644 --- a/src/cluster/video.py +++ b/src/cluster/video.py @@ -349,15 +349,11 @@ with downloader_image.imports(): self.frames: List[VideoFrame] = [] self.num_workers = num_workers # 线程池工作线程数 - # 配置日志 - logger.remove() - logger.add(sys.stderr, level="INFO") - # 获取视频元数据 self._get_video_metadata() def _get_styled_bar_format(self, text: str) -> str: - return f"{Style.DIM}{Fore.GREEN}{str(datetime.now())[:-3]} {Fore.MAGENTA}| {Fore.BLACK}{Style.BRIGHT}PBAR {Style.DIM}{Fore.MAGENTA}| {Fore.CYAN}{text}{Fore.RESET}{Style.BRIGHT}" + return f"{Style.DIM}{Fore.GREEN}{str(datetime.now())[:-3]} {Fore.MAGENTA}| {Fore.RESET}{Style.BRIGHT}PBAR {Style.DIM}{Fore.MAGENTA}| {Fore.CYAN}{text}{Fore.RESET}{Style.BRIGHT}" def _get_video_metadata(self) -> None: """获取视频元数据"""