-
-
Notifications
You must be signed in to change notification settings - Fork 27
/
myCripto_Monitor.py
90 lines (74 loc) · 3.07 KB
/
myCripto_Monitor.py
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
78
79
80
81
82
83
84
85
86
87
88
89
90
import locale
import time
from rich import print
from rich.console import Console
from rich.panel import Panel
from rich.table import Table
from utils.horas import obter_hora
from utils.logo import logo
from utils.porcentagem import calc_porc
from utils.requisição import loop
# Configuração do sistema para R$
locale.setlocale(locale.LC_MONETARY, "pt_BR.UTF-8")
def monitorar_criptomoeda(nome, lista):
try:
# Realiza a requisição e armazena os dados na lista
valor_atual = loop(nome)
lista.append(valor_atual)
# Formata o valor e calcula a porcentagem de variação
valor_formatado = locale.currency(valor_atual, grouping=True)
porcentagem = calc_porc(lista[-2], lista[-1]) if lista[-2] != 1.00 else "Calculando.."
# Determina o estilo com base na variação do valor
style = "green" if valor_atual > lista[-2] else "red" if valor_atual < lista[-2] else "yellow"
return valor_formatado, porcentagem, style
except Exception as e:
# Em caso de erro, retorna valores vazios e registra a exceção
print(f"Erro ao monitorar {nome}: {e}")
return "", "", ""
def criar_tabela():
# Cria uma tabela vazia com as colunas definidas
table = Table(title="")
table.add_column("Criptomoeda", justify="center", no_wrap=True)
table.add_column("Valor", justify="center")
table.add_column("Data/Hora", justify="center")
table.add_column("Status", justify="center")
table.add_column("Porcentagem", justify="center")
return table
def main():
# Inicializa as listas de criptomoedas
criptomoedas = {
"BTC": [1.00],
"ETH": [1.00],
"XRP": [1.00],
"PAXG": [1.00],
"USDC": [1.00]
# Adicione novas criptomoedas aqui seguindo a mesma estrutura
}
# Imprime o logo e a mensagem de desenvolvimento
logo("Mercado Bitcoin")
print(Panel.fit("Desenvolvido por: Vinícius Azevedo"))
while True:
try:
# Obtém a data/hora atual
data_hora = obter_hora()
# Cria uma instância do console Rich
console = Console()
# Cria uma nova tabela
table = criar_tabela()
# Preenche a tabela com os dados das criptomoedas
for nome, lista in criptomoedas.items():
valor, porcentagem, style = monitorar_criptomoeda(nome.lower(), lista)
table.add_row(nome, str(valor), data_hora, "⬆" if style == "green" else "⬇" if style == "red" else "=", porcentagem, style=style)
# Imprime a tabela
console.print(table)
# Aguarda um intervalo de tempo antes de atualizar novamente
time.sleep(30)
except KeyboardInterrupt:
# Em caso de interrupção pelo usuário (Ctrl+C), encerra o programa
print("\nPrograma encerrado pelo usuário.")
break
except Exception as e:
# Em caso de exceção não tratada, registra o erro e continua a execução
print(f"Erro não tratado: {e}")
if __name__ == "__main__":
main()