Spaces:
Runtime error
Runtime error
File size: 3,866 Bytes
493749a 640ac93 33f307f 6d83a58 493749a 640ac93 6d83a58 493749a 640ac93 33f307f 493749a 33f307f 493749a 640ac93 493749a f4e4dbc 0dffa22 f4e4dbc 0dffa22 feb9e51 493749a 6d83a58 493749a |
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 |
import gradio as gr
import sulkuPypi
from funciones import mass
import tools
import auth
#Funciones
#Función principal
def perform(input1, input2, request: gr.Request):
tokens = sulkuPypi.getTokens(sulkuPypi.encripta(request.username).decode("utf-8")) #Todo en una línea.
#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)
if autorizacion is True:
path = mass(input1,input2)
else:
info_window = "Out of credits..."
path = 'no-credits.png'
return path, info_window, html_credits, btn_buy
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-source-face" 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.
#IMPORTANTE: Tienes que reconstruir capsule ahora que ya se obtiene del request, sino, capsule sera un State para el uso...
#...de todos y es ahí donde radica el problema:
capsule = sulkuPypi.encripta(request.username).decode("utf-8") #decode es para quitarle el 'b
tokens = sulkuPypi.debitTokens(capsule, "picswap")
html_credits = tools.actualizar_creditos(tokens, request.username)
print(f"html credits quedó como : {html_credits} y es del tipo: {type(html_credits)}")
info_window = "Image ready!"
else:
print("No se detectó un rostro...")
info_window = "No face in source path detected."
html_credits = tools.actualizar_creditos(tokens, request.username)
#No se hizo un proceso, por lo tanto no debitaremos.
#En el futuro, como regla de negocio, podría cambiar y que si debitemos.
return path, info_window, html_credits, btn_buy
def display_tokens(request: gr.Request):
#Para desplegar o no desplegar, necesitamos saber si el usuario es new user.
flag = sulkuPypi.getFlag(sulkuPypi.encripta(request.username).decode("utf-8"))
print("La flag obtenida es: ", flag)
#FUTURE quizá das doble vuelta decodificando porque haya lo vuelves a encodear, prueba enviando sin decode...
#...llegaría codificado a encripta y prueba allá no encode.
tokens = sulkuPypi.getTokens(sulkuPypi.encripta(request.username).decode("utf-8"))
display = tools.actualizar_creditos(tokens, request.username)
return display
#Inputs
source_image = gr.Image(label="Source")
destination_image = gr.Image(label="Destination")
#Outputs
creditos = None
result_image = gr.Image(label="Blend Result")
txt_credits = gr.Textbox(label="Credits Available", value="", interactive=False)
html_credits = gr.HTML()
lbl_console = gr.Label(label="AI Terminal Messages", value="AI Engine ready...", container=True)
btn_buy = gr.Button("Buy More", visible=False, size='lg')
with gr.Blocks(theme=gr.themes.Base(), css="footer {visibility: hidden}") as main:
#Cargado en Load, Función, input, output
main.load(display_tokens, None, html_credits)
with gr.Row():
demo = gr.Interface(
fn=perform,
inputs=[source_image, destination_image],
outputs=[result_image, lbl_console, html_credits, btn_buy],
allow_flagging='never'
)
main.launch(auth=auth.authenticate) |