# traekk **Repository Path**: tomdac/traekk ## Basic Information - **Project Name**: traekk - **Description**: traekk - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-22 - **Last Updated**: 2025-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 逃课信息管理系统(Java 版)与长江雨课堂接入 ## 概述 - 在 Windows 环境下实现一个基于文件 I/O 的命令行应用,用于管理“逃课信息”。 - 数据持久化采用 CSV(标准库读写),支持导出 JSON,提供菜单式交互。 - 集成“长江·雨课堂”接入能力:配置学校域名与浏览器 Cookie,获取课程列表并保存到本地。 - 保留 Python 版本不删除,Java 与 Python 可并行使用。 ## 文件结构 - Java 主程序:`d:\Projects\mathmodeling\Hackerson.java` - Python 保留版:`d:\Projects\mathmodeling\hackerson` - 数据文件(运行生成或导出): - `skip_records.csv`(主数据) - `skip_records.json`(导出) - `ykt_courses.json`(雨课堂课程列表导出) ## 环境要求 - 安装 JDK(推荐 17+): - 微软 OpenJDK 17: - `winget install -e --id Microsoft.OpenJDK.17 --accept-package-agreements --accept-source-agreements` - 或 Oracle JDK 21: - `winget install -e --id Oracle.JDK.21 --accept-package-agreements --accept-source-agreements` - 验证: - `javac -version` - `java -version` 如 `javac` 仍不可用,请确认 `JAVA_HOME\bin` 已加入 `PATH`,或在新终端执行: - `setx JAVA_HOME "C:\\Program Files\\Java\\jdk-xx"` - `setx PATH "%JAVA_HOME%\\bin;%PATH%"` ## 编译与运行 - Java: - `cd d:\Projects\mathmodeling` - `javac Hackerson.java` - `java Hackerson` - Python(保留版): - `python d:\Projects\mathmodeling\hackerson` ## 数据模型与存储 - 字段:`id, student_id, student_name, course, date, reason, duration_hours` - 定义:`d:\Projects\mathmodeling\Hackerson.java:37` - CSV 文件路径:`skip_records.csv` - 定义:`d:\Projects\mathmodeling\Hackerson.java:36` - CSV 读写与转义: - 写出:`d:\Projects\mathmodeling\Hackerson.java:65` - 转义:`d:\Projects\mathmodeling\Hackerson.java:334` - 解析:`d:\Projects\mathmodeling\Hackerson.java:341` ## 功能列表(Java CLI) - 主菜单入口:`d:\Projects\mathmodeling\Hackerson.java:362` - 增删改查: - 添加:`d:\Projects\mathmodeling\Hackerson.java:117` - 删除:`d:\Projects\mathmodeling\Hackerson.java:138` - 修改:`d:\Projects\mathmodeling\Hackerson.java:150` - 查询:`d:\Projects\mathmodeling\Hackerson.java:184` - 按学号、姓名、课程 - 日期范围查询(支持 `yyyy-MM-dd`、`yyyy/MM/dd`、`yyyy.MM.dd`) - 关键词模糊查询(聚合任意字段) - 统计与排序: - 统计(学生/课程次数):`d:\Projects\mathmodeling\Hackerson.java:250` - 排序浏览(日期/学生/课程):`d:\Projects\mathmodeling\Hackerson.java:280` - 导出与加载: - 导出 JSON:`d:\Projects\mathmodeling\Hackerson.java:301` - 重新加载 CSV:`d:\Projects\mathmodeling\Hackerson.java:326` ## 长江雨课堂接入 - 菜单项“10. 雨课堂接入”:入口与跳转 `d:\Projects\mathmodeling\Hackerson.java:377,389` - 菜单逻辑:`d:\Projects\mathmodeling\Hackerson.java:394` - 域名与 Cookie: - 默认域名:`changjiang.yuketang.cn`(变量:`d:\Projects\mathmodeling\Hackerson.java:38`) - Cookie 粘贴输入(变量:`d:\Projects\mathmodeling\Hackerson.java:39`) - 获取课程列表(带 Cookie): - URL:`https://{domain}/v2/api/web/courses/list?identity=2` - 实现:`d:\Projects\mathmodeling\Hackerson.java:437` - 保存课程列表:`ykt_courses.json`(菜单项“保存课程列表到文件”) ### Cookie 获取指南 1. 打开并登录:`https://changjiang.yuketang.cn/v2/web/index` 2. 浏览器开发者工具(F12)→ Application → Cookies → 复制整条 Cookie(或至少包含 `sessionid`、`csrftoken`),在程序“设置 Cookie”中粘贴。 ### 参考接口与来源 - 登录与课程列表(总平台域名,学校域名可替换为 `changjiang.yuketang.cn`): - WebSocket 二维码登录:`wss://www.yuketang.cn/wsapp/` 来源:https://www.cnblogs.com/xuanyu-10-18/p/13797159.html - 获取 CSRF:`https://www.yuketang.cn/v/course_meta/user_info`(GET) 来源同上 - 执行登录:`https://www.yuketang.cn/pc/web_login`(POST,携带 `UserID`、`Auth`) 来源同上 - 课程列表:`https://www.yuketang.cn/v2/api/web/courses/list?identity=2`(GET) 来源同上 - 学校登录页参考(长江雨课堂):`https://changjiang.yuketang.cn/v2/web/index` - 课堂详情与媒体(示例): - `mooc-api/v1/lms/learn/classroom_info`(课堂详情,部分参数可能需签名) 来源:https://blog.csdn.net/henuyl/article/details/111461396 - `mooc-api/v1/lms/service/subtitle_parse`(字幕解析) 来源同上 ## 使用示例 1. 启动 Java 程序:`java Hackerson` 2. 菜单选择: - `1` 添加记录 → 输入学号、姓名、课程、日期、原因、时长 - `4` 查询 → 选择维度(学号/姓名/课程/日期范围/关键词) - `5` 统计 → 选择统计维度(学生/课程) - `7` 导出 JSON → 生成 `skip_records.json` - `10` 雨课堂接入 → 设置域名与 Cookie → 获取/保存课程列表 ## 安全与合规 - 程序不主动持久化或打印敏感凭据;Cookie 仅用于合法读取教学数据。 - 接口使用需遵循平台与学校政策及法律法规,严禁用于违规用途。 ## 常见问题 - `javac` 未识别:确认 JDK 已安装且 `JAVA_HOME\bin` 已加入 `PATH`,重开终端后重试。 - 雨课堂接口返回失败:确认 Cookie 有效(登录态),域名填写正确(如 `changjiang.yuketang.cn`),必要时重新登录后复制。 ## 许可证 - 本项目代码以学习交流为目的,引用的第三方平台接口与文档以原平台协议为准。