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

news2024/9/24 7:16:29

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1324645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql原理--连接的原理

1.连接简介 1.1.连接的本质 为了故事的顺利发展,我们先建立两个简单的表并给它们填充一点数据: mysql> CREATE TABLE t1 (m1 int, n1 char(1)); mysql> CREATE TABLE t2 (m2 int, n2 char(1)); mysql> INSERT INTO t1 VALUES(1, a), (2, b), (…

2023年12月20日雄县采样

刚去的时候,找不着冬小麦地,因为积雪太厚了,小麦都被埋住了。 翻了几波地失败了几个点,也渐渐得出经验了,像下图这种有田垄的大块连成片农田,“高标准”农田。一定是种植小麦的。 刨开土能看到小麦就和挖到…

图片曝光修正方法(直方图均衡和CNN)

图像过曝或曝光不足时需要曝光处理, 这里以曝光不足举例。 直方图均衡法: 通过RGB通道的直方图均衡达到处理曝光不足的效果。 代码: underexpose cv2.imread("exposure_test.jpg") #underexpose cv2.cvtColor(underexpose, cv2…

软件设计模式:UML类图

文章目录 前言一、📖设计模式概述1.软件设计模式的产生背景2.软件设计模式3.设计模式分类 二、📣UML图1.类图概述2.类的表示法3.类与类之间的关系关联关系(1)单向关联(2)双向关联(3)…

VM安装Sonoma【笔记】

VMware Workstation安装MacOS Sonoma 1、配置虚拟机,根据系统性能调整参数; 2、先不焦急启动虚拟机,打开虚拟机存储目录,以文本方式打开.vmx文件(这里以Sonoma.vmx为例); 这里只针对Inter CP…

异步编程Promise

文章目录 前言一、关于 Promise 的理解与使用1.相关知识补充区别实例对象和函数对象同步回调异步回调Js中的错误(error)和错误处理 2.promise是什么 二、Promise 原理三、Promise 封装 Ajax四、async 与 await总结 前言 在项目中,promise的使…

阿赵UE学习笔记——2、新建项目和项目设置

阿赵UE学习笔记目录 大家好,我是阿赵。继续来学习虚幻引擎的使用。这次介绍一下新建项目和项目设置。 一、新建项目 通过桌面快捷方式,或者EPIC Games Loader,启动虚幻引擎。 启动完成后,会打开项目管理的界面,可以看…

HarmonyOS ArkTS 中DatePicker先择时间 路由跳转并传值到其它页

效果 代码 代码里有TextTimerController 这一种例用方法较怪,Text ,Button Datepicker 的使用。 import router from ohos.router’则是引入路由模块。 import router from ohos.router Entry Component struct TextnewClock {textTimerController: TextTimerContr…

【开源项目】基于STM32的服装仓库环境监测系统设计与实现

该系统结合了多种物联网的技术如WiFi技术、嵌入式技术等,通过温湿度传感器和火焰传感器实时采集仓库的温度、空气湿度和仓库明火情况。系统能够自动判断并处理异常情况,当温湿度超过阈值时风扇模块开始工作进行通风,当有明火时抽水泵模块开始…

计算机msvcp120.dll文件丢失怎么办?亲测有效的五个方法分享

最近,我在使用电脑的过程中遇到了一个非常棘手的问题,那就是msvcp120.dll文件丢失。这个错误通常会导致某些应用程序无法正常运行。经过一番努力和尝试,我终于找到了解决这个问题的方法,,小编将介绍五个常用的解决方法…

自定义 spring-boot组件自动注入starter

1&#xff1a;创建maven项目 2&#xff1a;pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati…

ITIL® 4 Foundation​,12月23日即将开课~想了解点击查看

ITIL 4 Foundation即将开课~ 想报名的必须提前预约啦 &#x1f447;&#x1f447;&#x1f447; 培训地点&#xff1a; 远程直播&#xff1a;线上平台学习 开课时间&#xff1a; 周末班&#xff1a;12月23日、24日&#xff1b; 什么是ITIL&#xff1f; 信息技术基础架构…

28 在Vue3中监听对象属性

概述 更多的时候&#xff0c;我们可能想要监听的是对象中的某个属性。 比如&#xff0c;我们提交用户的登录表单&#xff0c;有username&#xff0c;password和re_password的三个属性&#xff0c;我们监听re_password这个属性&#xff0c;一旦发生改变&#xff0c;我们就要判…

网络基础介绍

1.网线制作 1.1 网线制作需要的工具 网线 网线钳 水晶头 测试仪 ​编辑 1.2 网线的标准 1.3 网线的做法 2.集线器&交换机&路由器的介绍 3.OSI七层模型 4.路由器的设置 4.1 常见的路由器设置地址 4.2 常见的路由器账号密码 4.3 登录路由器 设置访客网…

神经网络:池化层知识点

1.CNN中池化的作用 池化层的作用是对感受野内的特征进行选择&#xff0c;提取区域内最具代表性的特征&#xff0c;能够有效地减少输出特征数量&#xff0c;进而减少模型参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling)&a…

【MongoDB】--MongoDB的Sort排序问题

目录 一、问题背景描述1.1、问题背景1.2、问题分析 二、建立索引支持深度翻页查询2.1、调整sort排序的内存限制【不建议】2.2、创建索引2.3、拓展--组合索引什么时候失效 二、聚合查询解决深度翻页查询 一、问题背景描述 1.1、问题背景 现实系统页面翻页到20000页之后&#x…

Eclipse导入SSM项目

Eclipse导入SSM项目 导入项目 配置JDK环境 去除校验 设置Tomcat 效果如下&#xff1a; 配置Tomcat端口 启动Tomcat

【数据结构和算法】盛最多水的容器

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;暴力枚举 2.2 方法二&#xff1a;双指针 三、代码 3.1 方法一&#xff1a;暴力…

关于B+树的总结

B树(B-tree) B树属于多叉树又名平衡多路查找树&#xff08;查找路径不只两个&#xff09;&#xff0c;数据库索引技术里大量使用着B树和B树的数据结构 规则&#xff1a; &#xff08;1&#xff09;排序方式&#xff1a;所有节点关键字是按递增次序排列&#xff0c;并遵循左小…

浅析RoPE旋转位置编码的远程衰减特性

为什么 θ i \theta_i θi​的取值会造成远程衰减性 旋转位置编码的出发点为&#xff1a;通过绝对位置编码的方式实现相对位置编码。 对词向量 q \boldsymbol{q} q添加绝对位置信息 m m m&#xff0c;希望找到一种函数 f f f&#xff0c;使得&#xff1a; < f ( q , m ) …