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 '' | |