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

1 前言

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

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

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

效果如下图:
打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!_第1张图片

其实之前有做过一个类似的小软件:https://blog.csdn.net/weixin_42887343/article/details/121697536
打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!_第2张图片

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

2 准备工作

(1)创建自定义钉钉机器人,设置并获取对应的webhook,这样就可以通过webhook让机器人在群里发消息了。
以前直接在钉钉的群里就可以创建机器人,现在新版钉钉需要去官网创建。
官方教程链接:https://open.dingtalk.com/document/robots/custom-robot-access/
(2)安装必要的 Python 库。在终端或命令提示符中执行以下命令:

pip install pynput schedule dingtalkchatbot

pynput: 用于捕获全局键盘、鼠标点击。
schedule: 用于定时任务触发。
dingtalkchatbot: 这个最为关键,用于给钉钉机器人发消息。dingtalkchatbot的教程及开源链接(高手的项目):https://github.com/zhuifengshen/DingtalkChatbot

如果编译时遇到其他库的问题,总之就是按提示,缺什么安装什么。

3 代码实现

写代码!是不可能自己写代码的!
其实我现在很少写python,忽然想写点东西还真响应不过来,可是不怕,跟进技术潮流,我有ChatGPT。
首先依据自己的需求进行提问1(功能点1):
打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!_第3张图片

再是提问二(功能点2):
打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!_第4张图片
这样我们就得到了我们想要的代码,可是为什么要分开问呢?其实也可以一起问,但是我用的是免费的chatgpt3.5,对他的自信程度就没有那么高咯,所以挨个提问,逐渐递进。

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

3 执行

(1)启动程序,使用下面命令执行写好的python代码:

nohup python click_counter.py &

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

(2)打包,为了保持稳定性,也可以将代码打包成可执行文件后运行,这样会更加稳定一些,如果只是尝试一下可以忽略该步骤。

(3)设置开机启动,我的电脑一直不关机,就省略该步骤;而且不同的系统方法不同,这个可以自行查找教程。

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帮我干的咯。

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

你可能感兴趣的:(python,钉钉,摸鱼)