File size: 3,418 Bytes
aab6e33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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()