湖州师范学院 湖州学院 图书馆抢座位脚本

期末抢座位很麻烦,模拟点击脚本抢的又太慢,毕业了用不到了,留给后来人

写了个request脚本

理论上旧版IC空间管理系统都可以用

原文链接:https://www.hyluz.cn/?id=57131

python脚本:

#coding:utf-8
import time
import requests
import json
import re
import datetime as da
import pymysql
import sys
#reload(sys)  //py2
#sys.setdefaultencoding('utf-8') //py2
from datetime import datetime
# 增加相对路径,这样可以进行相对引用
sys.path.append("..")
# 建立数据库连接
conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='tsg',
    passwd='XXXX', #数据库密码
    db="tsg",
    charset='utf8mb4')  #数据库部分,用于查找座位的id下面给出该表的数据,需自行搭建,或写死
cursor = conn.cursor()  # 执行完毕返回的结果默认以元组的形式保存


def selectData(condition):
    cursor.execute("SELECT kindId,devId,labId FROM stainfo WHERE seatName='{seatName}'".format(seatName=condition))  # 使用 execute()  方法执行 SQL 查询,注意有引号
    data = cursor.fetchone()
    # print(data)
    # 关闭sql连接
    print(data)
    #cursor.close()
    #conn.close()
    return data
def run(user,passwd,seatName,starttime,endtime,days):
    dayss=""
    for i in days:
        dayss=dayss+str((int(i)+7-2)%7)
        dayss=dayss.replace('0','7')
    print(dayss)
    day=str(datetime.now().isoweekday())
    if(day not in dayss):
        print(user+"未设置预约")
        return 1
    
    loginUrl = "http://icspace.lib.zjhu.edu.cn/ClientWeb/pro/ajax/login.aspx"

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
    }
    def logout():
        res = r.get(url="http://icspace.lib.zjhu.edu.cn/ClientWeb/pro/ajax/login.aspx?act=logout",headers=headers,timeout=5)
        print(res.text)
    def getScheduled(kindid, devid, labid, data, starttime, endtime):
        scheduledUrl = "http://icspace.lib.zjhu.edu.cn/ClientWeb/pro/ajax/reserve.aspx?kind_id={}&dev_id={}&lab_id={}&type=dev&prop=&test_id=&resv_id=&term=&min_user=&max_user=&mb_list=&start={}%20{}&end={}%20{}&memo=&act=set_resv"
        flag=0
        i=0

        res = r.get(url=scheduledUrl.format(kindid, devid, labid, data, starttime, data, endtime),headers=headers,timeout=5)

        print(i,datetime.now(),res.text)
        if "操作成功" in res.text:
            flag=1
        elif "方可预约" in res.text:
            flag=0
            #time.sleep(0.005)
        else:
            flag=1
        logout()
        return flag

    r = requests.session()
    loginData = {
        "act": "login",
        "id": user,
        "pwd": passwd
    }
    key = "SCT39442TVtfq4drt4J3Zb81NAeocdAJ8"

    # 登录获取cookie
    r.post(loginUrl, data=loginData,headers=headers,timeout=5)

    # 根据位置号从数据库查出信息
    infos = selectData(seatName)
    kindid = infos[0]
    devid = infos[1]
    labid = infos[2]
    print(r.cookies)
    today = da.date.today()
    afterTomorrow = today + da.timedelta(days=2)
    # print(afterTomorrow)
    resp=getScheduled(kindid, devid,labid,afterTomorrow,starttime,endtime)
    if(resp==0):
        return 1
        #time.sleep(0.1)
        #run(user,passwd,seatName,starttime,endtime,days)
        #return 0

    my_datas = ""
    url_myReverse = "http://icspace.lib.zjhu.edu.cn/ClientWeb/pro/ajax/reserve.aspx?stat_flag=9&act=get_my_resv"

    try:
        myReverse = r.get(url=url_myReverse,headers=headers,timeout=5)
        datas = json.loads(myReverse.text)['data']
        #print("datas:",datas)
        # print(len(datas))
        for index,data in enumerate(datas):
            if index == len(datas) -1:
                tmp_tuple = (data["timeDesc"],data["devName"],)
                my_datas += str(tmp_tuple)
            else:
                tmp_tuple = (data["timeDesc"], data["devName"],)
                my_datas += str(tmp_tuple) + "\n\n"
            print("my_datas:",my_datas)
    except Exception as e:
            
            print(1)
        
    return 0

time.sleep(3)
flag=1

while(flag):
    try:
        print(datetime.now())
        flag=run('20180821xx','xxxxxx','西7F135','8:00','21:30',"1234567")
        
        #学号,密码,座位号,开始时间,结束时间,周几预约  1代表星期六预约周一的,7代表星期五预约周日的
    except:
        flag=1


cursor.close()
conn.close()

运行截图:

 20240107更新:

[新]湖州师范学院图书馆抢座位

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dram_Luu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值