哈尔滨工业大学校历生成工具
简介
- 校历生成工具,根据提供的学期开始日期以及周数和事件,生成校历json数据,可作为校园开放平台接口供第三方服务调用。
- 同时实现了一个标准化日历的API server可以供提供订阅服务。
使用方法
- 可以在命令行下直接通过命令调用,也可作为模块导入其他应用。
- 基于命令行使用:
python main.py input.json
- 基于模块导入使用:
from HIT_school_calender.main import CalenderApp
- 基于命令行使用:
- API Server基于webpy实现。
- 基于命令行部署:
python CalenderAPIServer.py 8000
- 基于nginx + uwsgi部署: pass
- 基于命令行部署:
参数
- first_day: 学期开始的第一天的日期,格式为"yyyy-mm-dd"
- week_num: 需要生成的周数, 整形
- beauty: 输出json是否需要美化,布尔值
- events: 事件字典,键为日期,格式为"yyyy-mm-dd",值为事件描述,字符串
调用说明
-
基于命令行的调用只需生成一个包含上述参数的json文件即可在命令行中调用,示例:
{ "first_day": "2017-02-27", "week_num": 18, "beauty" : true, "events" : { "2017-02-25": "本科生和研究生老生到校注册", "2017-02-26": "本科生和研究生老生到校注册", "2017-02-27": "春季学期开始上课", "2017-02-28": "2017春博士新生报到", "2017-04-02": "清明节放假调休3天", "2017-04-03": "清明节放假调休3天", "2017-04-04": "清明节放假调休3天", "2017-04-29": "劳动节放假3天", "2017-04-30": "劳动节放假3天", "2017-05-01": "劳动节放假3天", "2017-05-26": "校运动会", "2017-05-27": "校运动会", "2017-05-28": "端午节放假调休3天", "2017-05-29": "端午节放假调休3天", "2017-05-30": "端午节放假调休3天", "2017-06-26": "期末考试", "2017-06-27": "期末考试", "2017-06-28": "期末考试", "2017-06-29": "期末考试", "2017-06-30": "期末考试" } }
-
基于模块导入使用
first_day = "2017-02-27" week_num = 18 beauty = True events = { "2017-02-25": "本科生和研究生老生到校注册", "2017-02-26": "本科生和研究生老生到校注册", "2017-02-27": "春季学期开始上课", "2017-02-28": "2017春博士新生报到", "2017-04-02": "清明节放假调休3天", "2017-04-03": "清明节放假调休3天", "2017-04-04": "清明节放假调休3天", "2017-04-29": "劳动节放假3天", "2017-04-30": "劳动节放假3天", "2017-05-01": "劳动节放假3天", "2017-05-26": "校运动会", "2017-05-27": "校运动会", "2017-05-28": "端午节放假调休3天", "2017-05-29": "端午节放假调休3天", "2017-05-30": "端午节放假调休3天", "2017-06-26": "期末考试", "2017-06-27": "期末考试", "2017-06-28": "期末考试", "2017-06-29": "期末考试", "2017-06-30": "期末考试" } app = CalenderApp(first_day, week_num, events, beauty) result = app.gen_json()
-
API Server访问
- 基于标准get请求,提供8位开始及结束日期
- http://server/?start=20170225&end=20170228
返回结果
-
返回一个json对象,格式如下:
{ "weeks": [ { "dates": [ { "date": "2017-02-27", "weekday": 1, "events": "\u6625\u5b63\u5b66\u671f\u5f00\u59cb\u4e0a\u8bfe" }, { "date": "2017-02-28", "weekday": 2, "events": "2017\u6625\u535a\u58eb\u65b0\u751f\u62a5\u5230" }, { "date": "2017-03-01", "weekday": 3, "events": null }, { "date": "2017-03-02", "weekday": 4, "events": null }, { "date": "2017-03-03", "weekday": 5, "events": null }, { "date": "2017-03-04", "weekday": 6, "events": null }, { "date": "2017-03-05", "weekday": 7, "events": null } ], "week_number": 1 } ] }
-
字段说明:
- weeks: 周次列表,装有每周的信息
- week_number: 周次号,即本学期的第几周
- dates: 天列表,装有一周中每天的信息
- date: 日期,格式"yyyy-mm-dd"
- weekday: 星期几,用1-7表示周一到周日
- events: 本日事件,字符串,无则为null,注意:此处为unicode编码,直接使用文本编辑器打开显示为编码,浏览器或程序读入后正常显示中文。
- weeks: 周次列表,装有每周的信息
-
API Server返回结果同为json格式,示例如下:
{
"errcode": 0,
"errmsg": "ok",
"events": [
{
"eventid": 364761512,
"end": "2017-02-27 00:00",
"description": "\u672c\u79d1\u751f\u548c\u7814\u7a76\u751f\u8001\u751f\u5230\u6821\u6ce8\u518c",
"title": "\u672c\u79d1\u751f\u548c\u7814\u7a76\u751f\u8001\u751f\u5230\u6821\u6ce8\u518c",
"url": "",
"start": "2017-02-26 00:00",
"address": ""
},
{
"eventid": 364761509,
"end": "2017-02-26 00:00",
"description": "\u672c\u79d1\u751f\u548c\u7814\u7a76\u751f\u8001\u751f\u5230\u6821\u6ce8\u518c",
"title": "\u672c\u79d1\u751f\u548c\u7814\u7a76\u751f\u8001\u751f\u5230\u6821\u6ce8\u518c",
"url": "",
"start": "2017-02-25 00:00",
"address": ""
}
]
}
- 字段说明
- errcode: 返回码
- errmsg: 对返回码的本文描述
- events: 日程事件数组
- eventid: 事件id
- title: 事件标题
- description: 事件描述
- start: 开始时间
- end: 结束时间
- address: 事件地址
- url: 详情页面
联系作者
- 版权所有:哈尔滨工业大学网络与信息中心 哈尔滨工业大学Pureweber开发组
- 作者: yumendy
- Email:yumendy@163.com