学习通刷脸提醒脚本
几分钟刷一次脸,无论是预习复习,还是刷课,都不方便。这门课给我很大的割裂感:诊断是一门很重要的学科,很厚的书,知识点很多,而这学期只“值”1.5的学分;对比之下,有“水课”之嫌的某些课程却有2.0学分甚至更高。人脸识别本意防止部分同学刷课,希望他们认真学习,可是面对有些不懂的知识点,想学习的时候就要被经常打断。有点就像游戏的D加密,防止盗版的同时,游戏性能下降也给正版玩家造成不便,可谓是杀敌一千,自损八百。因为一个学期要看的课实在太多,不可能面面俱到,只能挑重点看。
思路:AutoxJs检测学习通的刷脸弹窗的元素,向局域网的发送消息;局域网的另外一台设备在nodejs环境下运行js文件:监听指定端口的请求,然后向本设备发送通知,提醒做其他事的人刷脸。
具体步骤如下步骤:
AutoxJs:不需要Root权限 的 JavaScript 自动化软件.
官网 开源地址
手机端思路
- 学习通出现刷脸弹窗
- AutoxJs脚本检测到刷脸弹窗
- AutoxJs脚本向局域网
电脑端思路
- 安装nodejs环境
- 运行一个js脚本,监听来自局域网的请求
- 收到请求向电脑发出弹窗提醒(node-notifier)
部分代码:
手机端(client.js)
局域网IP地址不一样,这里不贴代码,感兴趣可以自己写。
1 2 3
| text("人脸识别").id("toolbar_tv_title").findOnce() id("land_start").desc("暂停").findOnce()
|
电脑端(server.js)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| const http = require('http') const notifier = require('node-notifier'); const os = require('os'); function getWlanIP() { const interfaces = os.networkInterfaces(); for (const interfaceName in interfaces) { if (interfaceName.includes("Wi-Fi") || interfaceName.includes("WLAN")) { for (const alias of interfaces[interfaceName]) { if (alias.family === 'IPv4' && !alias.internal) { return alias.address; } } } } return '无线局域网IP地址未找到'; } const wlanIP = getWlanIP(); console.log("无线局域网适配器 WLAN 的 IP 地址:", wlanIP); http.createServer((req, res) => { title = "类型错误" let url = req.url if (url == "/1") { title = '狗日的学习通又要扫脸了' } else if (url == "/2") { title = '视频播放完毕' } notifier.notify({ title: title, message: 'js是世界上最好的语言!', wait: false, timeout: 1, }); res.statusCode = 200 res.end('响应成功'); console.log(url); }).listen(1315, wlanIP)
|
效果: