/HIT_school_calender

HIT school calender generator

Primary LanguagePython

哈尔滨工业大学校历生成工具

简介

  • 校历生成工具,根据提供的学期开始日期以及周数和事件,生成校历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访问

返回结果

  • 返回一个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编码,直接使用文本编辑器打开显示为编码,浏览器或程序读入后正常显示中文。
  • 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