Spaces:
Sleeping
Sleeping
File size: 2,562 Bytes
3a7b9fd |
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 |
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 ''
|