El script admite diferentes tipos de descarga: Lora, puntos de control, incrustaciones, datos de entrenamiento, otros o todos e imágenes relacionadas de un nombre de usuario de CivitAI determinado, organizándolas en directorios apropiados y manteniendo los detalles en un archivo de texto.
Está diseñado para descargar sólo los archivos que aún no están presentes en la carpeta del nombre de usuario especificado. Si el usuario carga nuevos modelos, ejecutar el script nuevamente descargará solo los archivos recién cargados.
Ejemplo de Detalles.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
Estructura de archivos
Los archivos descargados se organizarán en la siguiente estructura:
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
También puedes darle al guión estos 5 argumentos adicionales.
--retry_delay
predeterminado = 10,
"Retardo de reintento en segundos".
--max_tries
predeterminado = 3,
"Número máximo de reintentos".
--max_threads
predeterminado = 5,
"Número máximo de subprocesos simultáneos. Demasiados producen fallas de API".
--download_type
lora
Puntos de control
Incrustaciones
Datos_entrenamiento
Otro
Predeterminado = Todo
--token
predeterminado=Ninguno
"Solo descargará los modelos disponibles públicamente"
"Proporcione un token y también podrá descargar esos modelos detrás del inicio de sesión de CivitAI".
Si olvidó proporcionar un token, el script le solicitará su token.
Script auxiliar fetch_all_models.py
python fetch_all_models.py --username--token
Ejemplo de nombre de usuario.txt creado con el script auxiliar fetch_all_models.py
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 ...
Puede crear su clave API aquí Configuración de la cuenta. Desplázate hacia abajo hasta el final y encontrarás este cuadro.
Archivo de texto de palabras desencadenantes
Se agregó funcionalidad para crear un archivo "triggerWords.txt" para cada modelo.
Este archivo contiene las palabras desencadenantes asociadas con el modelo.
El archivo "triggerWords.txt" se guarda en el mismo directorio que los archivos del modelo.
Organización de carpetas del modelo base
Implementó una nueva estructura de carpetas que organiza las descargas según su modelo base.
Las descargas ahora se clasifican en subcarpetas con el nombre de sus respectivos modelos base dentro de cada categoría (Lora, Checkpoints, etc.).
Esta organización se aplica a todas las categorías cuando la información del modelo base está disponible.
Las carpetas de categorías sin información del modelo base permanecen sin cambios.
Registro mejorado para rastrear el uso del modelo base y cualquier problema relacionado.
Archivos de descripción del modelo
Estos archivos contienen la descripción original del modelo proporcionada por el creador.
Archivos de descripción que son archivos HTML que se pueden abrir directamente en un navegador, guardando las descripciones originales proporcionadas por los creadores en el mismo directorio que los archivos de modelo correspondientes.
Opción de descarga para Training_Data agregada:
Crea automáticamente su propia carpeta de descarga.
Guarda los paquetes ZIP descargados, las imágenes asociadas y un archivo detail.txt
.
Introducción de un script auxiliar fetch_all_models.py
:
Recupera información del modelo de la API de CivitAI según el nombre de usuario y el token de API.
Categoriza los resultados y los resume en un archivo de texto {username}.txt
.
Mejora la visión general del contenido del usuario y habilita la función de estadísticas.
También se puede utilizar de forma independiente con el siguiente comando:
python fetch_all_models.py --username
Detección y categorización de nuevos tipos:
El script reconoce ahora los tipos VAE y Locon y los asigna a la categoría "Otros".
Mejora del filtro de personajes problemáticos:
Optimización de funciones de filtro para manejar mejor los caracteres problemáticos.
Optimizaciones de código:
Todas las variables globales están ahora al comienzo del script.
No más funciones dentro de otras funciones.
Combine líneas de código cuando corresponda para mejorar la legibilidad y el mantenimiento.
Asignación correcta de paquetes ZIP:
Los paquetes ZIP ahora se descargan en las carpetas apropiadas según las especificaciones de la API, por ejemplo, Training_Data, Lora, Other.
Los paquetes ZIP sin una categoría específica aún se descargan en "Otros".
Estadísticas arregladas:
La función de estadísticas ahora se basa en el nuevo script auxiliar fetch_all_models.py
, que mejora la precisión y la funcionalidad.
Filtrado de caracteres mejorado:
El script se ha modificado para filtrar ampliamente los caracteres prohibidos y problemáticos para evitar problemas durante el proceso de creación de la carpeta.
Mejoras en el manejo de errores:
En los casos en que el script encuentra caracteres que impiden la creación de carpetas, ahora registra el nombre y la URL de la descarga afectada.
Esta información se registra en un archivo de texto preexistente, que automáticamente recibe el nombre del usuario cuyo contenido se descarga. Esta actualización permite a los usuarios completar descargas manualmente si surgen problemas.
failed_downloads_username.txt
Se cambió de Omitir imagen a Truncar cuando la longitud de la ruta excede el límite.
Nueva característica tan esperada
Opciones de descarga selectiva
Los usuarios ahora pueden elegir descargar tipos de contenido específicos:
lora
Puntos de control
Incrustaciones
Otro
Todo menos Lora, Checkpoints, Embeddings (agrupados en Other_Model_types para elementos descargados con menos frecuencia)
Todo
es el comportamiento de descarga predeterminado: la opción predeterminada para descargar todo el contenido disponible permanece si no se configuran parámetros de descarga específicos.
Línea de comando y mejoras interactivas:
Argumentos de la línea de comandos: los usuarios pueden especificar directamente su preferencia de descarga (Lora, puntos de control, incrustación, otros o todos) a través de la línea de comandos junto con otros parámetros de inicio.
Modo interactivo: si no se especifican argumentos de línea de comando, el programa solicitará a los usuarios de forma interactiva que seleccionen el contenido que desean descargar. Al presionar la tecla Enter se activa la configuración predeterminada para descargar todo el contenido.
Actualización de la estructura de carpetas:
Almacenamiento organizado: la estructura de carpetas del programa se ha reorganizado para admitir nuevas opciones de descarga de manera eficiente:
Directorio principal: model_downloads/
Subdirectorio específico del usuario: Nombre de usuario/
Subcarpetas de contenido específico para Lora, Checkpoints, Embeddings y Other_Model_types, cada una de las cuales contiene subcarpetas específicas de elementos.
Corrección de errores
El script ya no eliminará el nombre del archivo si está escrito de la misma manera que el nombre de la carpeta. Esto podría suceder de vez en cuando debido a la función de desinfección del script.
Nueva función para evitar OSError: [Errno 36] Nombre de archivo demasiado largo:
La paginación es fija.
Nueva función Múltiples nombres de usuario