Skip to content
This repository has been archived by the owner on Sep 25, 2022. It is now read-only.

zaigie/zfnew_webApi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⭐新正方教务管理系统的爬虫webApi-Django(带后台)🔧用以开发校园APP/小程序

登录、消息及成绩和课程部分API基于NeroAsmarr/zfnew【2020.2.16】

目前项目部署在“西院助手”微信/QQ小程序中作为API

⚠️本项目不再更新!API部分已从本项目抽出并全部重写(提高代码易读性,提升性能),存放于该项目下:jokerwho/zfn_api,相关数据抓取issue请移步,后续API更新将在该项目进行

求⭐⭐⭐⭐⭐(跪


相关说明

功能实现

  • 个人信息
  • 停补换课消息
  • 课程修读情况(学业详情)
  • 成绩
  • 课表
  • 查询已选课程
  • 选课
  • 退课
  • 录取查询(仅本校)
  • 空教室查询

  • 响应式后台管理数据库
  • 对每天的每个请求生成日志文件
  • 避免教务系统无法访问,存储部分请求数据到服务器,可选参数刷新
  • 查询各院/专业/班级加入情况
  • 查询GPA在专业与班级的排名

返回数据内容说明

  • 点击JSON说明.MD访问返回的JSON数据键值名称以及具体内容说明

Tips

  • 为了方便管理和请求,不采用传递cookies的方法,而是将cookies存储到数据库让服务器请求
  • 须先通过pinfo新增学生后才能访问其它API
  • 使用simpleui后台,自定义在settings.py以及info/admin.pyinfo/models.py
  • 选课API可能并不通用,这里仅提供思路,具体请参照自己学校情况
  • 代码中有关于开发者本校的录取查询(recruitApp)不通用,请自行编写替换或删除
  • 使用MySQL数据库,请保证MySQL版本为5.6及以上
  • config.json中包含了http代理、官网、Server酱、上下课时间配置
    • ServerChan为none时,不使用Server酱,而配置时须填上完整url,末尾以'.send?'结尾
    • proxy为none时,不使用代理
    • nowterm本来想写成自动判断的,但想到第一个期末成绩出来的时间不定,所以还是用了手动配置,'3'为上学期,'12'为下学期

接口

信息请求


个人信息(必须,用以登录):/info/pinfo

参数名 必选 说明
xh 学号
pswd 密码

停补换课消息:/info/message

参数名 必选 说明
xh 学号
pswd 密码

课程修读情况(学业详情):/info/study

参数名 必选 说明
xh 学号
pswd 密码
refresh 填入'no'则读取缓存

成绩: /info/grade

参数名 必选 说明
xh 学号
pswd 密码
year 学年
term 学期(1 or 2)
refresh 填入'no'则读取缓存

课表:/info/schedule

参数名 必选 说明
xh 学号
pswd 密码
year 学年
term 学期(1 or 2)
refresh 填入'no'则读取缓存

查询各院/专业/班级加入情况:/info/joindetail 方法:GET

参数名 必选 说明
type 榜单[college-二级学院,major-专业,class-班级]

查询GPA在专业与班级的排名:/info/position 方法:GET

参数名 必选 说明
xh 学号

刷新学生班级(应对转专业):/info/refreshclass 方法:POST

参数名 必选 说明
xh 学号
pswd 密码

以xlsx格式导出班级成绩:/info/classgrades 方法:GET

参数名 必选 说明
className 班级名称
yt 学期(如:20201)

该接口数据依托于请求时存储在data目录下的本地文件,并非教务系统接口

个人大数据:/info/maps 方法:GET

参数名 必选 说明
xh 学号

该接口数据依托于数据库中已有数据

是否班委:/info/monitor 方法:GET

参数名 必选 说明
xh 学号

该接口数据依托于数据库中monitor字段,可在后台手动更改

空闲时间:/info/freetime

根据课表和条件输出该同学空闲或有课节数,多用于值班排表

方法:GET

参数名 必选 说明
xh 学号
term 学期(如:20201),不填默认为当前学期
weeks 第几周(如:17),不填默认为当前周
mode 模式[1-显示空闲节数(默认),2-显示有课节数]

该接口数据依托于请求时存储在data目录下的本地文件,并非教务系统接口


选课请求


已选课程:/choose/choosed

参数名 必选 说明
xh 学号
pswd 密码
refresh 填入'no'则读取缓存

板块课:/choose/bkk

参数名 必选 说明
xh 学号
pswd 密码
bkk 板块号(1 or 2)

选课:/choose/choose

参数名 必选 说明
xh 学号
pswd 密码
doId 执行ID,精确到班级,从板块课API中可获取
kcId 课程号,精确到课程,从板块课API中可获取,在其它API中字段名为"courseId"
kklxdm 精确到板块课页面,从板块课API中可获取,板块课1、2不同

退课:/choose/cancel

参数名 必选 说明
xh 学号
pswd 密码
doId 执行ID,精确到班级,从板块课API中可获取
kcId 课程号,精确到课程,从板块课API中可获取,在其它API中字段名为"courseId"

其它请求


one·一个 每日文字:/one

※method : GET

录取查询(仅作者学校):/recruit/query

参数名 必选 说明
identity 考生号 or 身份证号

使用部署

  • 推荐使用uswgi+nginx,具体部署可移步百度
  • 更改config.json中各项:参照上方Tips

测试部署-测试用

  • 请确保服务器或虚拟环境安装了Python3.6及以上版本

1.安装依赖模块

$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

2.开放安全组配置

  • 开放8000端口

3.使用-迁移数据库

  • 在settings.py中配置数据库信息
$ python manage.py makemigrations
$ python manage.py migrate

4.创建后台用户

$ python manage.py createsuperuser

5.用终端打开zfnweb文件夹,并运行

$ python manage.py runserver 0.0.0.0:8000

6.访问后台

/admin

访问你服务器的IP地址:8000/xxx

About

⭐新正方教务管理系统的爬虫webApi-Django(带后台)🔧用以开发校园APP/小程序

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published