import os import tempfile import gradio as gr from huggingface_hub import HfApi # 환경 변수에서 Hugging Face 토큰 읽기 hf_token = os.getenv("HF_TOKEN") # Hugging Face API 초기화 api = HfApi() def upload_file_to_hf_space(uploaded_file): user_id = "seawolf2357" space_name = "video" repo_id = f"{user_id}/{space_name}" # 임시 파일 생성 및 업로드된 파일 데이터 쓰기 with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as tmp_file: # Gradio 2.0 이상에서는 uploaded_file이 파일의 바이너리 데이터를 직접 제공 tmp_file.write(uploaded_file) file_path = tmp_file.name # Hugging Face Spaces에 파일 업로드 api.upload_file( path_or_fileobj=file_path, path_in_repo=os.path.basename(file_path), repo_id=repo_id, token=hf_token, ) # 업로드된 파일의 URL 반환 uploaded_file_url = f"https://huggingface.co/spaces/{repo_id}/blob/main/{os.path.basename(file_path)}" os.unlink(file_path) # 임시 파일 삭제 return uploaded_file_url # Gradio 인터페이스 설정 및 실행 iface = gr.Interface( fn=upload_file_to_hf_space, inputs=gr.File(label="Upload your MP4 file"), outputs="text", title="MP4 File Upload to Hugging Face Spaces", description="Upload an MP4 file and get its URL in Hugging Face Spaces. Please ensure the file is an MP4 format." ) iface.launch()