gyro永不抽风

ああああああああああああああああおおおおおおおおおおおおおおおお

使用Java, AppleScript对晓黑板进行定时自动打卡

由于我们学校要求每天7点起床打卡,但是实在做不到,遂写了这个脚本。

绪论

由于晓黑板不支持网页版,只能使用App进行打卡,所以我使用网易的安卓模拟器,安装App。

打卡实现

逻辑非常简单:

  • 使用java的Robot类来移动,点击鼠标
  • 由于Robot对模拟器输入无效,就使用Applescript键入1
  • 再点击一次按钮,完成打卡

代码:

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
package edu.sfls.Jeff.JavaDev.App.AutoClockIn;

import java.awt.*;
import java.awt.event.InputEvent;
import java.io.IOException;

public class Main {

public static void main(String[] args) throws AWTException, InterruptedException, IOException {
Robot robot = new Robot();
robot.mouseMove(441, 978);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
Thread.sleep(10);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
Thread.sleep(1000);
String[] script = {"osascript", "-e", "tell application \"NemuPlayer\"\n" +
"\tactivate\n" +
"end tell\n" +
"\n" +
"tell application \"System Events\"\n" +
"\ttell process \"NemuPlayer\"\n" +
"\t\ttell window 1\n" +
"\t\t\tkey code 18\n" +
"\t\tend tell\n" +
"\tend tell\n" +
"end tell"};
Runtime.getRuntime().exec(script);
Thread.sleep(1000);
robot.mouseMove(487, 127);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
Thread.sleep(10);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
}

}

打包java文件

首先我们需要通过IDE/命令行打包成可执行jar文件

使用AppleScript封装成App

代码:

1
do shell script "java -jar /Users/jefferson/Documents/Coding\\ Directory/Apple\\ Script/daka/AutoClockIn.jar"

使用plist来定时执行

虽然可以用java的办法,但是我有点懒,直接使用Mac OS原生的方法,创建一个plist

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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- 名称,要全局唯一 -->
<key>Label</key>
<string>com.jefferson.cron.clockin</string>
<!-- 命令, 第一个为命令,其它为参数-->
<key>ProgramArguments</key>
<array>
<string>open</string>
<string>/Users/jefferson/Documents/Coding Directory/Apple Script/daka/daka.app</string>
</array>
<!-- 运行时间 -->
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>01</integer>
<key>Hour</key>
<integer>7</integer>
</dict>
<!-- 标准输入文件 -->
<key>StandardInPath</key>
<string>/Users/jefferson/Documents/run-in-meican.log</string>
<!-- 标准输出文件 -->
<key>StandardOutPath</key>
<string>/Users/jefferson/Documents/run-in-meican.log</string>
<!-- 标准错误输出文件 -->
<key>StandardErrorPath</key>
<string>/Users/jefferson/Documents/run-in-meican.log</string>
</dict>
</plist>

写一个shell脚本来刷新

1
2
3
launchctl unload ~/Library/LaunchAgents/com.jefferson.cron.clockin.plist
sleep 0.5
launchctl load ~/Library/LaunchAgents/com.jefferson.cron.clockin.plist

给脚本加权限

1
sudo chmod +x reset.sh

运行脚本启动

1
./reset.sh
__EOF__
-------------本文结束感谢您的阅读-------------

本文标题:使用Java, AppleScript对晓黑板进行定时自动打卡

文章作者:gyro永不抽风

发布时间:2020年02月28日 - 18:02

最后更新:2020年09月15日 - 07:09

原始链接:http://gyrojeff.moe/2020/02/28/%E4%BD%BF%E7%94%A8Java-AppleScript%E5%AF%B9%E6%99%93%E9%BB%91%E6%9D%BF%E8%BF%9B%E8%A1%8C%E5%AE%9A%E6%97%B6%E8%87%AA%E5%8A%A8%E6%89%93%E5%8D%A1/

许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请保留原文链接及作者!

真的不买杯奶茶吗?T^T

欢迎关注我的其它发布渠道