打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!

2023-12-20 16:33:55

1 前言

是否曾想过,在一天的工作中,你到底点击了键盘多少次,或者鼠标点击了多少下?

是否好奇每天工作的时候,自己究竟有多努力?

本文将带你使用 Python,利用 pynput 监听键盘和鼠标事件,统计每天的点击次数,并通过钉钉机器人告诉你今天到底摸鱼了多少次。

效果如下图:
在这里插入图片描述

其实之前有做过一个类似的小软件:https://blog.csdn.net/weixin_42887343/article/details/121697536
在这里插入图片描述

而这次使用钉钉每天定时上传展示,不得不说钉钉的机器人是个非常好玩的好东西,更多内容可以查看钉钉的官网:
https://open.dingtalk.com/document/orgapp/webhook-stream-free-to-commercialization-announcement

2 准备工作

(1)创建自定义钉钉机器人,这样就可以通过webhook。
官方教程链接:https://open.dingtalk.com/document/robots/custom-robot-access/
(2)安装必要的 Python 库。在终端或命令提示符中执行以下命令:

pip install pynput schedule dingtalkchatbot

总之就是缺什么安装什么。

代码实现

写代码!是不可能自己写代码的!
其实我现在很少写python,忽然想写点东西还真响应不过来,可是不怕,跟进技术潮流,我有ChatGPT。
首先依据自己的需求进行提问1(功能点1):
在这里插入图片描述

再是提问二(功能点2):
在这里插入图片描述
这样我们就得到了我们想要的代码,可是为什么要分开问呢?其实也可以一起问,但是我用的是免费的chatgpt3.5,对他的自信程度就没有那么高咯,所以挨个提问,逐渐递进。

当然得到最终代码后,我们还需要做一些微调,比如把自己的钉钉钩子替换上,发送到钉钉的信息格式调整为自己想要的格式等等。

3 运行脚本

运行脚本,它将会一直在后台监听你的键盘和鼠标事件。每天晚上9点,它会发送一条消息到你指定的钉钉群,告诉你今天的键盘和鼠标点击次数。

nohup python click_counter.py &

使用 nohup + & 表示不阻塞终端,在后台运行。

为了保持稳定性,也可以将代码打包成可执行文件后运行,这样会更加稳定一些。

4 结语

通过这个简单的 Python 脚本,你可以更加有趣地了解自己每天的工作习惯。记得保持好奇心,享受编程的乐趣!

你可以根据自己的需求扩展博客内容,添加更多关于如何使用 pynput、DingTalkChatbot 的说明,或者优化代码的方法。希望这个示例能为你的博客写作提供一些灵感。

5 整体代码

import time
import schedule
from pynput import mouse, keyboard
from dingtalkchatbot.chatbot import DingtalkChatbot

class ClickCounter:
    def __init__(self, webhook, secret=None):
        self.keyboard_clicks = 0
        self.mouse_clicks = 0
        self.xiaoding = DingtalkChatbot(webhook, secret=secret)
        self.keyboard_listener = keyboard.Listener(on_press=self.on_key_press)
        self.mouse_listener = mouse.Listener(on_click=self.on_mouse_click)
        schedule.every().day.at("20:58").do(self.daily_stats)

    def on_key_press(self, key):
        self.keyboard_clicks += 1

    def on_mouse_click(self, x, y, button, pressed):
        if pressed:
            self.mouse_clicks += 1

    def daily_stats(self):
        if self.keyboard_clicks == 0 or self.mouse_clicks == 0:
            return
        msg = f'> mac键盘- {self.keyboard_clicks} 次\n\n> mac鼠标- {self.mouse_clicks} 次\n\n🐟🐟又是摸鱼的一天🐟🐟'
        self.xiaoding.send_markdown(title='今日工作量统计', text='#### 今日工作量:\n' + msg)
        self.keyboard_clicks = 0
        self.mouse_clicks = 0

    def start_listening(self):
        self.keyboard_listener.start()
        self.mouse_listener.start()
        while True:
            schedule.run_pending()
            time.sleep(10)

# WebHook地址
webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=0931814dbcf5e593e9752XXXXXXXXXXf21481b225c4567929c56f926ee08'
secret_key = 'SECef7cd67264bbd03b9dae9bXXXXXXXXX54ed2bfb7de1fcc49b9b5a032c8'  # 可选:创建机器人勾选“加签”选项时使用

# 创建ClickCounter实例
click_counter = ClickCounter(webhook_url, secret_key)

# 启动监听
click_counter.start_listening()

7 最后

此博客的主体框架包含标题,当然也是让ChatGPT帮我干的咯。

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_42887343/article/details/135061602
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。