栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

学习通图书馆座位预约,抢座,签到,签退脚本

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习通图书馆座位预约,抢座,签到,签退脚本

学习通图书馆座位预约,抢座,签到,签退脚本

由于本人所在学校的图书馆需要预约座位,抢座,签到,签退,甚是麻烦,所以自己写了个python脚本,实现准时自动抢座,签到,签退的功能。
参考的接口文档:https://github.com/Closty/cx_seat
python脚本:

# -*- codeing = utf-8 -*-
# @Time : 2021/11/2 13:07
# @Author : 大白
# @File : library.py
# @Software : PyCharm


import requests
import urllib
import urllib.request
import hashlib
import time
from concurrent.futures import ThreadPoolExecutor

def md5(str):
    import hashlib
    m = hashlib.md5()
    m.update(str.encode("utf8"))
    return m.hexdigest()
def message(content,phone):
    statusStr = {
        '0': '短信发送成功',
        '-1': '参数不全',
        '-2': '服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间',
        '30': '密码错误',
        '40': '账号不存在',
        '41': '余额不足',
        '42': '账户已过期',
        '43': 'IP地址限制',
        '50': '内容含有敏感词'
    }

    # smsapi = "http://api.smsbao.com/"
    # 短信平台账号
    # user = 'bigwhite'
    # 短信平台密码
    # password = md5('admin@123456')
    # 要发送的短信内容
    # content = '预约成功'
    # 要发送短信的手机号码
    # phone = '11111111111'

    data = urllib.parse.urlencode({'u': 'bigwhite', 'p': md5('1111111111'), 'm': phone, 'c': content})
    # send_url = smsapi + 'sms?' + data
    # print(send_url)
    send_url = "http://api.smsbao.com/" + 'sms?' + data
    print(send_url)
    # response = urllib.request.urlopen(send_url)
    # the_page = response.read().decode('utf-8')
    # print(statusStr[the_page])

username = ['177********','456','789','123213']
passwd = ['@1******','fgh','aaaa0','asda']
def zhuchengxu(i):

    url1 = 'https://cx_api.ssss.men/cxapi?active_id=rob&username=%s&passwd=%s'%(username[i],passwd[i]) #预约明天
    print(url1)
    # time.sleep(5)
    # url2 = 'https://cx_api.ssss.men/cxapi?active_id=signback&username=%s&passwd=%s'%(username[i],passwd[i]) #退座
    # print(url2)
    response = requests.get(url1)
    result = response.text
    # print(result)
    if 'true' in result:
        print('成功')
        # content1 = "退座位成功"
        # message(content1, username[i])
    else:
        print('失败')
        # content2 = "操作失败,请登录app查看"
        # message(content2, username[i])
    # response = requests.get(url)
    # print(response.status_code)
    # print(response.text)


if __name__ == '__main__':
    with ThreadPoolExecutor(max_workers=100) as pool:
        for j in range(1):
            pool.submit(zhuchengxu,j)

由于本人刚学习python,比较菜,还请各位大佬多多指点
发短信的那个部分用的是一个短信平台的接口文档,由于月租太贵了,我就取消了这个发短信的功能,大家可以忽视发短信的模块,同时加入了多线程,让几个号能同时预约抢座,只需要把账号密码放入数组中,更改range()里面的值即可,1是只抢177的座位,输入2可以同时抢177和456的座位,由于接口的功能限制,所以只能预约最近一次的预约时间段和座位。
我的学校开放预约的时间是晚上10:30,而且一次只能预约12个小时,所以我先用我的学习通预约了一次早上9点到晚上9点的座位,然后编写了三个python脚本,分别实现的功能是22:30预约,9:00签到,20:59签退,只需要更改脚本里面的url的参数即可,接下来就是怎么让py脚本准时运行呢?
我想的办法是把py脚本编译成可执行文件,放到云服务器上,编写执行文件时间
首先在服务器上运行

pip install pyinstaller

成功后,将三个脚本上传到服务器,在当前目录下运行

pyinstaller -F library_register.py
pyinstaller -F library_sign.py
pyinstaller -F library_exit.py

然后你会在当前目录下发现dist目录

cd dist

然后ls就能查看编译后的三个可执行文件了,接下来就是定时了,在linux下有个定时执行的文件,我们可以编辑它,输入

vim /etc/crontab

然后编辑配置

我这里的设置就是每天在设置的时间以root权限执行/root/library/dist/下的三个文件。
这个脚本用了一段时间了,帮我和我室友抢座,也祝愿我室友他们都能成功上岸,帮他们分担一点抢座的压力,目前没有出现什么问题,就是今天发现,现在的接口网站没有备案,但是功能还是可以实现的,不影响,今天发现的。目前还是可以用的。仅供给大家参考,大佬们可以自己加以完善,祝愿大家学业有成!

申明!!!
一定要按照自己学校预约规则来,不影响他人,不违反规定!仅供学习参考!请勿用于不法途径!请勿商用!出现任何问题后果自负!与本人无关!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号