这里是新自习室功能的后端,具有爬取教室列表,获取具体教室占用信息并解析的功能,并且使用 mysql 存储处理好了的学期自习室信息,并且使用 redis 进行每天的动态更新
后端运行起来时,你可以发送如下请求
-
GET /get_classrooms 获取具体校区,具体楼栋,今天具体时间的空教室信息
参数:
-
campus_code :校区代码,详情见下
-
building_code: 楼栋代码
-
start_time: 第几节开始
-
end_time: 第几节结束
返回"data" 里是空闲教室列表
-
-
GET /get_available_buildings 获取具体校区,今天具体时间的 有空教室的楼栋
参数:
-
campus_code :校区代码,详情见下
-
start_time: 第几节开始
-
end_time: 第几节结束
返回"data" 里是空闲教室列表
-
-
POST /update-list 重新爬取详细课程信息,耗时较长
参数: token,在docker 构建时设定
- /details/xxx.json 存储每间教室的课程信息,文件名为教室代码
- api.py fastapi 模块
- databaseQuery.py 数据库查询模块,用于提供每天的查询
- detail_example.py 每间教室的详细课程信息
- detials.zip 一版所有教室的详细信息的打包
- list.json 一版教室列表
- parseDetail.py 解析每间教室的详细信息,并把解析好的信息存到 mysql 数据库
- requestJson.py 获取教室列表以及每间教室的详细课表
- update_redis.py 每天运行,更新每天的 Redis 数据
-
mysql 数据库:用于存储处理好的空教室信息
格式:周数 - 星期几 - 校区代码 - 楼栋代码 - 第几节课 - 空教室列表
其中:教室代码列表如下
building_code_to_string = {
"010102": "弘毅楼(附楼)",
"010103": "弘毅楼(主楼)",
"010106": "致远楼",
"010201": "东教学楼",
"020101": "爱特楼",
"020102": "北教一",
"020103": "北教二",
"020104": "北教三",
"020105": "学海楼",
"020201": "博学北楼",
"020202": "博学东楼",
"020203": "博学西楼",
"020204": "博学主楼",
"030102": "教学大楼",
"030201": "航海楼",
}
校区代码如下:
building_code_to_campus = {
"0101": "东院",
"0102": "西院",
"0201": "鉴湖校区",
"0202": "南湖校区",
"0301": "余家头校区",
"0302": "余家头校区",
}
-
redis 数据库: 存储当天的自习室信息,每天更新
格式:“校区号,教学楼号,第几节课” : 空教室列表