Loading
宝鸡文理学院教务系统自动课表推送脚本

宝鸡文理学院教务系统自动课表推送脚本

Leisure
6月18日发布 /正在检测是否收录...

AI摘要

这是一个用于宝鸡文理学院教务系统自动课表推送的脚本,它能够自动抓取课表,结合天气和每日情话,通过PushPlus和Bark推送到微信/iOS,实现自动化提醒。项目包括模拟登录、获取课表数据、解析课程表JS、当日筛选与排序、天气与情话API调用以及多平台推送等功能。用户可以根据自己的需求进行部署和配置。

📚 宝鸡文理学院教务系统自动课表推送脚本

本项目用于每日从教务系统自动抓取课表,结合天气与每日情话,通过 PushPlus 和 Bark 推送到微信/iOS,实现完全自动化提醒。


📦 代码演示

# 节选:获取今日课表并推送
week = get_current_week(SEMESTER_START)
today_courses = get_today_courses(course_map)
today_str = datetime.now().strftime('%Y-%m-%d %A')
weather_info = get_weather_tianapi()
quote = get_love_words()
send_time = datetime.now().strftime('%H:%M:%S')

msg = f"{weather_info}\n\n📅 **{today_str}**\n\n🧭 **第 {week} 周 · 今日课程:**\n\n"
if today_courses:
    msg += "| 课程名 | 上课地点 | 时间 |\n"
    msg += "|--------|----------|------|\n"
    pattern = r'(.+?)\(\d{6,}(?:\.\w+)?\)[((](.+?)[))](.+?) 🕒 (.+)'
    for line in today_courses:
        match = re.search(pattern, line)
        if match:
            name, teacher, place, time = match.groups()
            msg += f"| {name.strip()} | {place.strip()} | 🕒 {time.strip()} |\n"
        else:
            msg += f"| {line.strip()} | - | - |\n"
else:
    msg += "🎉 今天没有课或登录失败"

msg += f"\n\n🍵 **每日一言**:_{quote}_\n\n🕓 **推送时间**:{send_time}\n\n**Leisure💗李彤彤**"

🎉 效果展示

IMG_0036.jpeg


💡 创作想法

由于女朋友每天上课时间不固定,容易忘记课程安排,因此希望实现一种自动提醒方式,结合以下目标:

  • 自动登录教务系统
  • 提取本周课表,并根据当前日期定位当天课程
  • 加入天气预报与每日情话,让推送更具温度
  • 利用 PushPlus 与 Bark 实现多终端推送

🧠 实现思路

  1. 模拟登录

    • 解析登录页获取 salt
    • 使用 hashlib.sha1 进行密码加盐加密
  2. 获取课表数据

    • 获取 semester.id 与学生 ids
    • 使用 courseTableForStd!courseTable.action 接口提交 POST 请求,获取课程 JS
  3. 解析课程表 JS

    • 通过正则匹配 TaskActivity(...) 构造函数提取课程信息
    • 解析出课程名、教师、教室、节次等
  4. 当日筛选与排序

    • 根据 datetime.now().weekday() 匹配当天课程
    • 按上课时间进行排序,构建 Markdown 表格
  5. 天气与情话 API

    • 调用天行数据天气 API
    • 随机调用多个情话 API 接口
  6. 多平台推送

    • PushPlus:支持个人和群组
    • Bark:iOS 原生推送

🚀 部署教程

✅ 环境要求

  • Python >= 3.10
  • 安装依赖:requests, beautifulsoup4

🧩 环境变量

NameValue
USERNAME你的学号
PASSWORD教务系统密码
PUSHPLUS_TOKENPushPlus Token
BARK_URLBark 推送地址
TIANAPI_KEY天行天气 API Key

📦 青龙面板部署

青龙面板搭建教程 点我跳转

1. 将脚本文件上传到青龙面板

脚本下载地址 点我跳转

2. 安装所需依赖

IMG_0035.jpeg

3. 在青龙环境变量中添加所需变量

添加以下变量:

Secret 名称说明
PUSHPLUS_TOKENPushPlus 的 token
BARK_URLBark 推送服务地址(可选)
USERNAME教务系统账号(必填)
PASSWORD教务系统密码(必填)
TIANAPI_KEY天行api(可选)

如果你只使用 PushPlus,只需设置 PUSHPLUS_TOKEN
IMG_0033.jpeg

4.创建定时任务

IMG_0034.jpeg

  • 脚本将于 每天早上 7:00(北京时间) 自动执行
  • 可通过修改 cron 表达式自定义时间

🧬 GitHub Action 部署

✅ 1. Fork 本项目

点击进入该项目库
image.png
点击右上角 Fork 按钮,将项目复制到自己的 GitHub 仓库。

🔐 2. 配置 Secrets

进入你的仓库:

Settings → Secrets → Actions → New repository secret

添加以下变量:

Secret 名称说明
PUSHPLUS_TOKENPushPlus 的 token
BARK_URLBark 推送服务地址(可选)
USERNAME教务系统账号(必填)
PASSWORD教务系统密码(必填)
TIANAPI_KEY天行api(可选)

如果你只使用 PushPlus,只需设置 PUSHPLUS_TOKEN


⚙️ 3. 启用 GitHub Actions

Fork 后默认不会自动执行,需要手动启用:

进入仓库主页 → 点击 Actions → 点击 I understand... Enable workflows


📆 4. 自动运行逻辑

  • 脚本将于 每天早上 7:00(北京时间) 自动执行
  • 可在 push.yml 中修改 cron 表达式自定义时间

📄 配置项说明

  • ENABLE_PUSHPLUS = True # 控制是否启用 PushPlus 推送
  • ENABLE_BARK = True # 控制是否启用 Bark 推送
  • 第358行的Leisure💗Tiffany可自行修改为自己的内容

✍️ 后记

实现这个脚本,解决了每天手动查看课程的烦恼。结合天气和情话,也让每天的提醒多了点温暖。

未来考虑增加:

  • 节假日与调休识别
  • 自定义课表备注支持

📄 开源声明

本项目已在Github开源 项目地址

本文代码部分采用 MIT License 开源,欢迎自由使用、改进并署名引用。

文章内容(含图文说明、教程思路等)采用 CC BY-NC-SA 4.0 授权,转载请注明出处,非商业使用,保持一致协议。

转载请注明:Leisure's Blog

欢迎大家一起使用 & 改进这个项目!

💗 如果你喜欢这个项目,请点个赞或者 Star 🌟 吧~
© 版权声明
THE END
喜欢就支持一下吧
点赞 1 分享 收藏
评论 抢沙发
OωO
取消