一些有关于 SDUT 的 API 封装
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Update api.md Jan 29, 2019
spider Update README.md Jan 30, 2019
test 添加性能测试 Jan 21, 2019
.gitignore Update README.md Jan 21, 2019
LICENSE Initial commit Jan 21, 2019
README.md 添加 Supervisor 发布指南 Jan 30, 2019
__init__.py
api.py 添加成绩与绩点查询 Jan 29, 2019
exception.py 添加山东理工大学统一登录平台的登录 Jan 26, 2019
requirements.txt 添加运行与部署文档 Jan 27, 2019
utils.py

README.md

SDUT RESTful API

一些有关于 SDUT 的 API 封装

警告

测试账号已经被山东理工大学网上服务大厅封禁,在没有试探出对方的封禁规则前,请不要使用山东理工大学网上服务大厅的任何接口。

以下是不经过山东理工大学网上服务大厅的接口列表:

  • /user
    • /user/token
  • /library
    • /library/borrow
  • /score
  • /public/energy
  • /course
    • /course/schedule
    • /course/reminder

山东理工大学网络教学综合平台的接口还未开发完成,因此实际可用的只有:图书借阅、成绩与绩点、宿舍电量查询。

另外,本人的爬取行为在某种意义上得到了山东理工大学后勤服务中心与山东理工大学图书馆的授权,此处对这些组织表示感谢,同时对因为我的爬虫而给相应网站造成的影响表示歉意。

我现在已经不在校内了,无法去依次拜访学校内各个组织来获得授权,因此现在只能以这种未授权爬虫的形式获得数据,并且有较高的被封禁风险。

本项目的目标在于为同学们提供便利,如果学校内有组织愿意开放数据来开发方便同学们生活使用的系统,我愿意放弃我自己的项目。并且如果有可以用得到我的地方,我也定将略尽绵力。

PS:在 2018 年夏,我与老师一同去山东理工大学信息楼获得了爬取山东理工大学网上服务大厅的口头授权,仅存的证据只有我与老师的聊天与通话记录,没有直接的证据。

Usage

API 文档

Run WebServer

$ python3 -m venv venv
$ source venv/bin/activate
# 安装依赖包
(venv)$ pip install -r requirements.txt

(venv)$ python api.py

Deploying

Gunicorn

nohup gunicorn api:app --bind 0.0.0.0:8000 --worker-class sanic.worker.GunicornWorker --max-requests 1000 &

Supervisor

你需要先将配置写入 /etc/supervisord.conf

[program:SDUT_RESTful_API]
command=/path/to/SDUT_RESTful_API/venv/bin/gunicorn api:app --bind 0.0.0.0:8000 --worker-class sanic.worker.GunicornWorker --max-requests 1000
directory=/path/to/SDUT_RESTful_API
stdout_logfile=/path/to/SDUT_RESTful_API/stdout.log
stderr_logfile=/path/to/SDUT_RESTful_API/stderr.log
redirect_stderr=True
environment=PRODUCTION=1

然后启动它:

$ sudo supervisorctl reread  # 如果这句执行失败的话,可以尝试重启 `sudo supervisord`
$ sudo supervisorctl update
$ sudo supervisorctl start SDUT_RESTful_API

TODO

因为放假期间没有通知和作业以及课程表可以测试,因此 course 的功能暂缓开发。

需要登录的查询

  • /user
    • /user/token
    • /user/info
  • /library
    • /library/borrow
  • /card
    • /card/balance
    • /card/consume
    • /card/summary
  • /dormitory
    • /dormitory/info
    • /dormitory/health
    • /dormitory/energy(use /public/energy)
  • /score
  • /course
    • /course/schedule
    • /course/reminder

不需要登录的查询

  • /public/energy