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 DingtalkChatbotclass ClickCounter:def __init__(self, webhook, secret=None):self.keyboard_clicks = 0self.mouse_clicks = 0self.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 += 1def on_mouse_click(self, x, y, button, pressed):if pressed:self.mouse_clicks += 1def daily_stats(self):if self.keyboard_clicks == 0 or self.mouse_clicks == 0:returnmsg = f'> mac键盘- {self.keyboard_clicks} 次\n\n> mac鼠标- {self.mouse_clicks} 次\n\n🐟🐟又是摸鱼的一天🐟🐟'self.xiaoding.send_markdown(title='今日工作量统计', text='#### 今日工作量:\n' + msg)self.keyboard_clicks = 0self.mouse_clicks = 0def 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帮我干的咯。