惟愿言行合一,砥砺前行

0%

前言

  由于官网修复了左右翻页重新获取数据的bug,原脚本不再适用,需刷新之后重新进才可以实现页面更新。所以要不用下auto.js?(手机)
  auto.js挺简单的,但是拿手机蹲很容易没电而且不能玩手机。同时不知道你们的浏览器刷新键是否叫做刷新,兼容性不一定强。

test.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
var m = require("module.js");
var name = "城市与文化遗产(在线课程)"; //课堂全名
var key = "20202w125011001"; //课堂编号
var number = "189/190"; //期望人数
var type = "历史与文化(原 人文社会科学类)"; //课程类型
var c = desc("刷新").findOne();
while (true) {
if (text("选课系统更新公告").findOne(100)) {
sleep(50);
desc("选课").findOne().click();
sleep(50);
} else if (text("选课提示信息").findOne(100)) {
m.clicktext("下一步");
sleep(50);
} else if (text(key).findOne(100)) {
if (text(number).findOne(100)) {
home();
break;
} else {
sleep(50);
c.click();
sleep(50);
}
} else if (text(name).findOne(100) && text(type).findOne(100)) {
m.clicktext("查看课堂");
sleep(100);
} else if (text("课程名称: ").findOne(100)) {
sleep(50);
input(name);
sleep(50);
m.clicktext("查询");
sleep(100);
}
sleep(100);
}

module.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var m = {};
m.clicktext = (item) => {
while (true) {
var a = text(item).findOne(1000);
if (a) {
a = a.bounds();
if (a) {
var x = a.centerX();
var y = a.centerY();
click(x, y);
break;
}
}
}
}
module.exports = m;

使用方法

  1. 下载Auto.js;
  2. 浏览器调至电脑版;
  3. 复制粘贴成两个文件,test.js,module.js;
  4. 修改test.js的name,key,number;
  5. 运行test.js;
  6. 打开选课页面并登录进入首页,会发现脚本已经开始运行,将页面缩放至最小。

    以下是原博客,已经不太行了

    1. 撰写过程中学到的几点

    一、如何用js绕开页面中的confirm判断。

    这里的页面本身非常简陋,直接把按钮对应的原函数写了出来。
    所以我采用的方法是直接改变按钮的onclick事件,并重写onclick事件对应的函数,覆盖掉,把其中的confirm去掉。非常简单粗暴。
1
2
3
4
var what1=document.getElementsByTagName("input")[10];
what1.onclick =function () {
selectKT(what1.id,nowRenshu,renshu,where.cells[2].innerText,bianhao,xuefen);
};

后话:由于学校网站经久失修,其实只要读取对应的并且填写表单即可,即使用抓包和发包之类的也很容易,根本就不需要用js模拟。

二、修改网页DOM元素,给使用者一点小惊喜

本来页面上想蹲的课的按钮是“选课”,由于改页面元素着实简单,顺手改成“加油”了,自我感觉极好,但是这里有一个需要注意的点。(看代码)

1
2
3
4
5
6
what1.value = '加油';
var btn=document.creatElement("button");
btn.onclick=function(){
what1.value = '加油';
};
btn.onclick();

我这里额外加了一个btn按钮,而不是只修改value值。因为众所周知,这玩意改完之后不会立即重新渲染。(也就是,只写第一行代码是基本没用的)所以添加一个小小的点击事件就能让它立即生效。

三、sleep函数在js中的极有效写法

不瞒您说,这个sleep函数我抄的。但是真的好香,记小本本。

1
2
3
4
5
6
7
8
9
10
function sleep(n) {
var start = new Date().getTime();
// console.log('休眠前:' + start);
while (true) {
if (new Date().getTime() - start > n) {
break;
}
}
// console.log('休眠后:' + new Date().getTime());
}

四、油猴的脚本和朴素的js代码的区别

区别极小,只是它需要加一个头,而且这个头必须加(开头被注释掉的那一大片)。好像不止可以用js,还可以用别的语言,可惜我不会。至于这个头怎么写嘛,这里讲的还不错,随便看一下先入个门就行

五、油猴是啥?咋用?(这个是顺便一提)

这篇文章,往下翻,包安装包会。这篇文章我也发在了csdn上,mooc小助手那篇。

2. 使用说明

清空并复制粘贴以下代码。并阅读下面的说明。

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// ==UserScript==
// @name 华科公选抢课
// @namespace http://tampermonkey.net/
// @version 0.1.3
// @description 抢课前后刷新,并自动选课
// @author shandianchengzi
// @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
// @match http://*/*
// @grant none
// @include http://wsxk.hust.edu.cn/*
// ==/UserScript==
var shuaxin=500;//刷新频率(单位毫秒)
function sleep(n) {
var start = new Date().getTime();
// console.log('休眠前:' + start);
while (true) {
if (new Date().getTime() - start > n) {
break;
}
}
// console.log('休眠后:' + new Date().getTime());
}

function selectKT(ktbh,ktrl,ktrs,kcmc,kcbh,kczxf){
document.getElementById("ktbh").value=ktbh;
document.getElementById("ktrl").value=ktrl;
document.getElementById("ktrs").value=ktrs;
document.getElementById("kcmc1").value=kcmc;
document.getElementById("kczxf").value=kczxf;
document.getElementById("kcbh").value=kcbh;
document.form.submit();
}
(function() {
;

var what = document.getElementsByTagName("table")[0].rows[3];
var what3=what.cells[0].className;
if(what3=="pagebar"){
var where=document.getElementsByTagName("table")[0].rows[2];
var what10=where.cells[9].innerText;
var what2=where.cells[2].innerHTML;
var xuefen=where.cells[4].innerText.split('/')[1];
var bianhao=what2.split('=\'+')[1];
bianhao=bianhao.split(')')[0];
var renshu=what10.split('/')[1];
var nowRenshu=what10.split('/')[0];
var bili=renshu+'/'+renshu;
var noChance=what10.indexOf(bili);

var what1=document.getElementsByTagName("input")[10];
what1.value = '加油';
var btn=document.creatElement("button");
btn.onclick=function(){
what1.value = '加油';
};
btn.onclick();
what1.onclick =function () {
selectKT(what1.id,nowRenshu,renshu,where.cells[2].innerText,bianhao,xuefen);};

if(noChance!= -1)
{
history.go(-1);
}
else {
what1.onclick();
return;}
}
else history.go(1);
sleep(shuaxin);
// Your code here...
})();

