{"id":19806184,"url":"https://github.com/farmerchillax/new-school-sdk","last_synced_at":"2026-06-10T20:22:54.596Z","repository":{"id":43108812,"uuid":"402390159","full_name":"FarmerChillax/new-school-sdk","owner":"FarmerChillax","description":" 👋 校园教务系统爬虫接口，新版正方教务系统 SDK for Python（新正方教务系统API），支持多种登录方式，自动识别验证码（包含两种验证码的处理）","archived":false,"fork":false,"pushed_at":"2025-02-24T02:25:00.000Z","size":37884,"stargazers_count":69,"open_issues_count":8,"forks_count":13,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T12:09:28.052Z","etag":null,"topics":["new-school-sdk","new-zhengfang","python","school-sdk","zf","zfxfzb","zhengfang","zhengfangjiaowu"],"latest_commit_sha":null,"homepage":"https://farmerChillax.github.io/new-school-sdk/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FarmerChillax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-02T11:08:58.000Z","updated_at":"2025-03-31T02:37:55.000Z","dependencies_parsed_at":"2023-01-29T17:00:29.738Z","dependency_job_id":"a87a666e-21f9-4de9-bb97-69551941abf0","html_url":"https://github.com/FarmerChillax/new-school-sdk","commit_stats":{"total_commits":92,"total_committers":4,"mean_commits":23.0,"dds":"0.23913043478260865","last_synced_commit":"e057977011cbee113a95362cd4e59c33a1301497"},"previous_names":["farmer-chong/new-school-sdk"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarmerChillax%2Fnew-school-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarmerChillax%2Fnew-school-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarmerChillax%2Fnew-school-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarmerChillax%2Fnew-school-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FarmerChillax","download_url":"https://codeload.github.com/FarmerChillax/new-school-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248045231,"owners_count":21038553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["new-school-sdk","new-zhengfang","python","school-sdk","zf","zfxfzb","zhengfang","zhengfangjiaowu"],"created_at":"2024-11-12T09:06:38.468Z","updated_at":"2026-06-10T20:22:54.590Z","avatar_url":"https://github.com/FarmerChillax.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"新版正方系统 Python SDK。(支持自动识别、处理滑块验证码与常规验证码，如果觉得还不错,给个小星星趴~⭐)\n\n\u003e 这是全网唯一一个自动处理验证码的新版教务系统 SDK :p\n\u003e\n\u003e 并且本项目有完善的 type hints\n\n\u003c!-- [![Build Status](https://travis-ci.org/dairoot/school-api.svg?branch=master)](https://travis-ci.org/dairoot/school-api)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/dairoot/school-api/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/dairoot/school-api/?branch=master)\n[![codecov](https://codecov.io/gh/dairoot/school-api/branch/master/graph/badge.svg)](https://codecov.io/gh/dairoot/school-api)\n[![pypi](https://img.shields.io/pypi/v/school-api.svg)](https://pypi.org/project/school-api/)\n[![Downloads](https://pepy.tech/badge/school-sdk)](https://pepy.tech/project/school-api) --\u003e\n\n\n\u003c!-- \u003cp align = \"center\"\u003e --\u003e\n  [![Downloads](https://pepy.tech/badge/school-sdk)](https://pepy.tech/project/school-sdk)\n    \u003ca href = \"https://www.python.org\"\u003e\n        \u003cimg alt = \"python3\" src = \"https://img.shields.io/badge/language-python3-brightgreen\" /\u003e\n    \u003c/a\u003e\n    \u003ca href = \"LICENSE\"\u003e\n        \u003cimg alt = \"license\" src = \"https://img.shields.io/badge/license-MIT-blue.svg\" /\u003e\n    \u003c/a\u003e\n    \u003ca href = \"https://github.com/FarmerChillax/new-school-sdk/stargazers/\"\u003e\n        \u003cimg alt = \"stars\" src = \"https://badgen.net/github/stars/FarmerChillax/new-school-sdk/\" /\u003e\n    \u003c/a\u003e\n    \u003ca href = \"https://github.com/FarmerChillax/new-school-sdk/network/members/\"\u003e\n        \u003cimg alt = \"forks\" src = \"https://badgen.net/github/forks/FarmerChillax/new-school-sdk/\" /\u003e\n    \u003c/a\u003e\n    [![PyPI Version](http://img.shields.io/pypi/v/school-sdk.svg)](https://pypi.python.org/pypi/school-sdk)\n\n\u003c!-- \u003c/p\u003e --\u003e\n\n\u003e 📢📢📢 本项目理论上支持教务系统所有功能，兼容所有学校  \n\u003e 使用过程中如有遇到本 SDK 暂不支持的功能，请使用 [proxy_request](./examples/proxy_request_examples.py)\n\n\n[在线文档](https://farmerChillax.github.io/new-school-sdk/)\n\n[Roadmap](https://github.com/FarmerChillax/new-school-sdk/milestone/1)\n\n## 支持的登录/验证码方式\n- 帐号密码登录\n- 滑块验证码登录\n- 图形验证码登录\n- cookie 登录（用于扫码登录、OIDC 等场景）\n\n\n## 测试环境\n- 3.8 \u003c= Python \u003c= 3.13\n- 默认验证码识别方式（推理）: CPU\n\n## Usage\n```Shell\n# （推荐）\n$ uv add school-sdk\n# or\n$ pip install school-sdk\n# or\n$ pip install zf-school-sdk\n```\n\n\u003e 如果机器内存不足，可以使用 pip `--no-cache-dir` 选项来安装\n\u003e e.g. `pip --no-cache-dir install school-sdk`\n\u003e \n\u003e 或者指定构建路径，e.g. `pip install -b ~/pip_build_dir school-sdk`\n\n```Python\nfrom school_sdk import SchoolClient\nfrom school_sdk.client import UserClient\n\n# 先实例化一个学校，再实例化用户\nschool = SchoolClient(\"172.16.254.1\")\nuser:UserClient = school.user_login(\"2018xxxxx\", \"xxxxxxxx\")\n\n# 获取 2020 学年第二学期的课程\ncourse = user.get_schedule(year=2020, term=2)\nprint(course)\n```\n\n使用示例参见 [examples](examples/)\n\n## 使用 uv（推荐用于本地开发）\n\n```Shell\n# 1) 同步依赖并创建虚拟环境\n$ uv sync\n\n# 2) 进入虚拟环境（可选）\n$ source .venv/bin/activate\n\n# 3) 运行示例\n$ uv run examples/base_sample.py\n```\n\n\u003e 如果只需要运行时依赖，可使用：`uv sync --no-dev`\n\n## Api Function\n\n| Api           | Description                 | Argument          |\n| :------------ | :-------------------------- | :---------------- |\n| user_login    | 登陆函数                    | account, password |\n| get_schedule  | 课表查询                    | year, term        |\n| get_score     | 成绩查询                    | year, term        |\n| get_info      | 获取个人信息                | None              |\n| refresh_info  | 刷新个人信息                | None              |\n| check_session | 检查session并其失效后重登录 | None              |\n| proxy_request | 补充 sdk 未实现的业务功能，以支持各种登录后的教务系统操作 | method, url_or_endpoint, **kwargs  |\n\n\n## School-SDK Options\n\n| Option        | Default      | Description              |\n| :------------ | :----------- | :----------------------- |\n| host          | 不存在默认值 | 教务系统地址(`必填`)     |\n| port          | 80           | 端口号                   |\n| ssl           | False        | 教务系统是否使用https    |\n| name          | None         | 学校名称                 |\n| exist_verify  | False        | 是否存在验证码           |\n| captcha_type  | captcha      | 验证码类型，枚举类型(kaptcha: 常规 或 captcha: 滑块) |\n| retry         | 10           | 登录重试次数             |\n| lan_host      | None         | 内网地址（暂不可用）                 |\n| lan_port      | 80           | 内网地址端口（暂不可用）             |\n| timeout       | 10           | 全局请求延时             |\n| url_endpoints | None         | 地址配置                 |\n\n## 相关项目\n\u003e 帮教务系统做负载均衡：https://github.com/FarmerChillax/school-load-balance\n\u003e \n\u003e (如果你们学校教务系统抢课经常崩溃，可以考虑看看这个 repo)\n\n\n- 新版正方教务系统: https://github.com/FarmerChillax/new-school-sdk\n- 旧版正方教务系统: https://github.com/dairoot/school-api\n- SDK的Flask扩展: https://github.com/FarmerChillax/flask-school\n- 验证码识别: https://github.com/FarmerChillax/new-zfxfzb-code\n\n\u003c!-- | \u003c!--            | url_path_list | `略`                    | 学校接口地址列表 |\n| class_time_list | `略`          | 上课时间列表            |\n| timeout         | 10            | 全局请求延时            |\n| session         | MemoryStorage | 缓存工具(推荐使用redis) |              | --\u003e \n\n\n## Thanks to all of our contributors! 🎉\n\n\u003ca href=\"https://github.com/FarmerChillax/new-school-sdk/graphs/contributors\"\u003e\n  \u003cimg alt=\"Repo contributors\" src=\"https://contrib.rocks/image?repo=FarmerChillax/new-school-sdk\" /\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffarmerchillax%2Fnew-school-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffarmerchillax%2Fnew-school-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffarmerchillax%2Fnew-school-sdk/lists"}