{"id":50488382,"url":"https://github.com/kuloud/scripts","last_synced_at":"2026-06-02T00:30:37.511Z","repository":{"id":353795022,"uuid":"1220936731","full_name":"kuloud/scripts","owner":"kuloud","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-25T14:50:36.000Z","size":165,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T16:26:53.829Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kuloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-25T14:36:22.000Z","updated_at":"2026-04-25T14:50:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kuloud/scripts","commit_stats":null,"previous_names":["kuloud/scripts"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/kuloud/scripts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuloud%2Fscripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuloud%2Fscripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuloud%2Fscripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuloud%2Fscripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kuloud","download_url":"https://codeload.github.com/kuloud/scripts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuloud%2Fscripts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33800675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-02T00:30:36.754Z","updated_at":"2026-06-02T00:30:37.502Z","avatar_url":"https://github.com/kuloud.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 脚本工具集\n\n实用脚本工具集合。\n\n## ComfyUI 模型批量下载工具\n\n使用国内镜像代理批量下载 Hugging Face 模型到 ComfyUI 目录。\n\n### 功能特点\n\n- ✅ **国内镜像加速** - 自动替换为 `hf-mirror.com` 镜像源\n- ✅ **动态目录匹配** - 自动扫描 ComfyUI models 目录结构\n- ✅ **批量下载** - 支持从列表文件批量下载，跳过失败项继续执行\n- ✅ **智能分类** - 根据URL路径和文件名自动识别目标目录\n\n### 界面预览\n\n![ComfyUI Model Downloader](screenshots/comfy_downloader.png)\n\n### 项目结构\n\n```\nscripts/\n├── comfy_model_downloader.py    # 模型下载脚本\n├── urls.txt                     # 下载地址列表\n├── file_organizer.py            # 文件整理脚本\n├── screenshots/\n│   └── comfy_downloader.png     # 截图\n└── README.md\n```\n\n### 快速开始\n\n#### 1. 安装依赖\n\n```bash\npip install requests tqdm\n```\n\n#### 2. 准备下载列表\n\n编辑 `urls.txt` 文件，每行一个下载链接（`#` 开头为注释）：\n\n```txt\n# ComfyUI 模型下载列表\n\n# Wan 2.2 模型\nhttps://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors\n\n# Stable Diffusion v1.5\nhttps://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors\n\n# SDXL VAE\nhttps://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl-vae.safetensors\n```\n\n#### 3. 运行下载\n\n```bash\n# 使用默认路径 ~/comfy/ComfyUI\npython3 comfy_model_downloader.py --url-list urls.txt\n\n# 指定自定义 ComfyUI 路径\npython3 comfy_model_downloader.py --url-list urls.txt --comfy-path /path/to/comfyui\n```\n\n### 使用说明\n\n#### 命令行参数\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `--url-list` | 下载地址列表文件路径 | 必需 |\n| `--comfy-path` | ComfyUI 根目录路径 | `~/comfy/ComfyUI` |\n\n#### 动态目录匹配规则\n\n脚本会自动扫描 `ComfyUI/models/` 目录下的所有子目录，按以下规则匹配：\n\n1. 读取 ComfyUI models 目录下的所有子目录名称\n2. 在URL路径和文件名中查找匹配的目录名\n3. 找到匹配则使用对应目录，否则默认使用 `models/checkpoints`\n\n**匹配示例：**\n\n| URL 关键词 | 目标目录 |\n|------------|----------|\n| `diffusion_models` | `models/diffusion_models` |\n| `lora` | `models/loras` |\n| `controlnet` | `models/controlnet` |\n| `vae` | `models/vae` |\n| `embedding` | `models/embeddings` |\n| 其他 | `models/checkpoints` |\n\n#### 批量下载特性\n\n- 支持 `#` 注释行和空行\n- 单个下载失败不影响其他任务\n- 显示下载进度条\n- 最终统计成功/失败数量\n\n### 常用模型推荐\n\n#### Diffusion Models\n\n```txt\n# Wan 2.2\nhttps://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors\n\n# Stable Diffusion XL\nhttps://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors\n```\n\n#### VAE Models\n\n```txt\n# SDXL VAE\nhttps://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl-vae.safetensors\n\n# FP16 VAE\nhttps://huggingface.co/madebyollin/sdxl-vae-fp16-fix/resolve/main/sdxl-vae-fp16-fix.safetensors\n```\n\n#### LoRA Models\n\n```txt\n# Pony LoRA\nhttps://huggingface.co/KappaVLeo/pony Diffusion_v6/sDXL08.safetensors\n```\n\n### 注意事项\n\n1. 确保网络连接正常\n2. 下载大模型需要较长时间，请耐心等待\n3. 如遇下载失败，脚本会自动跳过并继续下载其他模型\n4. 确保有足够的磁盘空间\n\n## 文件批量整理工具\n\n用于批量重命名或删除文件/目录的脚本。\n\n### 功能\n\n- ✅ 批量重命名文件/目录\n- ✅ 批量删除文件/目录\n- ✅ 支持正则表达式匹配\n- ✅ 递归查找\n- ✅ 预览模式\n\n### 安装\n\n```bash\n# 无需额外依赖，使用Python标准库\n```\n\n### 使用方法\n\n#### 1. 批量删除文件\n\n```bash\n# 删除当前目录下所有 .tmp 文件（预览模式）\npython3 file_organizer.py --pattern '\\.tmp$' --action delete --preview\n\n# 实际删除（会有确认提示）\npython3 file_organizer.py --pattern '\\.tmp$' --action delete\n\n# 递归删除所有 .bak 文件\npython3 file_organizer.py --dir /path/to/dir --pattern '\\.bak$' --action delete --recursive\n```\n\n#### 2. 批量重命名文件\n\n```bash\n# 预览重命名（将所有 .txt 文件重命名为 new_{name}.txt）\npython3 file_organizer.py --pattern '\\.txt$' --action rename --new-name 'new_{name}' --preview\n\n# 实际重命名\npython3 file_organizer.py --pattern '\\.txt$' --action rename --new-name 'new_{name}'\n\n# 递归重命名（添加前缀）\npython3 file_organizer.py --dir /path/to/dir --pattern '^photo' --action rename --new-name 'vacation_{name}' --recursive\n```\n\n### 参数说明\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `--dir` | 目标目录 | `.` (当前目录) |\n| `--pattern` | 匹配模式（正则表达式） | 必需 |\n| `--action` | 操作类型 (`rename` 或 `delete`) | 必需 |\n| `--new-name` | 新文件名模式（仅重命名时需要） | - |\n| `--recursive` | 递归查找 | `False` |\n| `--preview` | 预览模式，不执行实际操作 | `False` |\n\n### 新文件名模式\n\n在 `--new-name` 参数中可以使用以下占位符：\n\n- `{name}` - 原始文件名（包含扩展名）\n- `{ext}` - 原始文件扩展名（不包含点）\n\n**示例：**\n- `new_{name}` → `new_original.txt`\n- `{name}_backup` → `original_backup.txt`\n- `file_{ext}` → `file_txt.txt`\n\n### 正则表达式示例\n\n| 模式 | 匹配内容 |\n|------|----------|\n| `\\.tmp$` | 所有 .tmp 文件 |\n| `^photo` | 以 photo 开头的文件 |\n| `202[3-5]` | 包含 2023、2024、2025 的文件 |\n| `\\.(jpg|png)$` | 所有 jpg 或 png 文件 |\n| `backup` | 包含 backup 的文件 |\n\n### 安全提示\n\n1. **使用预览模式**：在执行删除操作前，先使用 `--preview` 查看匹配结果\n2. **确认操作**：删除操作会有确认提示\n3. **递归操作**：使用 `--recursive` 时要特别小心，可能会影响深层目录\n4. **备份重要文件**：在执行批量操作前，建议备份重要文件\n\n### 示例\n\n#### 示例 1: 清理临时文件\n\n```bash\n# 删除所有临时文件\npython3 file_organizer.py --pattern '\\.(tmp|temp|backup)$' --action delete --recursive\n```\n\n#### 示例 2: 重命名照片\n\n```bash\n# 重命名所有照片文件，添加日期前缀\npython3 file_organizer.py --pattern '\\.(jpg|png|jpeg)$' --action rename --new-name '2024_{name}'\n```\n\n#### 示例 3: 整理文档\n\n```bash\n# 重命名所有文档文件，按类型分类\npython3 file_organizer.py --pattern '\\.pdf$' --action rename --new-name 'document_{name}'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuloud%2Fscripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuloud%2Fscripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuloud%2Fscripts/lists"}