华理图书馆自动预约

自动完成明天三次的预约,为华理考研人准备

目前为 2022-10-10 提交的版本。查看 最新版本

// ==UserScript==
// @name        华理图书馆自动预约
// @namespace   Violentmonkey Scripts
// @match       http://mjyylib.ncst.edu.cn/book/more/type/4/lib/11
// @match       http://mjyylib.ncst.edu.cn/home/book/more/lib/11/type/4/day/*
// @match       http://mjyylib.ncst.edu.cn/book/notice/act_id/***/type/4/lib/11
// @match       http://mjyylib.ncst.edu.cn/book/notice/act_id/**/type/4/lib/11
// @grant       none
// @version     1.3.2
// @author      野生铁丝
// @description 自动完成明天三次的预约,为华理考研人准备
// @license MIT
// @require      https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// ==/UserScript==

var num=0
userID = "2019********"
password="***@******"
// 我是真的搞不懂,这里动态链接的目的是什么,就不怕数据重复吗
// 其实真正牛的是对这个网页的完全包装,验证码等关键要素不变,但是将连接和ajax从页面中抽离出来避免过多的跳转而浪费时间,直接搞一个新的页面布局。
// 不知道我修改cookie用户相关的信息,是否可以保留登录(不可用)信息,以至于很久不用登陆,从而将网页真正的程序化,获得登录(不可用)状态的cookie后,其他服务器或者电脑能够登陆吗

function geturllist(){
    dayNum = Math.ceil((new Date() - new Date(new Date().getFullYear().toString())) / (24 * 60 * 60 * 1000)) + 1;
    console.log(dayNum)
    var num1 = dayNum - 198
    var num2 = dayNum + 16
    var num3 = dayNum + 595
    temurl1 = "http://mjyylib.ncst.edu.cn/book/notice/act_id/" + num1 + "/type/4/lib/11"
    temurl2 = "http://mjyylib.ncst.edu.cn/book/notice/act_id/" + num2 + "/type/4/lib/11"
    temurl3 = "http://mjyylib.ncst.edu.cn/book/notice/act_id/" + num3 + "/type/4/lib/11"
    temurl=temurl1
    urllist = new Array(temurl1, temurl2, temurl3)

}
// // 设置cookie在当天指定时间点过期
// function setCookie(name,value,Deadline){
//   // 获取当前日期对象
//   var curDate = new Date();
//   // 获取当前日期对应的时间戳
//   var curTime = curDate.getTime();
//   // 获取指定时间的时间戳
//   var endTime = convertTime(curDate,Deadline);
//   // 计算出指定时间与当前时间的时间差
//   var disTime = endTime - curTime;
//   // 设置cookie过期时间
//   document.setCookie = name + '=' + value + ';expires=' + disTime;
//   console.log("cookie!")
// }

// 获取指定时间的时间戳
// function convertTime(nowDate,Deadline){
//     // 分割参数Deadline
//     var _dateArr = Deadline.split(':');
//     // 分别获取参数中对应的时、分、秒
//     var hours = parseInt(_dateArr[0]);
//     var minutes = parseInt(_dateArr[1]);
//     var seconds = parseInt(_dateArr[2]);
//     // 设置对应时分秒
//     nowDate.setHours(hours);
//     nowDate.setMinutes(minutes);
//     nowDate.setSeconds(seconds);
//     // 获取当前天中指定时分秒对应的毫秒数
//     var result = Date.parse(nowDate);
//     return result;
// }

// 用于实现自动跳转
function logKey(e) {
  num+=1
  setTimeout(function () {
    if(num==4){
      console.log("finish!")
      var tembt=document.getElementsByClassName("ui-dialog-autofocus")[0].click();
      // 执行登录(不可用)之后进行cookie的状态设定,防止随着页面的刷新出现新的登录(不可用)弹窗。进行页面的切换
      setTimeout(function () {
         var temurl1="http://mjyylib.ncst.edu.cn/book/notice/act_id/83/type/4/lib/11"
      window.location = temurl1
      },100)

    }
  }, 100)
}

function getCookie (name) {
    if (document.cookie.length > 0) {
      var start = document.cookie.indexOf(name + '=')
      if (start !== -1) {
        start = start + name.length + 1
        let end = document.cookie.indexOf(';', start)
        if (end === -1) end = document.cookie.length
        return unescape(document.cookie.substring(start, end))
      }
    }
    return ''
  }
