Uma biblioteca para monitorar atividades de teclado e mouse.
Project description
mouse-keyboard-tracker
Este projeto é uma biblioteca para monitorar atividades de teclado e mouse que registra eventos de uso e períodos de inatividade. Ele é útil para rastrear a produtividade e o uso do computador ao longo do tempo, gerando logs detalhados de todas as ações realizadas pelo usuário.
Instalação
Você pode instalar a biblioteca usando pip:
pip install mouse_keyboard_tracker
Uso
Aqui está um exemplo de como usar a biblioteca:
from mouse_keyboard_tracker import iniciar_monitoramento, encerrar_monitoramento
import time
def main():
configs = {
'TEMPO_MAXIMO_OCIOSO': 600,
}
horario_inicio, logger, monitor_ociosidade = iniciar_monitoramento(configs=configs)
if not horario_inicio or not logger or not monitor_ociosidade:
print("Falha ao iniciar o monitoramento.")
return
try:
while True:
time.sleep(10)
except KeyboardInterrupt:
encerrar_monitoramento(horario_inicio, logger, monitor_ociosidade)
if __name__ == "__main__":
main()
Configurações Disponíveis
A biblioteca mouse_keyboard_tracker permite a personalização de várias configurações através da classe Config. Abaixo estão as configurações disponíveis e seus valores padrão:
Configurações de Tempo
- TEMPO_MAXIMO_OCIOSO: Tempo máximo de ociosidade em segundos (padrão: 600)
- INTERVALO_CHECAGEM_OCIOSIDADE: Intervalo de checagem de ociosidade em segundos (padrão: 1)
- INTERVALO_SLEEP: Intervalo de sleep em segundos (padrão: 10)
- SEGUNDOS_EM_UM_MINUTO: Segundos em um minuto (padrão: 60)
- SEGUNDOS_EM_UMA_HORA: Segundos em uma hora (padrão: 3600)
Configurações de Horário
- HORA_INICIO_MATUTINO: Hora de início do período matutino (padrão: 6)
- HORA_INICIO_VESPERTINO: Hora de início do período vespertino (padrão: 12)
- HORA_INICIO_NOTURNO: Hora de início do período noturno (padrão: 18)
Configurações de Arquivos
- TAMANHO_MINIMO_ARQUIVO: Tamanho mínimo do arquivo em bytes (padrão: 0)
- INTERVALO_VERIFICACAO_ARQUIVO: Intervalo de verificação do arquivo em segundos (padrão: 1)
Configurações de Ociosidade
- TEMPO_OCIOSO_ACUMULADO: Tempo ocioso acumulado inicial (padrão: 0)
- TEMPO_OCIOSO_TOTAL: Tempo ocioso total (padrão: 0)
Configurações de Logs
- TECLADO_LOG: Nome do arquivo de log de teclado (padrão: 'teclado_eventos.log')
- MOUSE_LOG: Nome do arquivo de log de mouse (padrão: 'mouse_eventos.log')
- LOG_DIR: Diretório de logs (padrão: 'logs')
- OCIOSIDADE_LOG: Nome do arquivo de log de ociosidade (padrão: 'ociosidade_eventos.log')
- RELATORIOS_DIR: Diretório de relatórios (padrão: 'relatorios')
- LOG_FORMAT: Formato do log (padrão: '%(asctime)s - %(message)s')
Estrutura do Projeto
Arquivos e seus papéis
-
init.py: Arquivo de inicialização do pacote, permitindo a importação de módulos e classes de outros arquivos no projeto.
-
cli.py: Implementa a interface de linha de comando (CLI) para a biblioteca, permitindo a configuração e execução do monitoramento de atividades por meio de argumentos de linha de comando. Este arquivo facilita o uso da biblioteca sem a necessidade de escrever código Python.
-
config.py: Contém a classe
Configque define várias constantes usadas em todo o projeto, como tempos de ociosidade, intervalos de checagem e tamanhos mínimos de arquivos. Este arquivo centraliza a configuração do sistema, facilitando ajustes e manutenção. -
eventos.py: Implementa a classe
MonitorEventosque captura eventos de teclado e mouse usando a bibliotecapynput. Ele registra esses eventos em logs e notifica observadores sobre novos eventos. Utiliza o padrão Observer para notificar outras partes do sistema sobre eventos de entrada. -
log_manager.py: Contém a classe
LogManagerque gerencia os arquivos de log, verificando períodos de inatividade e movendo os logs para diretórios de relatórios organizados por data e período do dia. Este arquivo garante que os logs sejam armazenados e organizados corretamente. -
logger.py: Define a classe
EventoLoggerque configura e gerencia loggers para diferentes tipos de eventos (teclado, mouse, ociosidade). Inclui métodos para registrar eventos e configurar o logger principal. Este arquivo centraliza a lógica de logging, facilitando a manutenção e a expansão. -
ociosidade.py: Implementa a classe
MonitorOciosidadeque verifica períodos de inatividade do usuário. Utiliza o padrão Singleton para garantir que apenas uma instância da classe exista. Registra eventos de ociosidade e notifica quando o usuário está inativo por um período prolongado. -
setup.py: Arquivo de configuração do pacote Python, que define metadados do projeto, como nome, versão, descrição e dependências. Este arquivo é usado para instalar o pacote via pip e gerenciar suas dependências.
-
requirements.txt: Lista as dependências do projeto, garantindo que todas as bibliotecas necessárias sejam instaladas. Atualmente, inclui a biblioteca
pynputpara captura de eventos de teclado e mouse.
Padrões de Projeto Utilizados
-
Singleton: Utilizado na classe
MonitorOciosidadepara garantir que apenas uma instância da classe exista, evitando conflitos e garantindo consistência nos dados de ociosidade. -
Observer: Utilizado na classe
MonitorEventospara notificar observadores (comoMonitorOciosidade) sobre novos eventos de entrada, permitindo uma arquitetura desacoplada e extensível.
Por que esses padrões foram escolhidos?
-
Singleton: Garante que a verificação de ociosidade seja centralizada e consistente, evitando múltiplas instâncias que poderiam levar a resultados conflitantes.
-
Observer: Permite que diferentes partes do sistema reajam a eventos de entrada sem estarem fortemente acopladas, facilitando a adição de novos tipos de observadores no futuro.
Uso via CLI
Você pode usar a biblioteca via linha de comando. Aqui está um exemplo:
mouse-keyboard-tracker --tempo_maximo_ocioso 300 --intervalo_checagem_ociosidade 2 --log_dir meus_logs
Argumentos Disponíveis
Os seguintes argumentos estão disponíveis. Se você não fornecer um argumento, o valor padrão será usado.
--tempo_maximo_ocioso: Tempo máximo de ociosidade em segundos (padrão: 600)--intervalo_checagem_ociosidade: Intervalo de checagem de ociosidade em segundos (padrão: 1)--intervalo_sleep: Intervalo de sleep em segundos (padrão: 10)--segundos_em_um_minuto: Segundos em um minuto (padrão: 60)--segundos_em_uma_hora: Segundos em uma hora (padrão: 3600)--hora_inicio_matutino: Hora de início do período matutino (padrão: 6)--hora_inicio_vespertino: Hora de início do período vespertino (padrão: 12)--hora_inicio_noturno: Hora de início do período noturno (padrão: 18)--tamanho_minimo_arquivo: Tamanho mínimo do arquivo em bytes (padrão: 0)--intervalo_verificacao_arquivo: Intervalo de verificação do arquivo em segundos (padrão: 1)--tempo_ocioso_acumulado: Tempo ocioso acumulado inicial (padrão: 0)--tempo_ocioso_total: Tempo ocioso total (padrão: 0)--teclado_log: Nome do arquivo de log de teclado (padrão: 'teclado_eventos.log')--mouse_log: Nome do arquivo de log de mouse (padrão: 'mouse_eventos.log')--log_dir: Diretório de logs (padrão: 'logs')--ociosidade_log: Nome do arquivo de log de ociosidade (padrão: 'ociosidade_eventos.log')--relatorios_dir: Diretório de relatórios (padrão: 'relatorios')--log_format: Formato do log (padrão: '%(asctime)s - %(message)s')
Exemplos de Uso
Você pode executar o comando CLI sem fornecer nenhum argumento, e ele usará todos os valores padrão:
mouse-keyboard-tracker
Ou você pode fornecer apenas os argumentos que deseja alterar:
mouse-keyboard-tracker --tempo_maximo_ocioso 300 --log_dir meus_logs
Threads Utilizadas
O projeto utiliza três threads principais para realizar o monitoramento de atividades. A primeira thread é responsável por capturar eventos de teclado, enquanto a segunda thread captura eventos de mouse, ambas implementadas na classe MonitorEventos. A terceira thread, implementada na classe MonitorOciosidade, verifica periodicamente a ociosidade do usuário. Essas threads são iniciadas e permitem que o monitoramento de eventos e a verificação de ociosidade ocorram simultaneamente, garantindo uma captura eficiente e em tempo real das atividades do usuário.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mouse_keyboard_tracker-0.1.3.tar.gz.
File metadata
- Download URL: mouse_keyboard_tracker-0.1.3.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0980114acca6fed0e1e7b716c7b7097b859ca0e87a4093ddb7e730e16333bf28
|
|
| MD5 |
264090b2b44a23479a23278a7122243a
|
|
| BLAKE2b-256 |
c183a4a725a5cc78323f51c38ef52fb3eb1ba5ad52b5b90f77f904d056a0e892
|
Provenance
The following attestation bundles were made for mouse_keyboard_tracker-0.1.3.tar.gz:
Publisher:
python-publish.yml on victorlcastro-dsa/mouse-keyboard-tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mouse_keyboard_tracker-0.1.3.tar.gz -
Subject digest:
0980114acca6fed0e1e7b716c7b7097b859ca0e87a4093ddb7e730e16333bf28 - Sigstore transparency entry: 158547056
- Sigstore integration time:
-
Permalink:
victorlcastro-dsa/mouse-keyboard-tracker@09a77be4d24ae0b58eb2b731c3235feb662ab989 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/victorlcastro-dsa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@09a77be4d24ae0b58eb2b731c3235feb662ab989 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mouse_keyboard_tracker-0.1.3-py3-none-any.whl.
File metadata
- Download URL: mouse_keyboard_tracker-0.1.3-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e75e59a76ffa331360d636680afab866968f4bc28f1a42da4fa6eaeb86eaf325
|
|
| MD5 |
dabb47b6029c9293e30c9ef1af53f550
|
|
| BLAKE2b-256 |
5138a3bce8aa053b0aa94a2260d43dad1a05a4c3b84b58779c0d469898393a38
|
Provenance
The following attestation bundles were made for mouse_keyboard_tracker-0.1.3-py3-none-any.whl:
Publisher:
python-publish.yml on victorlcastro-dsa/mouse-keyboard-tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mouse_keyboard_tracker-0.1.3-py3-none-any.whl -
Subject digest:
e75e59a76ffa331360d636680afab866968f4bc28f1a42da4fa6eaeb86eaf325 - Sigstore transparency entry: 158547057
- Sigstore integration time:
-
Permalink:
victorlcastro-dsa/mouse-keyboard-tracker@09a77be4d24ae0b58eb2b731c3235feb662ab989 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/victorlcastro-dsa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@09a77be4d24ae0b58eb2b731c3235feb662ab989 -
Trigger Event:
release
-
Statement type: