在这里稍微记录一下 23 年自己写的我觉得有意思的脚本。

生成博客文章

Links: https://github.com/Xunop/hexo-format

我以前写博客的方式是直接更改博客的源码,在 hexo 中的 _post 文件夹中写博客,感觉这个工作流很麻烦,于是就写了一个小脚本来完成将笔记转成博客文章这件事。
目前我的博客仓库里面有两个 git submodule , 分别是脚本和笔记,在我的笔记仓库提交 commit 之后,github action 会触发博客仓库的 github action 将我的笔记同步进博客的源码里面。

不过这个脚本写的非常乱,我现在看起来非常头痛 >_<。还有一些莫名其妙的功能,比如可以往 .fignore 文件中添加不想转为博客文章的文件。

清除没有礼貌的人

Links: https://github.com/Xunop/njupt-netlogout

我校的校园网需要登录账号才能上网,我的账号比较特殊,可以不断网,所以会有同学借我的账号来用,但是借的人多了达到了设备限制,使用者发现自己登不上就会去账号后台将其他人注销掉从而挤出一个名额给自己使用 :( 。
因为经常被他们挤下去,我也很烦,所以我扒了一下账号后台注销登录的接口,写成了一个脚本放在路由器上,将不在白名单内的用户都注销掉。

实施这个方案后确实没人跟我抢了,但是我想让一些人使用我的账号时需要我上路由器更新白名单就很麻烦,于是我在 dev-scheduling 分支中加了调度的功能。

如果登录的人数小于四个并且其中有一个我的设备,那么不需要注销用户。
后台会统计用户登录的时长跟被注销次数,由此公式:登录时长 / 被注销次数 维护一个队列,每次注销将注销队列头的设备。随着用户的登录时长越长,他被注销的概率就越大,但是被注销次数多了他的被注销概率也会变小。这个脚勉强可以用吧,反正我的设备都在白名单里面,不参与到队列计算中。

自动查询成绩

Links: https://github.com/Xunop/death-knell

在考完试之后不想每次都自己去查成绩(主要是不想过那种提心吊胆的生活),于是扒了一下接口写了一个小脚本来查询成绩,将查询结果用 webhook 发送到飞书的 bot 中。

LeetCode 推送

Links:

fork 别人写的 LeetCode 国际版的接口仓库,将里面的内容修改了一下(基本上没有一个接口是复用的,参数完全不同),部署到 vercel 上,可以获取一些 LeetCode CN 的信息。这是第一步。

拿到信息之后需要对信息进行处理,用云函数来处理信息,并且发送到飞书。是的,可以用这个来打卡。

还有一个放不出来,用飞书的机器人助手写了一堆应用流程来方便 bot 进行推送和交互。

目前实现的一些功能:

1
2
3
4
5
6
7
8
- 绑定 leetcode 用户名与飞书用户: @bot add username
- 解除绑定:@bot delete
绑定之后 bot 将会每天私信发送每日一题,在群组中也会发送。
- 查看每日一题:@bot daily
需要绑定才能使用的功能:
- 查看刷题记录:@bot solved
- 查看刷题使用的编程语言:@bot langs
- Bot 会在晚上 11:30 采集数据,在 11:40 发送今天提交的 ranking

我觉得还 … 挺有意思的。

批量下载音乐

Links: https://github.com/Xunop/dwn-songs

我第一次用到我平常学的东西帮到我身边很少接触计算机的人。

过年回家的时候,家里的发小给了我一个 u 盘,跟我说这个 u 盘他平时用来插到汽车上当车载音乐的,但是这里面的有些歌有问题无法正常播放,想让我帮他把里面的歌重新下一遍。

我当时以为里面没多少歌的,然后后面一直鸽他,直到他假期快结束的时候我才去看这里面的东西。看到 300 条我是彻底放弃自己手动帮他下歌了,后来花了十几分钟写了一个小小的脚本完成了这个工作,插到我发小车上播放时他非常满意。

这段代码很简单,就是发送几个请求,但是能用到自己学到的东西帮到身边的人还挺有意思的。

平时写的脚本还挺多的,大部分都是配合自己的电脑使用(因为用的是 Hyprland ,欢迎尝试),脚本应该都是在我的 dotfile 里面。