V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
dairoot
V2EX  ›  分享创造

开源一个 正方教务系统 对接模块 School-Api

  •  3
     
  •   dairoot ·
    dairoot · 2019-01-26 21:38:39 +08:00 · 7138 次点击
    这是一个创建于 2163 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    大二接手师兄编写的校园微信公众号,那时候奕报告(校园服务 app )刚好在对接我们学校,可以提前查成绩,于是就去抓包分析奕报告,第一次敲代码的我,就这样子✨bulingbuling✨的上线了我的第一个 bug 多多的成绩查询功能(后来因提前公布成绩的原因,被抓去喝茶了)。

    以上就是我的入坑经历,后来随着项目功能越来越多,可扩展性也就越来越差,存在很多隐藏问题,debug 超麻烦!!!。于是就把正方系统的请求功能重写了,封装成一个独立模块。web 服务不再需要考虑教务系统的请求问题,也方便了公众号的后续开发(如:多校接入)。

    GitHub: https://github.com/dairoot/school-api

    模块安装

    $ pip install School-Api
    

    主要功能

    • 成绩查询 (学生 /部门)
    • 课表查询 (学生 /教师)
    • 教学场地课表(部门)
    • 用户信息查询(学生 /教师)

    技术支持

    使用示例 详细文档

    # -*- coding: utf-8 -*-
    
    from school_api import SchoolClient
    
    # 先实例化一个学校,再实例化用户
    school = SchoolClient(url='http://210.38.137.126:8016')
    student = school.user_login('2014xxxx', 'xxxx')
    schedule_data = student.get_schedule()
    print(schedule_data)
    

    课表数据格式

    课表

    微信公众号功能预览:源码

    wechat

    欢迎 star & fork GitHub: https://github.com/dairoot/school-api

    第 1 条附言  ·  2019-01-27 00:34:05 +08:00
    仅支持这类教务系统网站
    测试地址: http://server.dairoot.cn
    31 条回复    2023-05-30 21:30:42 +08:00
    77600753
        1
    77600753  
       2019-01-26 21:46:13 +08:00
    这个不错,谢谢楼主分享
    dairoot
        2
    dairoot  
    OP
       2019-01-26 21:47:21 +08:00
    @77600753 感谢支持哈
    bkmi
        3
    bkmi  
       2019-01-26 21:54:56 +08:00 via Android
    东西不错,预感楼主还要再喝一次茶
    dairoot
        4
    dairoot  
    OP
       2019-01-26 21:58:22 +08:00
    @bkmi 不需要我去喝茶,有别人专业代喝的😂
    Daath
        5
    Daath  
       2019-01-26 22:04:05 +08:00 via Android
    看到这个课程,牛逼。。物联网,云计算
    steveway
        6
    steveway  
       2019-01-27 02:36:58 +08:00 via Android
    奕报告似乎不是用的用户接口?
    可以直接获得所有人的排名
    superlks
        7
    superlks  
       2019-01-27 08:18:16 +08:00 via iPhone
    去年还是这样的教务系统,今年正方似乎重构了教务系统,ui 全变了,接口不清楚变没变,因为关注的不多,之前倒是自己搞过学校网站
    jimages
        8
    jimages  
       2019-01-27 08:43:37 +08:00
    我们自己做了一个,也是抓取正方教务系统的课表,成绩,考试安排和个人信息,我自己测试了一下,抓完所有数据(包括所有学期,需要 5s,使用了多线程)楼主这个需要多少时间啊?我感觉似乎没有使用多线程来加速
    iSk2yroot
        9
    iSk2yroot  
       2019-01-27 09:41:48 +08:00
    最近也正好在鼓捣这个,可以学习下楼主的代码 ,感谢分享
    stillwaiting
        10
    stillwaiting  
       2019-01-27 09:49:02 +08:00 via iPhone
    10 年前我也写过,查成绩,主要为了抢选课...
    快 10 年了界面也没变过嘛
    dairoot
        11
    dairoot  
    OP
       2019-01-27 10:38:09 +08:00 via Android
    @jimages 我只是提供请求的方法,多线程,队列什么的写在外层接口,比如我们外层就是用 celery 来调用的了
    dairoot
        12
    dairoot  
    OP
       2019-01-27 10:46:15 +08:00 via Android
    @stillwaiting 哇,十年前,我们主要的干需是每天的课表查询和一学期一次的成绩查询
    alvin666
        13
    alvin666  
       2019-01-27 10:47:27 +08:00 via Android
    代喝茶
    这么厉害的吗
    huangdayu
        14
    huangdayu  
       2019-01-27 12:01:46 +08:00 via Android
    如果我还在校也许还可以搞一波,不过也感谢楼主的分享
    dairoot
        15
    dairoot  
    OP
       2019-01-27 12:23:57 +08:00
    @huangdayu 哈哈感谢支持,多校兼容还是个坑,还在填补中
    glaucus
        16
    glaucus  
       2019-01-27 13:43:49 +08:00 via iPhone
    验证码如何处理的?
    whi147
        17
    whi147  
       2019-01-27 13:51:10 +08:00 via Android
    @Daath 我上学的时候也是这个专业,主要还是传感器、单片机开发
    dairoot
        18
    dairoot  
    OP
       2019-01-27 14:02:24 +08:00
    @glaucus 加了验证码识别
    glaucus
        19
    glaucus  
       2019-01-27 14:33:45 +08:00 via iPhone
    @dairoot 不错哦,我之前也做过我们学校的 APP,后面因为验证码没做成适配其他学校的通用框架
    dairoot
        20
    dairoot  
    OP
       2019-01-27 14:44:01 +08:00 via Android
    @glaucus 还在适配中,太多格式不一致了
    sevenQu
        21
    sevenQu  
       2019-01-27 18:03:42 +08:00
    我们学校好像升级了,不是方正了
    Sanko
        22
    Sanko  
       2019-01-27 18:29:39 +08:00 via Android
    去年我也在维护我们学校的查成绩查课表这一块也是 python,不过网络中心不让我们爬,今年换腾讯微校了
    jimages
        23
    jimages  
       2019-01-28 01:51:37 +08:00
    @dairoot 哦...我们这边用的 rabbit....qaq
    zhengjian
        24
    zhengjian  
       2019-01-28 03:47:55 +08:00
    微信公众号课表卡片是模版消息吗?分割线怎么做到的呀
    dairoot
        25
    dairoot  
    OP
       2019-01-28 08:15:27 +08:00 via Android
    @zhengjian 那是图文接口,现在不行了,微信限制了只能主动发一条
    focuxin
        26
    focuxin  
       2019-01-28 18:46:20 +08:00 via Android
    顶一个楼主,不错
    zhouyut001
        27
    zhouyut001  
       2019-01-29 11:17:58 +08:00
    接口 3 个都不行🤔
    ninestep
        28
    ninestep  
       2019-01-29 12:00:49 +08:00
    方正教务系统~~~五个登陆页面,第四个第五个不需要验证码,当年选课的时候写了一个脚本成功帮助宿舍六口子选上了,可惜没保存,没给学弟学妹留点福利,要不学校到现在都流传我的名了
    dairoot
        29
    dairoot  
    OP
       2019-01-29 12:46:09 +08:00 via Android
    @zhouyut001 我今晚处理下
    hackzx
        30
    hackzx  
       2020-01-18 17:06:35 +08:00
    广海的同学如何联系您?
    P2100
        31
    P2100  
       2023-05-30 21:30:42 +08:00
    你好,我想做一个课表小程序,请问接单吗,需要帮忙对接方正教务系统。预算 1000.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 14:36 · PVG 22:36 · LAX 06:36 · JFK 09:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.