File size: 3,144 Bytes
5594d1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1cc83b
00c6c3d
0a3f74c
5594d1b
00c6c3d
 
0a3f74c
00c6c3d
 
0a3f74c
22bc36d
 
 
 
 
 
 
 
 
 
 
 
5594d1b
5b493cb
 
 
 
5594d1b
f046f38
5594d1b
 
08d2bc5
f4b7201
004e503
f4b7201
 
5594d1b
 
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
import gradio as gr
import sulkuPypi
from funciones import mass
from data import usuarios
import encrypter
import time

#Funciones adicionales
def authenticate(username, password):
    
    for u, p in usuarios:
        #Si el usuario y la contraseña son correctas...
        if username == u and password == p:
            #Agrego el nombre del usuario al estado general.
            gr.State.usuario = username
            #Bienvenida al usuario...
            print("Welcome ", gr.State.usuario)

            #Capsule es el usuario encriptado que enviarás a la API de Sulku.
            capsule = encrypter.encripta(gr.State.usuario).decode("utf-8") #decode es para quitarle el 'b
            gr.State.capsule = capsule            

            #Checa cuantos tokens tiene ese usuario via la API de Sulku: 
            gr.State.tokens = sulkuPypi.getTokens(capsule)
            
            print(f"Tienes: {gr.State.tokens} tokens. ")
            
            return True
    #Si no hubo coincidencia regresas un false.    
    return False

#Función principal
def perform(input1, input2):
    
    print("Estando en perform182, la cantidad de tokens es: ", gr.State.tokens)
    #Revisaremos de nuevo: 
    gr.State.tokens = sulkuPypi.getTokens(encrypter.encripta(gr.State.usuario).decode("utf-8")) #Todo en una línea.
    print("Ahora tienes: ", gr.State.tokens) 
    
    #Después autoriza.
    #Si está autorizada puede ejecutar la tarea, ésta lógica si está a cargo aquí, por parte de la app y su desarrollador, no de Sulku.
    autorizacion = sulkuPypi.authorize(gr.State.tokens, 'picswap')
    print("La autorización es: ", autorizacion)

    #Después ejecuta la masa.
    if autorizacion is True: 
    
        path = mass(input1,input2)

    else:
        print("No tienes suficientes tokens...")
        return "No tienes suficientes tokens" 

    print(f"El path final fue {path}, si es no-result, no debites y controla la info window.")
    print(f"El type de path es: ", type(path))
    

    print("Convirtiendo path a string...")
    path_string = str(path)
    
    print("Path_string = ", path_string)

    if "no-result" not in path_string:
        #Si el path NO tiene no-result, todo funcionó bien, por lo tanto debita.
        print("Se obtuvo un resultado, debitaremos.")
        #Y finalmente debita los tokens.
        gr.State.tokens = sulkuPypi.debitTokens(gr.State.capsule, "picswap")
        print(f"Y ahora tienes: {gr.State.tokens} tokens.")
        info_window = "Image ready!"
        
    else:
        print("No se detecto un rostro...")
        info_window = "No face in source path detected."
        #No se hizo un proceso, por lo tanto no debitaremos.
        #En el futuro, como regla de negocio, podría cambiar y que si debitemos.    

    info_window = "Hola Usuario"

    #Future: Desplegar mensajes informativos en lugar de Hola.
    return path, info_window

label = gr.Label("Hola!")

demo = gr.Interface(
    fn=perform,
    title="", 
    inputs=[gr.Image(), gr.Image()], 
    outputs=[gr.Image(),label], 
    css="footer {visibility: hidden}"
    )
demo.launch(auth=authenticate)