使用说明:

  1. 前提:你没有满课。
  2. 来到华中大选课的页面,左上角按课堂选课,然后打开脚本。
  3. 查询你想蹲的课程并回车。
  4. 然后就会自动刷了。过程略鬼畜,如果有人退了就会自动抢。不可以挂后台,请让这个页面一直在窗口上,可以把窗口拉到很小,然后用DeskPins固定不管。

补充说明:
5. 其他的浏览器不清楚,谷歌是可以的。
6. 暂时只支持课程名称查询之后只有一个结果的课,比如华科学子走世界查得到很多课,这个就不支持。
7. 如果觉得刷新频率不满意,把开头的shuaxin改成对应的毫秒数。
8. 放弃刷这一门了就先停止脚本,再打开别的重复1~4步骤。刷到了脚本会自动挂掉,但是也要手动关上,不然可能会继续重复跳页面。

确认过眼神,hexo-admin是我想找的功能,赞呀,在线编辑!

根目录下 复制粘贴以下代码

1
2
3
4
5
npm install --save hexo-admin
echo "hexo clean && hexo g -d">hexo-deploy.bat
echo admin:>>"_config.yml"
echo " deployCommand: 'hexo-deploy.bat'">>"_config.yml"
hexo server -d

然后在浏览器打开localhost:4000/admin/即可编辑博文。
编辑完直接左上角Deploy,跳出一个页面,什么也不用输入,直接点deploy按钮,就可以完成博客的部署。
可能遇到的问题:如果每次都要输入密码,就查看一下你的_config.yml,里面的deploy的repo从http网址改为git@github类型。

以下是代码解释

第一行,下载插件,
第二行,生成一个内容为”hexo clean && hexo g -d”,名为”hexo-deploy”的bat文件,
第三、四行,配置_config.yml文件,
第五行,开启hexo服务。

用admin插入图片

复制图片,粘贴到编辑页面。出现大概这样的东西:
![upload successful](\\images\pasted-2.png\)
,然后改成:
![upload successful](/images/pasted-2.png)。就出图片了。
upload successful

  1. 声势浩大起来,再平凡普通的话都拥有奇迹的力量。
    武汉加油,中国加油!

  2. 没有人会摸着你的脑袋再来一句:小朋友,我看你骨骼清奇,现在做不好不要紧,日后必成大器。
    你必须呈现完整而漂亮的答案,而不是灵气逼人的草稿。
    即使他们能等你成长,也必须提前告知一声成长需时,精确到秒。

  3. “如果你没有某种美德,就假定你有。”——莎士比亚
    “玛丽,你知不知道你有内在的财富?”——《人性的弱点》

  4. 如果你以后将做一个大的平台的运维的话,请不要让你现在体验过的bug被你的用户体验。百口莫辩的滋味不好受,希望你学习能更扎实一些。

  5. 从前的朋友我一个一个推远,新来的朋友又让我看不真切。我渴望的安生以孤独的形式出现了,我厌弃的繁杂以另一种方式纷至沓来,我不屑的亲昵恰是我的曾经,我憧憬的左右逢源却也恰好是我过去不曾缺过的东西。
    留得住记忆留不住人事,留得住人事留不住时间,是羡慕过去的自己无所顾忌,还是羡慕过去的时光里的无忧无虑,这谁说得准呢?只好安慰自己,大抵是痛苦的记忆逐渐淡忘,留下的快乐更多,也就没必要去羡慕从前了。

  6. 与其找永动机不如找无尽的能源。

  7. 用前端的语言该怎么表白呢~(B是表白者,A是被表白者)
    我已经在B浏览器运行了alert(isNaN(A)),弹出了大大的true弹窗。你在B浏览器中,是无法用数值衡量的NaN。你不等于过去的你,或者将来的你,你是我永远独一无二的现在时。
    尽管有些不可思议,但是isNaN()确实适用于对象。而我的脚本中,对象只有一个。

  8. “当你问一个作家,或者一个电影导演,他拍了一部电影,‘你想表达什么’的时候。他如果可以告诉你,‘我这个电影要表达的是,人和人之间的那种一个撕心裂肺的那种纠缠,比如说,或者那种刻骨铭心的爱情,我想表达这个’。如果他可以用这句话来说,他不需要拍这个电影,他告诉你这句话就行了。”
    “艺术本身给人带来的愉悦,不是来自结果而是来自过程。”

  9. 不要抱怨试题总是先有答案再有解答,大自然出的试题,先人甚至不知道有没有答案,也义无反顾地去答了啊。

难过的时候应该倾诉吗?

ROS安装使用

更新源

找到Software & Updates,将源更新为阿里云/清华的源。

这里写图片描述

在Other Software里将Canonical Partners勾上。
这里写图片描述
然后自己手动更新一下:

1
2
sudo apt update
sudo apt upgrade

如果init或update时Error,参考博客《rosdep init 及update报错的解决办法汇总》https://blog.csdn.net/weixin_39730025/article/details/113348458?spm=1001.2014.3001.5501