// 用于日期格式化,以后可能用来指定日期预约
// function fix(num, length) {
//   return ('' + num).length < length ? ((new Array(length + 1)).join('0') + num).slice(-length) : '' + num;
// }

function isInArray(arr,value){
    for(var i = 0; i < arr.length; i++){
        if(value === arr[i]){
            return true;
        }
    }
    return false;
}
function closeWin(){
	window.opener=null;
  window.open('','_self');
  window.close();
}
function simulateClick(){
  var test = window.location.href;
  if(test==temurl1){
    console.log("准备进行早上预约")
    var signUpbt=document.querySelector('#signUp');
    console.log(signUpbt.style.display)
    if(signUpbt.style.display!="none"){
    signUpbt.click();
    var temobject1=document.getElementsByClassName("ui-dialog-button")[0]
     var bt1=temobject1.getElementsByTagName('button')[1]

     bt1.click();}
    // 预约完成之后进行中午的预约

    setTimeout(function () {
      window.location = temurl2
    },200)

  }
  else if(test==temurl2){
    console.log("准备进行中午预约")

    var signUpbt=document.querySelector('#signUp');
    console.log(signUpbt.style.display)
    if(signUpbt.style.display!="none"){
      signUpbt.click();
      var temobject1=document.getElementsByClassName("ui-dialog-button")[0]
      var bt1=temobject1.getElementsByTagName('button')[1]
      bt1.click(); }
      setTimeout(function () {
      window.location = temurl3

      },200)

  }
  else if(test==temurl3){
    console.log("准备进行晚上预约")
    var signUpbt=document.querySelector('#signUp');
    console.log(signUpbt.style.display)
    if(signUpbt.style.display!="none"){
      signUpbt.click();
      var temobject1=document.getElementsByClassName("ui-dialog-button")[0]
      var bt1=temobject1.getElementsByTagName('button')[1]
      bt1.click(); }
      setTimeout(function () {
          closeWin()
      },200)

  }

}

// 下次获取元素 var input=document.querySelector('#input');
$(function () {
  console.log("finish!")
  geturllist()
  // setCookie('logstate','true','24:00:00');
  // 进行cookie的读取,用cookie来判断是否执行下面的操作
  var cookie=getCookie("userid")
  console.log(cookie)
  if(cookie!=""){
    console.log("have")
    // 需要跳转页面
    // var myDate = new Date();
    // var year=myDate.getFullYear();
    // var mon=fix(myDate.getMonth()+1, 2);
    // var day=fix(myDate.getDate()+1, 2);
    // console.log(year,mon,day)
    // var timestr=year+"-"+mon+"-"+day
    // var temurl="http://mjyylib.ncst.edu.cn/home/book/more/lib/11/type/4/day/"+timestr
    // var test = window.location.href;
    // if(test==temurl){
    //   console.log("准备进行预约")
    // }
    // else{
    //   console.log("跳转")
    //   window.location = temurl
    // }
    // 登录(不可用)之后,进行页面跳转,如果在跳转之后的页面,进行预约操作
    var test = window.location.href;
    // var urllist=new Array("http://mjyylib.ncst.edu.cn/book/notice/act_id/83/type/4/lib/11","http://mjyylib.ncst.edu.cn/book/notice/act_id/297/type/4/lib/11","http://mjyylib.ncst.edu.cn/book/notice/act_id/876/type/4/lib/11")
    var havestate = isInArray(urllist,test)
    if(havestate){
      console.log("不需要跳转")
      // 这个时候开始调用点击预约函数
      simulateClick()
    }
    else{
      console.log("需要跳转")
      // var temurl="http://mjyylib.ncst.edu.cn/book/notice/act_id/83/type/4/lib/11"
      window.location = temurl
    }
  }
  else{
    setTimeout(function () {
      document.getElementsByClassName("login-btn")[0].click();
      //$(".login-btn,.login_click")[0].css("background-color","yellow").trigger("click")
      var temobject1=document.getElementsByClassName("login_username")[0]
      var temobject2=temobject1.getElementsByTagName('input')[0].value=userID
      var temobject3=document.getElementsByClassName("login_pwd")[0]
      var temobject4=temobject3.getElementsByTagName('input')[0].value=password
      var temobject5=document.getElementsByClassName("login_check")[0]
      var temobject6=temobject5.getElementsByTagName('input')[0]
      // temobject6.onchange=function(){
      // 	console.log("变化了");
      // }
      temobject6.focus()
      temobject6.addEventListener('keydown', logKey);

    }, 100)
  }

})

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址