File size: 3,213 Bytes
fad9b47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env python3
"""
Script para migrar datos locales existentes a Hugging Face Datasets.
Ejecutar DESPUÉS de crear los datasets vacíos con setup_datasets.py
"""

import os
import json
from datasets import Dataset
from dotenv import load_dotenv

load_dotenv()

# Configuración
HF_TOKEN = os.getenv("HF_TOKEN")
USERNAME = "Edoruin"

# Mapeo de archivos locales a datasets
MIGRATIONS = [
    {
        "local_file": "/app/data/users.json",
        "dataset_name": f"{USERNAME}/makerpage-users",
        "data_key": "users",
        "description": "Usuarios"
    },
    {
        "local_file": "/app/data/classrooms.json",
        "dataset_name": f"{USERNAME}/makerpage-classrooms",
        "data_key": "classrooms",
        "description": "Aulas/Cursos"
    },
    {
        "local_file": "/app/data/prestamos.json",
        "dataset_name": f"{USERNAME}/makerpage-loans",
        "data_key": "loans",
        "description": "Préstamos"
    },
    {
        "local_file": "/app/data/faces.json",
        "dataset_name": f"{USERNAME}/makerpage-faces",
        "data_key": "faces",
        "description": "Rostros"
    }
]

def migrate_file(local_file, dataset_name, data_key, description):
    """Migra un archivo JSON local a un dataset de HF."""
    
    # Verificar si el archivo existe
    if not os.path.exists(local_file):
        print(f"⚠️  {description}: Archivo no encontrado ({local_file}), usando datos vacíos")
        data = []
    else:
        # Leer datos locales
        try:
            with open(local_file, 'r') as f:
                data = json.load(f)
            print(f"📂 {description}: {len(data)} registros encontrados")
        except Exception as e:
            print(f"❌ {description}: Error leyendo archivo - {e}")
            return False
    
    # Subir a Hugging Face
    try:
        dataset_dict = {data_key: [data]}
        dataset = Dataset.from_dict(dataset_dict)
        dataset.push_to_hub(
            dataset_name,
            token=HF_TOKEN,
            private=True
        )
        print(f"✅ {description}: Migrado exitosamente a {dataset_name}\n")
        return True
        
    except Exception as e:
        print(f"❌ {description}: Error subiendo a HF - {e}\n")
        return False

def main():
    if not HF_TOKEN:
        print("❌ ERROR: No se encontró HF_TOKEN")
        return
    
    print("🔄 Iniciando migración de datos locales a Hugging Face Datasets\n")
    print("=" * 60)
    
    success_count = 0
    for migration in MIGRATIONS:
        if migrate_file(**migration):
            success_count += 1
    
    print("=" * 60)
    print(f"\n✨ Migración completada: {success_count}/{len(MIGRATIONS)} datasets actualizados")
    
    if success_count == len(MIGRATIONS):
        print("\n🎉 ¡Todos los datos han sido migrados exitosamente!")
        print("\n📋 Próximos pasos:")
        print("1. Reinicia tu Hugging Face Space")
        print("2. Verifica que los datos aparezcan correctamente")
        print("3. Ahora puedes hacer factory rebuild sin perder datos")
    else:
        print("\n⚠️  Algunos datasets no se pudieron migrar. Revisa los errores arriba.")

if __name__ == "__main__":
    main()