| | |
| | """ |
| | Upload Infinite-World repo to Hugging Face Hub (including checkpoints). |
| | |
| | Prerequisites: |
| | 1. pip install huggingface_hub |
| | 2. huggingface-cli login # or: from huggingface_hub import login; login() |
| | |
| | Usage: |
| | cd infinite-world |
| | python scripts/upload_to_hf.py [REPO_ID] |
| | |
| | Examples: |
| | python scripts/upload_to_hf.py |
| | python scripts/upload_to_hf.py your-username/infinite-world |
| | """ |
| |
|
| | import os |
| | import sys |
| |
|
| | |
| | PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
| |
|
| |
|
| | def main(): |
| | try: |
| | from huggingface_hub import HfApi, create_repo, whoami |
| | except ImportError: |
| | print("Install: pip install huggingface_hub") |
| | sys.exit(1) |
| |
|
| | repo_id = ( |
| | (sys.argv[1] if len(sys.argv) > 1 else None) |
| | or os.environ.get("HF_REPO_ID") |
| | or "MeiGen-AI/Infinite-World" |
| | ) |
| |
|
| | |
| | try: |
| | info = whoami() |
| | print(f"[HF] Logged in as: {info.get('name', info.get('type', '?'))}") |
| | except Exception as e: |
| | print("[HF] Not logged in or token invalid (401).") |
| | print(" Run: huggingface-cli login") |
| | print(" Get a token with WRITE at: https://huggingface.co/settings/tokens") |
| | print(" For org repo MeiGen-AI/Infinite-World, your account must have write access to the MeiGen-AI org.") |
| | sys.exit(1) |
| |
|
| | api = HfApi() |
| | repo_type = "model" |
| |
|
| | |
| | try: |
| | create_repo(repo_id, repo_type=repo_type, exist_ok=True) |
| | print(f"[HF] Repo ready: https://huggingface.co/{repo_id}") |
| | except Exception as e: |
| | err = str(e).lower() |
| | if "401" in err or "unauthorized" in err: |
| | print("[HF] No write permission for this repo. Fix: use a token with write access; for MeiGen-AI/Infinite-World, be a member of MeiGen-AI org or use the org token.") |
| | sys.exit(1) |
| | print(f"[HF] Create repo: {e}") |
| | |
| |
|
| | |
| | ignore_patterns = [ |
| | "__pycache__", |
| | "*.pyc", |
| | ".git", |
| | "outputs", |
| | ".cursor", |
| | "*.egg-info", |
| | ".eggs", |
| | ] |
| |
|
| | |
| | upload_kw = dict( |
| | folder_path=PROJECT_ROOT, |
| | repo_id=repo_id, |
| | repo_type=repo_type, |
| | ignore_patterns=ignore_patterns, |
| | ) |
| | print(f"[HF] Uploading from {PROJECT_ROOT} to {repo_id} (including checkpoints/) ...") |
| | try: |
| | api.upload_folder(**upload_kw, use_gitignore=False) |
| | except TypeError: |
| | |
| | api.upload_folder(**upload_kw) |
| | checkpoints_dir = os.path.join(PROJECT_ROOT, "checkpoints") |
| | if os.path.isdir(checkpoints_dir): |
| | print(f"[HF] Uploading checkpoints/ to {repo_id} ...") |
| | api.upload_folder( |
| | folder_path=checkpoints_dir, |
| | repo_id=repo_id, |
| | path_in_repo="checkpoints", |
| | repo_type=repo_type, |
| | ) |
| | print(f"[HF] Done: https://huggingface.co/{repo_id}") |
| |
|
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|