DanielDJ1987 commited on
Commit
3a7b9fd
·
verified ·
1 Parent(s): 20837c0

Create utils_files.py

Browse files
Files changed (1) hide show
  1. utils_files.py +76 -0
utils_files.py ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+ from pathlib import Path
3
+ import pickle
4
+
5
+ from unidecode import unidecode
6
+
7
+ PASTA_CONFIGERACOES = Path(__file__).parent / 'configuracoes'
8
+ PASTA_CONFIGERACOES.mkdir(exist_ok=True)
9
+ PASTA_MENSAGENS = Path(__file__).parent / 'mensagens'
10
+ PASTA_MENSAGENS.mkdir(exist_ok=True)
11
+ CACHE_DESCONVERTE = {}
12
+
13
+
14
+ # SALVAMENTO E LEITURA DE CONVERSAS ========================
15
+
16
+ def converte_nome_mensagem(nome_mensagem):
17
+ nome_arquivo = unidecode(nome_mensagem)
18
+ nome_arquivo = re.sub('\\W+', '', nome_arquivo).lower()
19
+ return nome_arquivo
20
+
21
+ def desconverte_nome_mensagem(nome_arquivo):
22
+ if not nome_arquivo in CACHE_DESCONVERTE:
23
+ nome_mensagem = ler_mensagem_por_nome_arquivo(nome_arquivo, key='nome_mensagem')
24
+ CACHE_DESCONVERTE[nome_arquivo] = nome_mensagem
25
+ return CACHE_DESCONVERTE[nome_arquivo]
26
+
27
+ def retorna_nome_da_mensagem(mensagens):
28
+ nome_mensagem = ''
29
+ for mensagem in mensagens:
30
+ if mensagem['role'] == 'user':
31
+ nome_mensagem = mensagem['content'][:30]
32
+ break
33
+ return nome_mensagem
34
+
35
+ def salvar_mensagens(mensagens):
36
+ if len(mensagens) == 0:
37
+ return False
38
+ nome_mensagem = retorna_nome_da_mensagem(mensagens)
39
+ nome_arquivo = converte_nome_mensagem(nome_mensagem)
40
+ arquivo_salvar = {'nome_mensagem': nome_mensagem,
41
+ 'nome_arquivo': nome_arquivo,
42
+ 'mensagem': mensagens}
43
+ with open(PASTA_MENSAGENS / nome_arquivo, 'wb') as f:
44
+ pickle.dump(arquivo_salvar, f)
45
+
46
+ def ler_mensagem_por_nome_arquivo(nome_arquivo, key='mensagem'):
47
+ with open(PASTA_MENSAGENS / nome_arquivo, 'rb') as f:
48
+ mensagens = pickle.load(f)
49
+ return mensagens[key]
50
+
51
+ def ler_mensagens(mensagens, key='mensagem'):
52
+ if len(mensagens) == 0:
53
+ return []
54
+ nome_mensagem = retorna_nome_da_mensagem(mensagens)
55
+ nome_arquivo = converte_nome_mensagem(nome_mensagem)
56
+ with open(PASTA_MENSAGENS / nome_arquivo, 'rb') as f:
57
+ mensagens = pickle.load(f)
58
+ return mensagens[key]
59
+
60
+ def listar_conversas():
61
+ conversas = list(PASTA_MENSAGENS.glob('*'))
62
+ conversas = sorted(conversas, key=lambda item: item.stat().st_mtime_ns, reverse=True)
63
+ return [c.stem for c in conversas]
64
+
65
+ # SALVAMENTO E LEITURA DA APIKEY ========================
66
+
67
+ def salva_chave(chave):
68
+ with open(PASTA_CONFIGERACOES / 'chave', 'wb') as f:
69
+ pickle.dump(chave, f)
70
+
71
+ def le_chave():
72
+ if (PASTA_CONFIGERACOES / 'chave').exists():
73
+ with open(PASTA_CONFIGERACOES / 'chave', 'rb') as f:
74
+ return pickle.load(f)
75
+ else:
76
+ return ''