Spaces:
Build error
Build error
import os | |
import base64 | |
from huggingface_hub import HfApi, upload_folder | |
def main(): | |
# Obtener el valor de la variable de entorno REPO_ID | |
repo_id = os.getenv('REPO_ID') | |
if repo_id is None: | |
print("REPO_ID no está definida en las variables de entorno.") | |
return | |
# Obtener la variable de entorno TOKEN para autenticarse en Hugging Face | |
token_base64 = os.getenv('TOKEN') | |
if token_base64 is None: | |
print("TOKEN no está definida en las variables de entorno.") | |
return | |
# Decodificar el token de base64 | |
token = base64.b64decode(token_base64).decode('utf-8') | |
# Configuración para la API de Hugging Face | |
api = HfApi() | |
# Obtener el nombre de usuario utilizando el token | |
try: | |
user_info = api.whoami(token=token) | |
username = user_info['name'] | |
print(f"Nombre de usuario obtenido: {username}") | |
except Exception as e: | |
print(f"Error al obtener el nombre de usuario: {e}") | |
return | |
# Eliminar el prefijo 'Usuario/' del valor de REPO_ID para obtener solo el nombre del repositorio | |
# Se asume que REPO_ID tiene el formato "Usuario/NombreDeRepo" | |
_, nombre_repo = repo_id.split('/') | |
# Crear el nuevo nombre del repositorio agregando '-GGUF' al nombre original | |
new_repo_name = f"{nombre_repo}-GGUF" | |
# Crear `repo_id` para el nuevo repositorio utilizando el nombre de usuario | |
new_repo_id = f"{username}/{new_repo_name}" | |
# Crear el repositorio con el nuevo nombre si no existe | |
try: | |
api.create_repo(repo_id=new_repo_id, token=token, private=True) | |
print(f"Repositorio '{new_repo_id}' creado en Hugging Face como privado.") | |
except Exception as e: | |
print(f"El repositorio '{new_repo_id}' ya existe o se produjo un error: {e}") | |
# Ruta a la carpeta que contiene los archivos para subir | |
model_gguf_dir = os.getenv('MODEL_GGUF_DIR') | |
if model_gguf_dir is None: | |
print("MODEL_GGUF_DIR no está definida en las variables de entorno.") | |
return | |
# Renombrar archivos en MODEL_GGUF_DIR reemplazando 'ggml-model-' por el nuevo nombre de repositorio | |
for archivo in os.listdir(model_gguf_dir): | |
if archivo.startswith("ggml-model-"): | |
# Crear el nuevo nombre reemplazando 'ggml-model-' por el nombre del nuevo repositorio | |
nuevo_nombre_archivo = archivo.replace("ggml-model-", nombre_repo + "-") | |
# Ruta completa del archivo original y del archivo renombrado | |
ruta_archivo_original = os.path.join(model_gguf_dir, archivo) | |
ruta_nuevo_archivo = os.path.join(model_gguf_dir, nuevo_nombre_archivo) | |
# Renombrar el archivo | |
os.rename(ruta_archivo_original, ruta_nuevo_archivo) | |
print(f"Renombrado {archivo} a {nuevo_nombre_archivo}") | |
# Subir toda la carpeta MODEL_GGUF_DIR al repositorio en Hugging Face | |
try: | |
# Usar `upload_folder` para subir toda la carpeta | |
upload_folder( | |
folder_path=model_gguf_dir, | |
repo_id=new_repo_id, | |
token=token | |
) | |
print(f"Todo el contenido de '{model_gguf_dir}' ha sido subido al repositorio '{new_repo_id}' en Hugging Face.") | |
except Exception as e: | |
print(f"Error al subir la carpeta '{model_gguf_dir}' al repositorio '{new_repo_id}': {e}") | |
if __name__ == '__main__': | |
main() | |