Spaces:
Runtime error
Runtime error
| import streamlit as BaseBuilder | |
| from PIL import Image | |
| import json | |
| class Page(): | |
| def __init__(self): | |
| self.__ = BaseBuilder | |
| self.imgg = Image | |
| def page(self): | |
| return self.__ | |
| def new_page(self, title: str, icon=str(), color_divider="rainbow"): | |
| self.page().set_page_config(page_title=title, | |
| page_icon=icon, | |
| layout="wide") | |
| self.page().title(f"Clasificación de imágenes con Visión Artificial", | |
| anchor="titulo-proyecto", | |
| help=None) | |
| self.page().subheader(f"{title} {icon}", | |
| anchor="titulo-pagina", | |
| divider=color_divider, | |
| help=None) | |
| self.check_password() | |
| def new_body(self, new=False): | |
| self.__body = BaseBuilder.empty() if new else self.page().container() | |
| def get_body(self): | |
| return self.__body | |
| def init_globals(self, globals=dict({})): | |
| for _k, _v in globals.items(): | |
| if self.get_global(_k,None) is None: | |
| self.set_global(_k, _v) | |
| def set_global(self, key=str(), value=None): | |
| self.page().session_state[key] = value | |
| def get_global(self, key=str(), default=None, is_secret=False): | |
| if is_secret: | |
| return self.page().secrets.get(key, default) | |
| else: | |
| return self.page().session_state.get(key, default) | |
| def cargar_css(self, archivo_css=str("default")): | |
| ruta = f"core/estilos/{archivo_css}.css" | |
| try: | |
| with open(ruta) as archivo: | |
| self.page().markdown( | |
| f'<style>{archivo.read()}</style>', unsafe_allow_html=True) | |
| except Exception as er: | |
| print(f"Error:\n{er}") | |
| def check_password(self): | |
| if self.user_logged_in(): | |
| self.page().sidebar.success("👨💻 Conectado") | |
| self.page().sidebar.button("Logout", use_container_width=True, | |
| type="primary", on_click=self.logout) | |
| return True | |
| else: | |
| self.page().sidebar.subheader("# ¡👨💻 Desbloquea todas las funciones!") | |
| self.page().sidebar.write("¡Ingresa tu Usuario y Contraseña!") | |
| self.page().sidebar.text_input("Usuario", value="", | |
| on_change=self.login, key="USUARIO") | |
| self.page().sidebar.text_input("Password", type="password", | |
| on_change=self.login, key="PASSWORD", value="") | |
| self.page().sidebar.button("LogIn", use_container_width=True, on_click=self.login) | |
| return False | |
| def user_logged_in(self): | |
| return self.get_global('logged_in', False) | |
| def login(self): | |
| _usuario = str(self.get_global("USUARIO")) | |
| _factor = int(self.get_global('FPSSWD',"20", True)) | |
| print(_factor) | |
| if self.get_global(self.codificar(_usuario,_factor), None, True) is not None: | |
| if self.codificar(self.get_global("PASSWORD"), _factor) == self.get_global(self.codificar(_usuario,_factor), None, True): | |
| del self.page().session_state["USUARIO"] | |
| del self.page().session_state["PASSWORD"] | |
| self.set_global('logged_in', True) | |
| else: | |
| self.logout("😕 Ups! Contraseña Incorrecta") | |
| else: | |
| self.logout("😕 Ups! Nombre de Usuario Incorrecto") | |
| def logout(self, mensaje=str("¡Vuelva Pronto!")): | |
| self.page().sidebar.error(mensaje) | |
| self.set_global('hf_key') | |
| self.set_global('logged_in') | |
| def codificar(palabra=str(), modificador=None): | |
| # Acepta: | |
| # ABCDEFGHIJKLMNOPQRSTUVWXYZ | |
| # abcdefghijklmnopqrstuvwxyz | |
| # 1234567890!#$-_=%&/()*[] | |
| codigo = str() | |
| try: | |
| for _byte in bytearray(palabra.strip(), 'utf-8'): | |
| # x = f(y) => la variable 'x' estará en función de la variable 'y' | |
| # Si ... f(y) = y² * k => donde: | |
| # x es el valor decimal del input en bytes | |
| # modificador es un número real variable, definido por el usuario | |
| _y = int(format(_byte, 'b'), 2) | |
| _x = int(pow(_y, 2) * modificador) | |
| # magia | |
| codigo = f" {bin(_x)}{codigo}" | |
| except Exception as error: | |
| print(f"Error Codificando:\n{error}") | |
| return codigo.strip() | |
| def decodificar(codigo=str(), modificador=None): | |
| # SOLO DECODIFICA SU ECUACIÓN INVERSA... | |
| palabra = str() | |
| try: | |
| for _byte_str in codigo.strip().split(' '): | |
| # entonces...podemos decir que y = √(x/k) | |
| # es su ecuación inversa correspondiente | |
| _x = int(_byte_str, 2) | |
| _y = int(pow((_x/modificador), 1/2)) | |
| letra = _y.to_bytes(_y.bit_length(), 'big').decode() | |
| # magia | |
| palabra = f"{letra}{palabra}" | |
| except Exception as error: | |
| print(f"Error Decodificando:\n{error}") | |
| return palabra.stip() | |