Spaces:
Running
Running
| import re | |
| from pathlib import Path | |
| import pickle | |
| from unidecode import unidecode | |
| PASTA_CONFIGERACOES = Path(__file__).parent / 'configuracoes' | |
| PASTA_CONFIGERACOES.mkdir(exist_ok=True) | |
| PASTA_MENSAGENS = Path(__file__).parent / 'mensagens' | |
| PASTA_MENSAGENS.mkdir(exist_ok=True) | |
| CACHE_DESCONVERTE = {} | |
| # SALVAMENTO E LEITURA DE CONVERSAS ======================== | |
| def converte_nome_mensagem(nome_mensagem): | |
| nome_arquivo = unidecode(nome_mensagem) | |
| nome_arquivo = re.sub('\\W+', '', nome_arquivo).lower() | |
| return nome_arquivo | |
| def desconverte_nome_mensagem(nome_arquivo): | |
| if not nome_arquivo in CACHE_DESCONVERTE: | |
| nome_mensagem = ler_mensagem_por_nome_arquivo(nome_arquivo, key='nome_mensagem') | |
| CACHE_DESCONVERTE[nome_arquivo] = nome_mensagem | |
| return CACHE_DESCONVERTE[nome_arquivo] | |
| def retorna_nome_da_mensagem(mensagens): | |
| nome_mensagem = '' | |
| for mensagem in mensagens: | |
| if mensagem['role'] == 'user': | |
| nome_mensagem = mensagem['content'][:30] | |
| break | |
| return nome_mensagem | |
| def salvar_mensagens(mensagens): | |
| if len(mensagens) == 0: | |
| return False | |
| nome_mensagem = retorna_nome_da_mensagem(mensagens) | |
| nome_arquivo = converte_nome_mensagem(nome_mensagem) | |
| arquivo_salvar = {'nome_mensagem': nome_mensagem, | |
| 'nome_arquivo': nome_arquivo, | |
| 'mensagem': mensagens} | |
| with open(PASTA_MENSAGENS / nome_arquivo, 'wb') as f: | |
| pickle.dump(arquivo_salvar, f) | |
| def ler_mensagem_por_nome_arquivo(nome_arquivo, key='mensagem'): | |
| with open(PASTA_MENSAGENS / nome_arquivo, 'rb') as f: | |
| mensagens = pickle.load(f) | |
| return mensagens[key] | |
| def ler_mensagens(mensagens, key='mensagem'): | |
| if len(mensagens) == 0: | |
| return [] | |
| nome_mensagem = retorna_nome_da_mensagem(mensagens) | |
| nome_arquivo = converte_nome_mensagem(nome_mensagem) | |
| with open(PASTA_MENSAGENS / nome_arquivo, 'rb') as f: | |
| mensagens = pickle.load(f) | |
| return mensagens[key] | |
| def listar_conversas(): | |
| conversas = list(PASTA_MENSAGENS.glob('*')) | |
| conversas = sorted(conversas, key=lambda item: item.stat().st_mtime_ns, reverse=True) | |
| return [c.stem for c in conversas] | |
| # SALVAMENTO E LEITURA DA APIKEY ======================== | |
| def salva_chave(chave): | |
| with open(PASTA_CONFIGERACOES / 'chave', 'wb') as f: | |
| pickle.dump(chave, f) | |
| def le_chave(): | |
| if (PASTA_CONFIGERACOES / 'chave').exists(): | |
| with open(PASTA_CONFIGERACOES / 'chave', 'rb') as f: | |
| return pickle.load(f) | |
| else: | |
| return '' | |