Skip to content

Latest commit

 

History

History
executable file
·
160 lines (108 loc) · 5.86 KB

README.md

File metadata and controls

executable file
·
160 lines (108 loc) · 5.86 KB

简介

实现广州大学图书馆的座位自动预约、自动签到, 让你不再烦恼总是挑不到座位或者忘记签到。该项目可实现多个用户同时预约、签到,只需要在 info.py 填上多个用户信息即可。


项目结构

├── README.md
├── json             # 保存每个房间和座位的信息
│   ├── 101.json
│   ├── 202.json
│   ├── 203.json
│   ├── 204.json
│   ├── 205.json
│   ├── ........
├── libs
│   ├── __init__.py
│   ├── info.py      # 保存个人信息
│   ├── rsa.py       # RSA 加密算法的实现
│   └── source.py    # 核心代码
├── requirements.txt # 依赖项
├── reserve.py       # 预约
└── sign.py          # 签到

运行

下面的教程部署在服务器或云函数, 如需用 Github Action 部署, 请查看

  1. 克隆或者下载代码

  2. 安装依赖

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. 修改 libs\info.py文件,填上自己的学号、密码以及要预约的座位号

  4. 运行 reserve.py即可预约,运行 sign.py可签到

    python reserve.py
    python sign.py

待实现

  • 一楼研讨间的预约和签到
  • 五楼研讨间的预约和签到
  • 能自动签到对应预约的座位
  • 摈弃 json 文件, 座位 ID 根据请求查询
  • 用户可自定义预约时间
  • 处理教务系统要求改密码问题

部署

为了实现自动预约 + 自动签到, 需要每天定时执行预约和签到脚本。可以部署到自己的电脑服务器云函数GitHub Actions。(若要部署到自己的电脑, 则需要一直开机)

  • reserve.py预约脚本可于每天早上 6:15:40 执行, 因为系统每天 6:15 开放预约
  • sign.py签到脚本可于预约时间的1分钟后执行, 比如预约 8:30~12:30, 可 8:31 执行签到

  1. 部署到 Windows 的可以使用计划任务定时执行脚本 (自行百度)

  2. 部署到 Ubuntu/CentOS 服务器的可以使用 crontab 定时执行脚本 (自行百度)

  3. 推荐部署到云函数(腾讯云函数、阿里云函数都行), 因为它们有免费额度, 相当于白嫖 这里以阿里云函数为例

    1. 打开阿里云官网, 注册阿里云账号

    2. 打开函数计算页面

      image-20230514115141532

    3. 点管理控制台

    4. 选择服务及函数,再点击创建服务,随便给个名字,例如我取名叫 Library image

    5. 创建两个函数,分别用于预约和签到。

      • 创建函数的方式:使用内置运行时创建
      • 函数名称:可以叫做 ReserveSign,随意
      • 请求处理程序类型:处理 HTTP 请求
      • 运行环境:Python 3.8 以上就行
      • 代码上传方式:可以选择通过文件夹 或 zip 包上传代码,反正上传代码就行
      • 执行超时时间:160 以上
      • 请求处理程序: 分别是reserve.mainsign.main(即执行 rserve.py 里的 main 函数和 sign.py 里的 main 函数)
      • 其余参数默认即可

      image-20231105092652349

      image-20231105094104565


      两个函数示例: image

    6. 点击打开终端,输入以下命令安装依赖项

      • -t .: 表示将依赖安装置该目录下
      • -r : 指定对应的 requirements.txt 文件, 去安装这个文件里面的包
      pip install -t . -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

      image

    7. 配置触发器

      • 触发器类型:选择异步调用

      • 触发器名称:随便起个

      • 预约函数的触发方式可以选我这个,我这个是每天 6:15:20 触发的意思

        CRON_TZ=Asia/Shanghai 20 15 6 * * *

        image

      • 签到函数的触发方式,我这个是每天的 8:21、8:31、8:35、8:55、12:31、13:55、16:31、20:31... 触发,弄这么多个触发点是为了以防万一签到失败,多来几次

        CRON_TZ=Asia/Shanghai 0 21,30,35,55 8,12,13,16,20 * * *
    8. 代码上传后记得点击部署,也可以点一下测试函数看看能不能正常运行,只要有输出就说明正常,不用管它的报错

    image





运行示例

  • 预约成功示例

    image-20230514112415314
  • 签到成功示例

    image-20230514113116310