该脚本支持不同的下载类型:Lora、检查点、嵌入、训练数据、其他或所有以及来自给定 CivitAI 用户名的相关图像,将它们组织到适当的目录中并在文本文件中维护详细信息。
它旨在仅下载指定用户名文件夹中尚未存在的文件。如果用户上传新模型,再次运行脚本将仅下载新上传的文件。
详细信息示例.txt
Model URL: https://civitai.com/models/ID File Name: Name of the Model.ending File URL: https://civitai.com/api/download/models/ID Image ID: ID Image URL: https://image.civitai.com/Random_characters/width=450/ID.jpeg
文件结构
下载的文件将按以下结构组织:
model_downloads/ ├── username1/ │ ├── Lora/ │ │ ├── SDXL 1.0/ │ │ │ └── model1/ │ │ │ ├── file1.safetensors │ │ │ ├── image1.jpeg │ │ │ ├── details.txt │ │ │ ├── triggerWords.txt │ │ │ └── description.html │ │ └── SD 1.5/ │ │ └── model2/ │ │ ├── file3.safetensors │ │ ├── image2.jpeg │ │ ├── details.txt │ │ │ ├── triggerWords.txt │ │ └── description.html │ ├── Checkpoints/ │ │ ├── FLUX/ │ │ │ └── model1/ │ │ │ ├── file.safetensors │ │ │ ├── image.jpeg │ │ │ ├── details.txt │ │ │ ├── triggerWords.txt │ │ │ └── description.html │ ├── Embeddings/ │ ├── Training_Data/ │ └── Other/ └── username2/ ├── Lora/ ├── Checkpoints/ ├── Embeddings/ ├── Training_Data/ └── Other/
install Python3
pip install -r requirements.txt
python civitAI_Model_downloader.py one or multiple usernames space separated
您还可以为脚本提供这 5 个额外参数
--retry_delay
默认=10,
“延迟几秒重试。”
--max_tries
默认=3,
“最大重试次数。”
--max_threads
默认=5,
“并发线程的最大数量。太多会导致 API 失败。”
--download_type
劳拉
检查站
嵌入
训练数据
其他
默认=全部
--token
默认=无
“它只会下载公共可用模型”
“提供一个令牌,它还可以下载 CivitAI 登录后面的那些模型。”
如果您忘记提供令牌,脚本会要求您提供令牌。
帮助程序脚本fetch_all_models.py
python fetch_all_models.py --username--token
使用帮助程序脚本 fetch_all_models.py 创建的 username.txt 示例
Summary: Total - Count: 61 Checkpoints - Count: 12 Embeddings - Count: 33 Lora - Count: 11 Training_Data - Count: 2 Other - Count: 3 Detailed Listing: Checkpoints - Count: 12 Checkpoints - Item: NAME ... Embeddings - Count: 33 Embeddings - Item: NAME - Embeddings ... Lora - Count: 11 Lora - Item: NAME ... Training_Data - Count: 2 Training_Data - Item: NAME_training_data.zip ... Other - Count: 3 Other - Item: NAME - Type: Other ...
您可以在帐户设置中创建 API 密钥。向下滚动直到最后,你会找到这个盒子
触发词文本文件
添加了为每个模型创建“triggerWords.txt”文件的功能。
该文件包含与模型关联的触发词。
“triggerWords.txt”文件保存在与模型文件相同的目录中。
基本模型文件夹组织
实现了一个新的文件夹结构,根据其基本模型组织下载。
下载内容现在被分类到以每个类别(Lora、Checkpoints 等)内各自的基本模型命名的子文件夹中。
当基本模型信息可用时,此组织适用于所有类别。
没有基本模型信息的类别文件夹保持不变
改进了日志记录以跟踪基本模型的使用情况和任何相关问题。
型号描述文件
这些文件包含创建者提供的模型的原始描述。
描述文件是可以直接在浏览器中打开的HTML文件,将创建者提供的原始描述保存在与相应模型文件相同的目录中。
添加了 Training_Data 的下载选项:
自动创建自己的下载文件夹。
保存下载的 ZIP 包、关联图像和detail.txt
文件。
引入辅助脚本fetch_all_models.py
:
根据用户名和 API 令牌从 CivitAI API 检索模型信息。
对结果进行分类并将其汇总到文本文件{username}.txt
中。
完善用户内容概览并启用统计功能。
也可以通过以下命令独立使用:
python fetch_all_models.py --username
新类型的检测和分类:
脚本现在可以识别 VAE 和 Locon 类型,并将它们分配给“其他”类别。
改进有问题字符的过滤器:
优化过滤功能,更好地处理有问题的字符。
代码优化:
所有全局变量现在都位于脚本的开头。
其他函数内不再有任何函数。
在适当的地方合并代码行以获得更好的可读性和可维护性。
ZIP包的正确分配:
ZIP 包现在根据 API 规范下载到适当的文件夹,例如 Training_Data、Lora、Other。
没有特定类别的 ZIP 包仍然在“其他”下下载。
统计固定:
统计函数现在基于新的帮助程序脚本fetch_all_models.py
,这提高了准确性和功能。
增强的字符过滤:
该脚本已被修改为广泛过滤掉禁止的和有问题的字符,以防止在文件夹创建过程中出现问题。
错误处理改进:
如果脚本遇到阻止创建文件夹的字符,它现在会记录受影响下载的名称和 URL。
此信息记录在预先存在的文本文件中,该文件会自动以正在下载其内容的用户命名。此更新允许用户在出现问题时手动完成下载。
failed_downloads_username.txt
当路径长度超过限制时,从跳过图像更改为截断。
期待已久的新功能
选择性下载选项
用户现在可以选择下载特定的内容类型:
劳拉
检查站
嵌入
其他
除了 Lora、检查点、嵌入之外的所有内容(针对下载频率较低的项目,分组在 Other_Model_types 下)
全部
是默认下载行为:如果未设置特定下载参数,则保留下载所有可用内容的默认选项。
命令行和交互增强功能:
命令行参数:用户可以通过命令行以及其他启动参数直接指定他们的下载首选项(Lora、检查点、嵌入、其他或全部)。
交互模式:如果未指定命令行参数,程序将交互提示用户选择他们想要下载的内容。按 Enter 键将激活默认设置以下载所有内容。
文件夹结构更新:
有组织的存储:程序的文件夹结构已经过重新组织,以有效地支持新的下载选项:
主目录:model_downloads/
用户特定子目录:用户名/
Lora、Checkpoints、Embeddings 和 Other_Model_types 的内容特定子文件夹,每个子文件夹都包含项目特定的子文件夹。
错误修复
如果文件名的编写方式与文件夹名称相同,则脚本将不再删除文件名。由于脚本的清理功能,这种情况可能会不时发生。
避免 OSError: [Errno 36] 文件名太长的新函数:
分页已固定
新功能多用户名