Files
if-ai-ComfyUI_HunyuanVideoF…/install.py
T
2025-08-30 02:35:47 +01:00

105 lines
3.9 KiB
Python

"""
Installation script for ComfyUI HunyuanVideo-Foley Custom Node
"""
import os
import sys
import subprocess
import pkg_resources
from pathlib import Path
def check_and_install_requirements():
"""Check and install required packages"""
requirements_file = Path(__file__).parent / "requirements.txt"
if not requirements_file.exists():
print("Requirements file not found!")
return False
try:
print("Checking and installing requirements...")
# Read requirements
with open(requirements_file, 'r') as f:
requirements = f.read().splitlines()
# Filter out comments and empty lines
requirements = [line.strip() for line in requirements
if line.strip() and not line.strip().startswith('#')]
# Install packages
for requirement in requirements:
try:
# Skip git+ requirements for now (they need special handling)
if requirement.startswith('git+'):
print(f"Installing git requirement: {requirement}")
subprocess.check_call([sys.executable, '-m', 'pip', 'install', requirement])
else:
# Check if package is already installed
try:
pkg_resources.require([requirement])
print(f"✓ {requirement} already installed")
except pkg_resources.DistributionNotFound:
print(f"Installing {requirement}...")
subprocess.check_call([sys.executable, '-m', 'pip', 'install', requirement])
except pkg_resources.VersionConflict:
print(f"Updating {requirement}...")
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', requirement])
except subprocess.CalledProcessError as e:
print(f"Failed to install {requirement}: {e}")
return False
print("✅ All requirements installed successfully!")
return True
except Exception as e:
print(f"Error installing requirements: {e}")
return False
def setup_model_directories():
"""Create necessary model directories"""
base_dir = Path(__file__).parent.parent.parent # Go up to ComfyUI root
# Create ComfyUI/models/foley directory for automatic downloads
foley_models_dir = base_dir / "models" / "foley"
foley_models_dir.mkdir(parents=True, exist_ok=True)
print(f"✓ Created ComfyUI models directory: {foley_models_dir}")
# Also create local fallback directories
node_dir = Path(__file__).parent
local_dirs = [
node_dir / "pretrained_models",
node_dir / "configs"
]
for dir_path in local_dirs:
dir_path.mkdir(exist_ok=True)
print(f"✓ Created local directory: {dir_path}")
def main():
"""Main installation function"""
print("🚀 Installing ComfyUI HunyuanVideo-Foley Custom Node...")
# Install requirements
if not check_and_install_requirements():
print("❌ Failed to install requirements")
return False
# Setup directories
setup_model_directories()
print("📁 Directory structure created")
print("📋 Installation completed!")
print()
print("📌 Next steps:")
print("1. Restart ComfyUI to load the custom nodes")
print("2. Models will be automatically downloaded when you first use the node")
print("3. Alternatively, manually download models and place them in ComfyUI/models/foley/")
print("4. Model URLs are configured in model_urls.py (can be updated as needed)")
print()
return True
if __name__ == "__main__":
main()