From 77a735743adf5ff26f80d9d28e3bd0b98b647679 Mon Sep 17 00:00:00 2001 From: marco Date: Mon, 7 Sep 2026 12:33:42 -0300 Subject: [PATCH] feat(ui): add terminal formatting and colored output - Implement ANSI color codes and formatted display functions - Add banner and configuration panel for startup - Introduce terminal width configuration option - Update default timing intervals and confidence threshold - Add screenshot reference file --- .env | 9 +- __pycache__/main.cpython-311.pyc | Bin 11064 -> 16826 bytes log.txt | 223 ++++++++++++++++++++++++++ main.py | 265 ++++++++++++++++++++++--------- tela1.png | Bin 0 -> 68276 bytes 5 files changed, 422 insertions(+), 75 deletions(-) create mode 100644 tela1.png diff --git a/.env b/.env index c67e027..7003fcd 100755 --- a/.env +++ b/.env @@ -1,9 +1,10 @@ -INTERVALO_MINIMO_CLIQUE=10 -INTERVALO_MAXIMO_CLIQUE=30 +LARGURA_TERMINAL=50 +INTERVALO_MINIMO_CLIQUE=5 +INTERVALO_MAXIMO_CLIQUE=10 INTERVALO_PRIMEIRO_CLIQUE=10 -MAXIMO_CLIQUES_POR_SESSAO=20 +MAXIMO_CLIQUES_POR_SESSAO=10 INTERVALO_ENTRE_SESSOES=120 MAXIMO_FALHAS=3 HORA_INICIO=09:00 HORA_FIM=18:00 -CONFIANCA=0.8 +CONFIANCA=0.9 diff --git a/__pycache__/main.cpython-311.pyc b/__pycache__/main.cpython-311.pyc index 0a2599025976eb519c0ddb6085f0f9ae17ceb6b0..9c137285161fe72435d873ffac5a5cfc1eb42c47 100644 GIT binary patch literal 16826 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 cYei#ijG3Nt34el3jnO@keT>z1C@>rA69NB8e_Z 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 ZQl#ko3vZ6x8p-3|hLfOLp%}~h{{mRVR0IG3 diff --git a/log.txt b/log.txt index 72a6895..a44a8ab 100755 --- a/log.txt +++ b/log.txt @@ -187,3 +187,226 @@ Sistema interrompido pelo usuário (CTRL+C). [2026-09-07 12:00:41] Aguardando 13s até o próximo ciclo... [2026-09-07 12:00:50] Sistema interrompido pelo usuário (CTRL+C). +[2026-09-07 12:09:04] Pressione CTRL+C para parar. +[2026-09-07 12:09:04] [Sessão 1] Botão encontrado! Confiança: 0.91 | Pos: (450, 320) +[2026-09-07 12:09:04] Clique #1/20 | Total geral: 1 +[2026-09-07 12:09:04] [Sessão 1] Aguardando 17s até o próximo ciclo... +[2026-09-07 12:09:04] [Sessão 2] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:09:04] [Sessão 2] Clicando em (450, 320)... +[2026-09-07 12:09:04] Clique #5/20 | Total geral: 5 +[2026-09-07 12:09:04] Total de cliques realizados: 5 +[2026-09-07 12:11:04] Pressione CTRL+C para parar. +[2026-09-07 12:11:04] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:11:14] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:11:14] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:11:14] Clique #1/20 | Total geral: 1 +[2026-09-07 12:11:14] [Sessão 1] Aguardando 27s até o próximo ciclo... +[2026-09-07 12:11:21] Total de cliques realizados: 1 +[2026-09-07 12:14:43] Pressione CTRL+C para parar. +[2026-09-07 12:14:43] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:14:51] Total de cliques realizados: 0 +[2026-09-07 12:15:08] Pressione CTRL+C para parar. +[2026-09-07 12:15:08] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:15:16] Total de cliques realizados: 0 +[2026-09-07 12:15:28] Pressione CTRL+C para parar. +[2026-09-07 12:15:28] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:15:38] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:15:38] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:15:38] Clique #1/20 | Total geral: 1 +[2026-09-07 12:15:38] [Sessão 1] Aguardando 16s até o próximo ciclo... +[2026-09-07 12:15:45] Total de cliques realizados: 1 +[2026-09-07 12:15:57] Pressione CTRL+C para parar. +[2026-09-07 12:15:57] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:16:08] Botão encontrado! Confiança: 0.82 | Pos: (1086, 752) +[2026-09-07 12:16:08] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:16:08] Clique #1/20 | Total geral: 1 +[2026-09-07 12:16:08] [Sessão 1] Aguardando 23s até o próximo ciclo... +[2026-09-07 12:16:31] Botão NÃO encontrado. Confiança: 0.27 (mín: 0.8) +[2026-09-07 12:16:31] [Sessão 1] Botão não encontrado. Falhas: 1/3 | Total: 1 +[2026-09-07 12:16:31] [Sessão 1] Aguardando 16s até o próximo ciclo... +[2026-09-07 12:16:47] Botão NÃO encontrado. Confiança: 0.28 (mín: 0.8) +[2026-09-07 12:16:47] [Sessão 1] Botão não encontrado. Falhas: 2/3 | Total: 1 +[2026-09-07 12:16:47] [Sessão 1] Aguardando 16s até o próximo ciclo... +[2026-09-07 12:17:03] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:17:03] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:17:03] Clique #2/20 | Total geral: 2 +[2026-09-07 12:17:03] [Sessão 1] Aguardando 19s até o próximo ciclo... +[2026-09-07 12:17:22] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:17:22] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:17:23] Clique #3/20 | Total geral: 3 +[2026-09-07 12:17:23] [Sessão 1] Aguardando 10s até o próximo ciclo... +[2026-09-07 12:17:33] Botão NÃO encontrado. Confiança: 0.28 (mín: 0.8) +[2026-09-07 12:17:33] [Sessão 1] Botão não encontrado. Falhas: 1/3 | Total: 3 +[2026-09-07 12:17:33] [Sessão 1] Aguardando 28s até o próximo ciclo... +[2026-09-07 12:18:01] Botão NÃO encontrado. Confiança: 0.28 (mín: 0.8) +[2026-09-07 12:18:01] [Sessão 1] Botão não encontrado. Falhas: 2/3 | Total: 3 +[2026-09-07 12:18:01] [Sessão 1] Aguardando 24s até o próximo ciclo... +[2026-09-07 12:18:25] Botão NÃO encontrado. Confiança: 0.28 (mín: 0.8) +[2026-09-07 12:18:25] [Sessão 1] Botão não encontrado. Falhas: 3/3 | Total: 3 +[2026-09-07 12:18:25] ⚠ Máximo de falhas (3) atingido. Encerrando. +[2026-09-07 12:18:25] Total de cliques realizados: 3 +[2026-09-07 12:19:58] Pressione CTRL+C para parar. +[2026-09-07 12:19:58] [Sessao 1] Botao encontrado! Confianca: 0.91 | Pos: (450, 320) +[2026-09-07 12:19:58] Clique #1/20 | Total geral: 1 +[2026-09-07 12:19:58] [Sessao 1] Aguardando 17s ate o proximo ciclo... +[2026-09-07 12:19:58] [Sessao 2] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:19:58] [Sessao 2] Clicando em (450, 320)... +[2026-09-07 12:19:58] Clique #5/20 | Total geral: 5 +[2026-09-07 12:19:58] Total de cliques realizados: 5 +[2026-09-07 12:20:23] Pressione CTRL+C para parar. +[2026-09-07 12:20:23] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:20:34] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:20:34] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:20:34] Clique #1/20 | Total geral: 1 +[2026-09-07 12:20:34] [Sessão 1] Aguardando 29s até o próximo ciclo... +[2026-09-07 12:21:03] Botão NÃO encontrado. Confiança: 0.27 (mín: 0.8) +[2026-09-07 12:21:03] [Sessão 1] Botão não encontrado. Falhas: 1/3 | Total: 1 +[2026-09-07 12:21:03] [Sessão 1] Aguardando 29s até o próximo ciclo... +[2026-09-07 12:21:32] Botão NÃO encontrado. Confiança: 0.27 (mín: 0.8) +[2026-09-07 12:21:32] [Sessão 1] Botão não encontrado. Falhas: 2/3 | Total: 1 +[2026-09-07 12:21:32] [Sessão 1] Aguardando 25s até o próximo ciclo... +[2026-09-07 12:21:57] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:21:57] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:21:57] Clique #2/20 | Total geral: 2 +[2026-09-07 12:21:57] [Sessão 1] Aguardando 26s até o próximo ciclo... +[2026-09-07 12:22:04] Total de cliques realizados: 2 +[2026-09-07 12:22:07] Pressione CTRL+C para parar. +[2026-09-07 12:22:07] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:22:18] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:22:18] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:22:18] Clique #1/20 | Total geral: 1 +[2026-09-07 12:22:18] [Sessão 1] Aguardando 19s até o próximo ciclo... +[2026-09-07 12:22:19] Pressione CTRL+C para parar. +[2026-09-07 12:22:19] [Sessao 1] Botao encontrado! +[2026-09-07 12:22:19] Clique #1/20 | Total geral: 1 +[2026-09-07 12:22:19] [Sessao 1] Aguardando 17s... +[2026-09-07 12:22:19] [Sessao 2] Aguardando 10s... +[2026-09-07 12:22:19] [Sessao 2] Clicando... +[2026-09-07 12:22:19] Clique #5/20 | Total geral: 5 +[2026-09-07 12:22:19] Total de cliques realizados: 5 +[2026-09-07 12:22:37] Botão NÃO encontrado. Confiança: 0.28 (mín: 0.8) +[2026-09-07 12:22:37] [Sessão 1] Botão não encontrado. Falhas: 1/3 | Total: 1 +[2026-09-07 12:22:37] [Sessão 1] Aguardando 27s até o próximo ciclo... +[2026-09-07 12:23:04] Botão NÃO encontrado. Confiança: 0.28 (mín: 0.8) +[2026-09-07 12:23:04] [Sessão 1] Botão não encontrado. Falhas: 2/3 | Total: 1 +[2026-09-07 12:23:04] [Sessão 1] Aguardando 12s até o próximo ciclo... +[2026-09-07 12:23:16] Botão NÃO encontrado. Confiança: 0.28 (mín: 0.8) +[2026-09-07 12:23:16] [Sessão 1] Botão não encontrado. Falhas: 3/3 | Total: 1 +[2026-09-07 12:23:16] ⚠ Máximo de falhas (3) atingido. Encerrando. +[2026-09-07 12:23:16] Total de cliques realizados: 1 +[2026-09-07 12:24:08] Pressione CTRL+C para parar. +[2026-09-07 12:24:08] [Sessao 1] Botao encontrado! +[2026-09-07 12:24:08] Clique #1/20 | Total geral: 1 +[2026-09-07 12:24:08] [Sessao 1] Aguardando 17s... +[2026-09-07 12:24:08] [Sessao 2] Aguardando 10s... +[2026-09-07 12:24:08] [Sessao 2] Clicando... +[2026-09-07 12:24:08] Clique #5/20 | Total geral: 5 +[2026-09-07 12:24:08] Total de cliques realizados: 5 +[2026-09-07 12:24:34] Pressione CTRL+C para parar. +[2026-09-07 12:24:34] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:24:44] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:24:44] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:24:44] Clique #1/20 | Total geral: 1 +[2026-09-07 12:24:44] [Sessão 1] Aguardando 26s até o próximo ciclo... +[2026-09-07 12:25:10] Botão encontrado! Confiança: 0.95 | Pos: (1086, 752) +[2026-09-07 12:25:10] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:25:11] Clique #2/20 | Total geral: 2 +[2026-09-07 12:25:11] [Sessão 1] Aguardando 25s até o próximo ciclo... +[2026-09-07 12:25:36] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:25:36] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:25:36] Clique #3/20 | Total geral: 3 +[2026-09-07 12:25:36] [Sessão 1] Aguardando 15s até o próximo ciclo... +[2026-09-07 12:25:51] Botão encontrado! Confiança: 0.91 | Pos: (1086, 752) +[2026-09-07 12:25:51] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:25:51] Clique #4/20 | Total geral: 4 +[2026-09-07 12:25:51] [Sessão 1] Aguardando 22s até o próximo ciclo... +[2026-09-07 12:26:13] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:26:13] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:26:13] Clique #5/20 | Total geral: 5 +[2026-09-07 12:26:13] [Sessão 1] Aguardando 22s até o próximo ciclo... +[2026-09-07 12:26:35] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:26:35] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:26:36] Clique #6/20 | Total geral: 6 +[2026-09-07 12:26:36] [Sessão 1] Aguardando 28s até o próximo ciclo... +[2026-09-07 12:27:04] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:27:04] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:27:04] Clique #7/20 | Total geral: 7 +[2026-09-07 12:27:04] [Sessão 1] Aguardando 12s até o próximo ciclo... +[2026-09-07 12:27:16] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:27:16] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:27:16] Clique #8/20 | Total geral: 8 +[2026-09-07 12:27:16] [Sessão 1] Aguardando 26s até o próximo ciclo... +[2026-09-07 12:27:42] Botão encontrado! Confiança: 0.95 | Pos: (1086, 752) +[2026-09-07 12:27:42] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:27:42] Clique #9/20 | Total geral: 9 +[2026-09-07 12:27:42] [Sessão 1] Aguardando 29s até o próximo ciclo... +[2026-09-07 12:28:12] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:28:12] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:28:12] Clique #10/20 | Total geral: 10 +[2026-09-07 12:28:12] [Sessão 1] Aguardando 29s até o próximo ciclo... +[2026-09-07 12:28:35] Total de cliques realizados: 10 +[2026-09-07 12:29:24] Pressione CTRL+C para parar. +[2026-09-07 12:29:24] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:29:34] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:29:34] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:29:34] Clique #1/10 | Total geral: 1 +[2026-09-07 12:29:34] [Sessão 1] Aguardando 7s até o próximo ciclo... +[2026-09-07 12:29:41] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:29:41] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:29:41] Clique #2/10 | Total geral: 2 +[2026-09-07 12:29:41] [Sessão 1] Aguardando 9s até o próximo ciclo... +[2026-09-07 12:29:50] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:29:50] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:29:50] Clique #3/10 | Total geral: 3 +[2026-09-07 12:29:50] [Sessão 1] Aguardando 5s até o próximo ciclo... +[2026-09-07 12:29:56] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:29:56] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:29:56] Clique #4/10 | Total geral: 4 +[2026-09-07 12:29:56] [Sessão 1] Aguardando 8s até o próximo ciclo... +[2026-09-07 12:30:04] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:30:04] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:30:04] Clique #5/10 | Total geral: 5 +[2026-09-07 12:30:04] [Sessão 1] Aguardando 7s até o próximo ciclo... +[2026-09-07 12:30:11] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:30:11] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:30:11] Clique #6/10 | Total geral: 6 +[2026-09-07 12:30:11] [Sessão 1] Aguardando 9s até o próximo ciclo... +[2026-09-07 12:30:20] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:30:20] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:30:20] Clique #7/10 | Total geral: 7 +[2026-09-07 12:30:20] [Sessão 1] Aguardando 8s até o próximo ciclo... +[2026-09-07 12:30:29] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:30:29] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:30:29] Clique #8/10 | Total geral: 8 +[2026-09-07 12:30:29] [Sessão 1] Aguardando 7s até o próximo ciclo... +[2026-09-07 12:30:36] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:30:36] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:30:36] Clique #9/10 | Total geral: 9 +[2026-09-07 12:30:36] [Sessão 1] Aguardando 8s até o próximo ciclo... +[2026-09-07 12:30:44] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:30:44] [Sessão 1] Clicando em (1086, 752)... +[2026-09-07 12:30:44] Clique #10/10 | Total geral: 10 +[2026-09-07 12:30:44] --- Sessão 1 finalizada: 10 cliques --- +[2026-09-07 12:30:44] Aguardando 120s até a Sessão 2... +[2026-09-07 12:32:44] Aguardando 10s antes do primeiro clique... +[2026-09-07 12:32:54] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:32:54] [Sessão 2] Clicando em (1086, 752)... +[2026-09-07 12:32:55] Clique #1/10 | Total geral: 11 +[2026-09-07 12:32:55] [Sessão 2] Aguardando 10s até o próximo ciclo... +[2026-09-07 12:33:05] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:33:05] [Sessão 2] Clicando em (1086, 752)... +[2026-09-07 12:33:05] Clique #2/10 | Total geral: 12 +[2026-09-07 12:33:05] [Sessão 2] Aguardando 10s até o próximo ciclo... +[2026-09-07 12:33:15] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:33:15] [Sessão 2] Clicando em (1086, 752)... +[2026-09-07 12:33:15] Clique #3/10 | Total geral: 13 +[2026-09-07 12:33:15] [Sessão 2] Aguardando 5s até o próximo ciclo... +[2026-09-07 12:33:20] Botão encontrado! Confiança: 0.97 | Pos: (1086, 752) +[2026-09-07 12:33:20] [Sessão 2] Clicando em (1086, 752)... +[2026-09-07 12:33:20] Clique #4/10 | Total geral: 14 +[2026-09-07 12:33:20] [Sessão 2] Aguardando 7s até o próximo ciclo... +[2026-09-07 12:33:27] Botão encontrado! Confiança: 1.00 | Pos: (1086, 752) +[2026-09-07 12:33:27] [Sessão 2] Clicando em (1086, 752)... +[2026-09-07 12:33:28] Clique #5/10 | Total geral: 15 +[2026-09-07 12:33:28] [Sessão 2] Aguardando 6s até o próximo ciclo... +[2026-09-07 12:33:28] Total de cliques realizados: 15 diff --git a/main.py b/main.py index 43b39c9..ca20105 100755 --- a/main.py +++ b/main.py @@ -9,136 +9,231 @@ import os import sys import time import random +import re import cv2 import numpy as np import pyautogui from datetime import datetime from dotenv import load_dotenv -# Carrega variáveis do .env load_dotenv() +LARGURA_TERMINAL = int(os.getenv("LARGURA_TERMINAL", "60")) INTERVALO_MINIMO_CLIQUE = int(os.getenv("INTERVALO_MINIMO_CLIQUE", "10")) INTERVALO_MAXIMO_CLIQUE = int(os.getenv("INTERVALO_MAXIMO_CLIQUE", "30")) INTERVALO_PRIMEIRO_CLIQUE = int(os.getenv("INTERVALO_PRIMEIRO_CLIQUE", "10")) MAXIMO_CLIQUES_POR_SESSAO = int(os.getenv("MAXIMO_CLIQUES_POR_SESSAO", "20")) -INTERVALO_ENTRE_SESSOES = int(os.getenv("INTERVALO_ENTRE_SESSOES", "60")) -MAXIMO_FALHAS = int(os.getenv("MAXIMO_FALHAS", "5")) -HORA_INICIO = os.getenv("HORA_INICIO", "09:00") -HORA_FIM = os.getenv("HORA_FIM", "18:00") -CONFIANCA = float(os.getenv("CONFIANCA", "0.8")) +INTERVALO_ENTRE_SESSOES = int(os.getenv("INTERVALO_ENTRE_SESSOES", "60")) +MAXIMO_FALHAS = int(os.getenv("MAXIMO_FALHAS", "5")) +HORA_INICIO = os.getenv("HORA_INICIO", "09:00") +HORA_FIM = os.getenv("HORA_FIM", "18:00") +CONFIANCA = float(os.getenv("CONFIANCA", "0.8")) IMAGEM_BOTAO = os.path.join(os.path.dirname(os.path.abspath(__file__)), "botaoparaclicar.png") -LOG_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "log.txt") +LOG_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "log.txt") pyautogui.FAILSAFE = True +RST = "\033[0m" +BOLD = "\033[1m" -def gerar_intervalo_aleatorio(intervalo_min: int, intervalo_max: int) -> int: - """Gera um valor aleatório entre intervalo_min e intervalo_max (inclusive).""" - return random.randint(intervalo_min, intervalo_max) +C_TITLE = "\033[96m" +C_GREEN = "\033[92m" +C_YELLOW = "\033[93m" +C_RED = "\033[91m" +C_MAG = "\033[95m" +C_WHITE = "\033[97m" +C_GRAY = "\033[90m" +C_CYAN = "\033[36m" +_RE_ANSI = re.compile(r"\x1b\[[0-9;]*m") + +def vis_largura(texto: str) -> int: + sem_ansi = _RE_ANSI.sub("", texto) + emojis = re.findall( + r"[\U0001F300-\U0001FAFF" + r"\U00002702-\U000027B0" + r"\U0000FE0F" + r"\U0001F1E0-\U0001F1FF" + r"\U00002600-\U000026FF" + r"\U00002700-\U000027BF" + r"]+", + sem_ansi, + flags=re.UNICODE, + ) + ajuste_emoji = sum((2 - len(e)) for e in emojis) + return len(sem_ansi) + ajuste_emoji + +def terminal_width() -> int: + return LARGURA_TERMINAL + +def largura() -> int: + return terminal_width() + +def center(text: str, pre: str = "", pos: str = "") -> str: + w = largura() - vis_largura(pre) - vis_largura(pos) + return pre + text.center(w) + pos + +def banner() -> None: + print() + print(center(" 🤖 AUTO-CLICADOR 🤖 ", C_TITLE + BOLD)) + print(center("Sistema de Cliques Automáticos", C_TITLE)) + print() + +def painel_config() -> None: + itens = [ + (C_GRAY, "Largura do terminal", f"{LARGURA_TERMINAL} colunas"), + (C_GREEN, "Intervalo mínimo entre cliques", f"{INTERVALO_MINIMO_CLIQUE}s"), + (C_GREEN, "Intervalo máximo entre cliques", f"{INTERVALO_MAXIMO_CLIQUE}s"), + (C_CYAN, "Espera antes do 1º clique", f"{INTERVALO_PRIMEIRO_CLIQUE}s"), + (C_YELLOW, "Máximo de cliques por sessão", str(MAXIMO_CLIQUES_POR_SESSAO)), + (C_YELLOW, "Intervalo entre sessões", f"{INTERVALO_ENTRE_SESSOES}s"), + (C_MAG, "Máximo de falhas", str(MAXIMO_FALHAS)), + (C_WHITE, "Horário de funcionamento", f"{HORA_INICIO} às {HORA_FIM}"), + (C_GRAY, "Confiança mínima", str(CONFIANCA)), + ] + + print(center(" ⚙ CONFIGURAÇÃO", C_TITLE + BOLD)) + print() + + labels_sem_cor = [_RE_ANSI.sub("", f" {label}") for _, label, _ in itens] + max_label_vis = max(vis_largura(l) for l in labels_sem_cor) + largura_label = max(max_label_vis, 1) + + for cor, label, valor in itens: + label_raw = f" {label}" + label_vis = vis_largura(label_raw) + padding_label = max(1, largura_label - label_vis + 2) + print( + cor + + label_raw + + RST + + " " * padding_label + + C_WHITE + + str(valor) + + RST + ) + print() + +def cabecalho_sessao(num: int) -> None: + print() + print(C_MAG + BOLD + f" 🔄 SESSÃO {num} 🔄" + RST) + print() + +def rodape_clique() -> None: + w = largura() + inner_w = w - 4 + barra_preenchida = max(1, int(inner_w * 0.4)) + barra_vazia = inner_w - barra_preenchida + barra = C_GREEN + "█" * barra_preenchida + C_GRAY + "░" * barra_vazia + RST + print(" " + barra) + +def log(mensagem: str, cor: str = C_WHITE) -> None: + agora = datetime.now() + ts = agora.strftime("%H:%M:%S") + ts_raw = f"[{ts}] " + ts_color = C_GRAY + + linha_terminal = ( + " " + + ts_color + ts_raw + RST + + cor + mensagem + RST + ) + print(linha_terminal) -def log(mensagem: str) -> None: - """Registra mensagem com timestamp.""" - timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - linha = f"[{timestamp}] {mensagem}" - print(linha) try: with open(LOG_FILE, "a", encoding="utf-8") as f: - f.write(linha + "\n") + ts_full = agora.strftime("%Y-%m-%d %H:%M:%S") + f.write(f"[{ts_full}] {_RE_ANSI.sub('', mensagem)}\n") except Exception: pass - def dentro_horario(hora_inicio: str, hora_fim: str) -> bool: - """Verifica se o horário atual está dentro do intervalo configurado.""" agora = datetime.now().time() hi = datetime.strptime(hora_inicio, "%H:%M").time() hf = datetime.strptime(hora_fim, "%H:%M").time() return hi <= agora <= hf - def encontrar_botao(imagem_path: str, confianca: float = 0.8): - """ - Procura a imagem do botão na tela usando template matching. - Retorna as coordenadas (x, y) do centro do botão ou None. - """ if not os.path.isfile(imagem_path): - log(f"ERRO: Imagem '{imagem_path}' não encontrada.") + log(f"ERRO: Imagem '{imagem_path}' não encontrada.", C_RED) return None - # Captura screenshot da tela screenshot = pyautogui.screenshot() screenshot_np = np.array(screenshot) screenshot_cv = cv2.cvtColor(screenshot_np, cv2.COLOR_RGB2BGR) - # Carrega template do botão template = cv2.imread(imagem_path, cv2.IMREAD_UNCHANGED) if template is None: - log(f"ERRO: Não foi possível carregar a imagem '{imagem_path}'.") + log(f"ERRO: Não foi possível carregar '{imagem_path}'.", C_RED) return None - # Converte template para BGR se tiver alpha channel if template.shape[2] == 4: template_bgr = cv2.cvtColor(template, cv2.COLOR_BGRA2BGR) - # Cria máscara para o canal alpha alpha = template[:, :, 3] mascara = alpha.astype(np.uint8) else: template_bgr = template mascara = None - # Template matching resultado = cv2.matchTemplate(screenshot_cv, template_bgr, cv2.TM_CCOEFF_NORMED, mask=mascara) _, max_val, _, max_loc = cv2.minMaxLoc(resultado) if max_val >= confianca: - h, w = template_bgr.shape[:2] - centro_x = max_loc[0] + w // 2 + h, w2 = template_bgr.shape[:2] + centro_x = max_loc[0] + w2 // 2 centro_y = max_loc[1] + h // 2 - log(f"Botão encontrado! Confiança: {max_val:.2f} | Posição: ({centro_x}, {centro_y})") + log( + f"Botão encontrado! Confiança: {max_val:.2f} | Pos: ({centro_x}, {centro_y})", + C_GREEN, + ) return (centro_x, centro_y) else: - log(f"Botão NÃO encontrado. Melhor confiança: {max_val:.2f} (necessário >= {confianca})") + log( + f"Botão NÃO encontrado. Confiança: {max_val:.2f} (mín: {confianca})", + C_RED, + ) return None +def gerar_intervalo_aleatorio(intervalo_min: int, intervalo_max: int) -> int: + return random.randint(intervalo_min, intervalo_max) def main() -> None: - log("=" * 60) - log("Sistema de Cliques Automáticos iniciado") - log(f"Intervalo mínimo entre cliques: {INTERVALO_MINIMO_CLIQUE}s") - log(f"Intervalo máximo entre cliques: {INTERVALO_MAXIMO_CLIQUE}s") - log(f"Aguardar antes do 1º clique: {INTERVALO_PRIMEIRO_CLIQUE}s") - log(f"Máximo de cliques por sessão: {MAXIMO_CLIQUES_POR_SESSAO}") - log(f"Intervalo entre sessões: {INTERVALO_ENTRE_SESSOES}s") - log(f"Máximo de falhas antes de encerrar: {MAXIMO_FALHAS}") - log(f"Horário de funcionamento: {HORA_INICIO} às {HORA_FIM}") - log(f"Confiança mínima: {CONFIANCA}") - log(f"Imagem do botão: {IMAGEM_BOTAO}") - log("=" * 60) - log("Pressione CTRL+C para parar.") + banner() + painel_config() - primeiro_clique = True - falhas_consecutivas = 0 - total_cliques = 0 - cliques_na_sessao = 0 - numero_sessao = 1 + print(center(" 🚀 Iniciando sistema... ", C_TITLE + BOLD)) + print() + + log("Pressione CTRL+C para parar.", C_YELLOW) + print() + + primeiro_clique = True + falhas_consecutivas = 0 + total_cliques = 0 + cliques_na_sessao = 0 + numero_sessao = 1 try: while True: agora = datetime.now() if not dentro_horario(HORA_INICIO, HORA_FIM): - log(f"[Sessão {numero_sessao}] Fora do horário permitido ({agora.strftime('%H:%M:%S')}).") - log(f"Pausando até {HORA_INICIO}...") + log( + f"[Sessão {numero_sessao}] Fora do horário permitido ({agora.strftime('%H:%M:%S')}).", + C_YELLOW, + ) + log(f"Pausando até {HORA_INICIO}...", C_GRAY) falhas_consecutivas = 0 - cliques_na_sessao = 0 + cliques_na_sessao = 0 time.sleep(30) continue if primeiro_clique: - log(f"--- Sessão {numero_sessao} iniciada ---") - log(f"Aguardando {INTERVALO_PRIMEIRO_CLIQUE}s antes do primeiro clique...") + cabecalho_sessao(numero_sessao) + log( + f"Aguardando {INTERVALO_PRIMEIRO_CLIQUE}s antes do primeiro clique...", + C_CYAN, + ) time.sleep(INTERVALO_PRIMEIRO_CLIQUE) primeiro_clique = False @@ -146,36 +241,64 @@ def main() -> None: if posicao: x, y = posicao - log(f"[Sessão {numero_sessao}] Clicando em ({x}, {y})...") + log( + f"[Sessão {numero_sessao}] Clicando em ({x}, {y})...", + C_GREEN, + ) pyautogui.click(x, y) - total_cliques += 1 + total_cliques += 1 cliques_na_sessao += 1 - log(f"Clique executado com sucesso. Total geral: {total_cliques} | Sessão {numero_sessao}: {cliques_na_sessao}/{MAXIMO_CLIQUES_POR_SESSAO}") + log( + f"Clique #{cliques_na_sessao}/{MAXIMO_CLIQUES_POR_SESSAO} | Total geral: {total_cliques}", + C_GREEN + BOLD, + ) falhas_consecutivas = 0 + rodape_clique() else: falhas_consecutivas += 1 - log(f"[Sessão {numero_sessao}] Botão não encontrado. Falhas consecutivas: {falhas_consecutivas}/{MAXIMO_FALHAS} | Total de cliques: {total_cliques}") + log( + f"[Sessão {numero_sessao}] Botão não encontrado. " + f"Falhas: {falhas_consecutivas}/{MAXIMO_FALHAS} | Total: {total_cliques}", + C_RED, + ) if falhas_consecutivas >= MAXIMO_FALHAS: - log(f"Máximo de falhas ({MAXIMO_FALHAS}) atingido. Encerrando sistema.") - log(f"Total de cliques realizados com sucesso: {total_cliques}") + print() + log( + f"⚠ Máximo de falhas ({MAXIMO_FALHAS}) atingido. Encerrando.", + C_RED + BOLD, + ) + log(f"Total de cliques realizados: {total_cliques}", C_YELLOW) sys.exit(1) - # Verifica se atingiu o máximo de cliques da sessão if cliques_na_sessao >= MAXIMO_CLIQUES_POR_SESSAO: - log(f"--- Sessão {numero_sessao} finalizada: {cliques_na_sessao} cliques ---") - numero_sessao += 1 - cliques_na_sessao = 0 - log(f"Aguardando {INTERVALO_ENTRE_SESSOES}s até a próxima sessão (Sessão {numero_sessao})...") + log( + f"--- Sessão {numero_sessao} finalizada: {cliques_na_sessao} cliques ---", + C_MAG + BOLD, + ) + numero_sessao += 1 + cliques_na_sessao = 0 + log( + f"Aguardando {INTERVALO_ENTRE_SESSOES}s até a Sessão {numero_sessao}...", + C_YELLOW, + ) time.sleep(INTERVALO_ENTRE_SESSOES) primeiro_clique = True continue - intervalo = gerar_intervalo_aleatorio(INTERVALO_MINIMO_CLIQUE, INTERVALO_MAXIMO_CLIQUE) - log(f"[Sessão {numero_sessao}] Aguardando {intervalo}s até o próximo ciclo...") + intervalo = gerar_intervalo_aleatorio( + INTERVALO_MINIMO_CLIQUE, INTERVALO_MAXIMO_CLIQUE + ) + log( + f"[Sessão {numero_sessao}] Aguardando {intervalo}s até o próximo ciclo...", + C_CYAN, + ) time.sleep(intervalo) except KeyboardInterrupt: - log(f"\nSistema interrompido pelo usuário (CTRL+C). Total de cliques: {total_cliques}") + print() + print(C_RED + BOLD + center(" 🛑 INTERROMPIDO PELO USUÁRIO 🛑 ") + RST) + print() + log(f"Total de cliques realizados: {total_cliques}", C_YELLOW) if __name__ == "__main__": diff --git a/tela1.png b/tela1.png new file mode 100644 index 0000000000000000000000000000000000000000..ef3fc1a09b7233ea294e8fcefac9ac5f37cdb10d GIT binary patch literal 68276 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