44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
import folder_paths
|
|
import nodes
|
|
import os
|
|
from typing import Tuple
|
|
|
|
class VideoFileUploader:
|
|
"""
|
|
Custom node for uploading video files to Gemini API
|
|
"""
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"video_path": ("STRING", {"default": "", "label": "Video File Path"}),
|
|
"api_key": ("STRING", {"default": "", "label": "Gemini API Key"}), # 模拟API Key输入
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("STRING",)
|
|
RETURN_NAMES = ("video_url",)
|
|
FUNCTION = "upload_video"
|
|
CATEGORY = "DeepSeek_Toolkit"
|
|
|
|
def upload_video(self, video_path: str, api_key: str) -> Tuple[str]:
|
|
"""
|
|
Uploads a video file to the Gemini API using the File API.
|
|
"""
|
|
# 模拟文件上传
|
|
if not os.path.exists(video_path):
|
|
raise FileNotFoundError(f"Video file not found: {video_path}")
|
|
|
|
# 模拟上传过程
|
|
print(f"[INFO] 上传视频文件: {video_path}")
|
|
# 模拟生成视频URL
|
|
video_url = f"gemini://file/{os.path.basename(video_path)}" # 模拟视频URL
|
|
print(f"[INFO] 视频上传完成,URL: {video_url}")
|
|
|
|
return (video_url,)
|
|
|
|
|
|
# 注册节点
|
|
NODE_CLASS_MAPPINGS = {"VideoFileUploader": VideoFileUploader}
|
|
NODE_DISPLAY_NAME_MAPPINGS = {"VideoFileUploader": "Video File Uploader"} |