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()