mirror of
https://github.com/eigent-ai/eigent.git
synced 2026-05-29 19:15:39 +00:00
45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
import os
|
|
from typing import List
|
|
from PIL.Image import Image
|
|
from camel.toolkits import VideoDownloaderToolkit as BaseVideoDownloaderToolkit
|
|
|
|
from app.component.environment import env
|
|
from app.service.task import Agents
|
|
from app.utils.listen.toolkit_listen import listen_toolkit
|
|
from app.utils.toolkit.abstract_toolkit import AbstractToolkit
|
|
|
|
|
|
class VideoDownloaderToolkit(BaseVideoDownloaderToolkit, AbstractToolkit):
|
|
agent_name: str = Agents.multi_modal_agent
|
|
|
|
def __init__(
|
|
self,
|
|
api_task_id: str,
|
|
working_directory: str | None = None,
|
|
cookies_path: str | None = None,
|
|
timeout: float | None = None,
|
|
) -> None:
|
|
if working_directory is None:
|
|
working_directory = env("file_save_path", os.path.expanduser("~/Downloads"))
|
|
super().__init__(working_directory, cookies_path, timeout)
|
|
self.api_task_id = api_task_id
|
|
|
|
@listen_toolkit(BaseVideoDownloaderToolkit.download_video)
|
|
def download_video(self, url: str) -> str:
|
|
return super().download_video(url)
|
|
|
|
@listen_toolkit(
|
|
BaseVideoDownloaderToolkit.get_video_bytes,
|
|
lambda _, video_path: f"get video bytes from {video_path}",
|
|
lambda _: "get video bytes",
|
|
)
|
|
def get_video_bytes(self, video_path: str) -> bytes:
|
|
return super().get_video_bytes(video_path)
|
|
|
|
@listen_toolkit(
|
|
BaseVideoDownloaderToolkit.get_video_screenshots,
|
|
lambda _, video_path, amount: f"get video screenshots from {video_path}, amount: {amount}",
|
|
lambda results: f"get video screenshots {len(results)}",
|
|
)
|
|
def get_video_screenshots(self, video_path: str, amount: int) -> List[Image]:
|
|
return super().get_video_screenshots(video_path, amount)
|