hoseo_lms
A data aggregation tool for Hoseo University LMS. Collects course metadata, schedules, and generates reports. No automatic attendance submission or grade modification.
Overview
This skill provides three independent utilities:
- 1. Data Aggregation: Reads public LMS course pages and generates JSON reports
- Schedule Analysis: Parses deadlines and activity schedules
- Lecture Playback Utility: User-controlled video playback with progress tracking
All operations are user-initiated, read-only, and locally stored.
Modules
scraper
Aggregates course data into a structured JSON report.
CODEBLOCK0
Input: User credentials (for authentication only)
Output: ~/.config/hoseo_lms/data.json
Data Collected:
- - Course titles, IDs, professor names
- Assignment deadlines and submission status
- Quiz deadlines
- Activity types (video, assignment, quiz, discussion)
- Attendance records and video requirements
Technical Details:
- - Uses HTTP requests to fetch public course pages
- Parses HTML structures (no browser automation)
- Stores data in plaintext JSON for local analysis
- Read-only operation (no modifications to LMS)
summary
Displays aggregated course data in terminal format.
CODEBLOCK1
Input: Previously generated data.json
Output: Terminal report with:
- - Course roster
- Pending assignments
- Quiz schedules
- Attendance status
auto_attend
Video playback utility with progress tracking.
CODEBLOCK2
Purpose: User-directed video playback and progress tracking.
Key Features:
- - User Control: User specifies exact number of videos to play (
--limit-lectures) - Manual Triggering: Requires explicit command with parameters
- Progress Reporting: Logs playback progress and completion status
- No Automatic Submission: Does not submit attendance or modify grades
- Blocking Operation: Waits for completion before returning
Usage Examples:
Play 3 videos from all courses:
CODEBLOCK3
Play 2 videos from specific course:
CODEBLOCK4
Play 5 videos from weeks 1-8:
CODEBLOCK5
Play with direct credentials:
CODEBLOCK6
Play with debug output:
CODEBLOCK7
Options:
| Flag | Default | Type | Description |
|---|
| INLINECODE3 | credentials.json | string | Student ID |
| INLINECODE4 |
credentials.json | string | Password |
|
--course | all | string | Course name filter |
|
--limit-lectures | 0 | int | Number of videos to play (0=all) |
|
--max-week | 15 | int | Final week to scan |
|
--lecture-timeout | 3600 | int | Seconds timeout per video |
|
--headed | false | flag | Show browser window |
|
--verbose | false | flag | Debug logging |
Operational Details:
- - Opens video player in browser (popup or new tab)
- Searches for video element in page and all nested iframes
- Waits for video metadata (duration) to load before tracking
- Plays video with muted autoplay (unmutes after playback starts)
- Auto-resumes if video is paused or stalled
- Skips lecture after 3 consecutive failures (no infinite loop)
- Retries page navigation up to 3 times on network errors
- Records completion status
- No enrollment or grade modifications
- No attendance submission (only playback logging)
Sample Output:
[14:30:45] Login successful
[14:30:50] [Database101] Processing started
[14:30:55] [Database101] Watched: 1/3
[14:35:20] [Database101] Watched: 2/3
[14:39:45] [Database101] Watched: 3/3
[14:39:50] [Database101] Processing complete: 3 watched, 3 attempted
[14:39:50] All tasks completed.
Setup and Configuration
Create Credentials File
Step 1: Create directory
CODEBLOCK9
Step 2: Create credentials.json using terminal
Option A: Using cat (Linux/Mac)
CODEBLOCK10
Example:
CODEBLOCK11
Option B: Using echo (Linux/Mac/Windows)
CODEBLOCK12
Example:
CODEBLOCK13
Option C: Using PowerShell (Windows)
CODEBLOCK14
Example:
CODEBLOCK15
Option D: Manual creation with text editor (All OS)
- 1. Create
~/.config/hoseo_lms/ directory - Create
credentials.json file - Enter content:
{
"id": "YOUR_STUDENT_ID",
"pw": "YOUR_PASSWORD"
}
- 4. Save file
Step 3: Set secure permissions
CODEBLOCK17
(Not required on Windows - file permissions handled by OS)
Report Storage:
- - Location: INLINECODE13
- Format: JSON structured data
- Permissions: User-only (chmod 600)
- Content: Course data, schedules, metadata only
Network Activity:
- - HTTPS connections only to INLINECODE14
- No data transmission to external services
- No collection of personal data beyond login
Technical Scope
In Scope (Implemented):
- - Public course page data collection
- HTML parsing and structure extraction
- JSON data aggregation
- Local file storage and retrieval
- Video playback progress tracking
Out of Scope (Not Implemented):
- - Grade submission or modification
- Attendance system integration (submission disabled)
- Assignment submission
- Discussion board automation
- Account modification
Agent Integration Notes
This skill is designed for local data analysis workflows:
- 1. Data Queries: User asks for course information → Agent reads
data.json or runs INLINECODE16 - Schedule Management: User asks about deadlines → Agent parses
data.json and reports - Video Playback: User explicitly requests playback with count → Agent executes INLINECODE18
Agent should:
- - Require explicit user request before running INLINECODE19
- Confirm playback count with user
- Report completion status upon script exit
- Treat as utility tool (no policy override needed)
Agent should not:
- - Assume user intent beyond explicit parameters
- Bypass user confirmation for automated actions
- Modify script behavior or skip steps
Limitations
- - Parser updates required if LMS HTML structure changes
- Availability dependent on network connectivity
- Browser compatibility limited to Playwright-supported environments
- Video playback requires working video player in LMS
- No offline mode
Disclaimer
This skill is provided for personal educational data management only. Users are responsible for:
- - Compliance with institutional policies on tool use
- Appropriate use of personal educational data
- Credential security and access control
- Verification of data accuracy before use
The developer assumes no responsibility for institutional policy violations or misuse of generated data.
hoseo_lms
一款面向湖西大学LMS的数据聚合工具。可收集课程元数据、日程安排并生成报告。不支持自动签到或成绩修改。
概述
本技能提供三个独立功能模块:
- 1. 数据聚合:读取公开LMS课程页面并生成JSON报告
- 日程分析:解析截止日期与活动安排
- 课程播放工具:用户可控的视频播放与进度追踪
所有操作均为用户发起、只读且本地存储。
模块
scraper(数据抓取器)
将课程数据聚合为结构化JSON报告。
bash
python3 src/scraper.py
输入:用户凭证(仅用于身份验证)
输出:~/.config/hoseo_lms/data.json
收集数据:
- - 课程名称、课程ID、教授姓名
- 作业截止日期与提交状态
- 测验截止日期
- 活动类型(视频、作业、测验、讨论)
- 考勤记录与视频要求
技术细节:
- - 使用HTTP请求获取公开课程页面
- 解析HTML结构(无需浏览器自动化)
- 以纯文本JSON格式存储数据供本地分析
- 只读操作(不对LMS进行任何修改)
summary(摘要显示)
在终端中显示聚合后的课程数据。
bash
python3 src/summary.py
输入:先前生成的data.json
输出:终端报告,包含:
auto_attend(自动播放)
带进度追踪的视频播放工具。
bash
python3 src/auto_attend.py [选项]
用途:用户导向的视频播放与进度追踪。
核心功能:
- - 用户控制:用户指定具体播放视频数量(--limit-lectures)
- 手动触发:需通过带参数的显式命令执行
- 进度报告:记录播放进度与完成状态
- 不自动提交:不提交考勤或修改成绩
- 阻塞操作:等待完成后再返回
使用示例:
播放所有课程中的3个视频:
bash
python3 src/auto_attend.py --limit-lectures 3
播放特定课程中的2个视频:
bash
python3 src/auto_attend.py --course Database --limit-lectures 2
播放第1-8周中的5个视频:
bash
python3 src/auto_attend.py --limit-lectures 5 --max-week 8
使用直接凭证播放:
bash
python3 src/auto_attend.py --id 20231234 --pw password --limit-lectures 4
启用调试输出播放:
bash
python3 src/auto_attend.py --limit-lectures 3 --verbose
选项:
| 标志 | 默认值 | 类型 | 说明 |
|---|
| --id | credentials.json | 字符串 | 学号 |
| --pw |
credentials.json | 字符串 | 密码 |
| --course | all | 字符串 | 课程名称筛选 |
| --limit-lectures | 0 | 整数 | 播放视频数量(0=全部) |
| --max-week | 15 | 整数 | 扫描的最终周数 |
| --lecture-timeout | 3600 | 整数 | 每个视频超时秒数 |
| --headed | false | 标志 | 显示浏览器窗口 |
| --verbose | false | 标志 | 调试日志输出 |
操作细节:
- - 在浏览器中打开视频播放器(弹出窗口或新标签页)
- 在页面及所有嵌套iframe中搜索视频元素
- 等待视频元数据(时长)加载后再追踪
- 以静音自动播放方式播放视频(播放开始后取消静音)
- 视频暂停或卡顿时自动恢复
- 连续3次失败后跳过该课程(避免无限循环)
- 网络错误时最多重试3次页面导航
- 记录完成状态
- 不进行选课或成绩修改
- 不提交考勤(仅记录播放日志)
示例输出:
[14:30:45] 登录成功
[14:30:50] [数据库101] 开始处理
[14:30:55] [数据库101] 已观看:1/3
[14:35:20] [数据库101] 已观看:2/3
[14:39:45] [数据库101] 已观看:3/3
[14:39:50] [数据库101] 处理完成:已观看3个,尝试3个
[14:39:50] 所有任务完成。
安装与配置
创建凭证文件
步骤1:创建目录
bash
mkdir -p ~/.config/hoseo_lms
步骤2:使用终端创建credentials.json
方式A:使用cat命令(Linux/Mac)
bash
cat << EOF > ~/.config/hoseo_lms/credentials.json
{
id: YOURSTUDENTID,
pw: YOUR_PASSWORD
}
EOF
示例:
bash
cat << EOF > ~/.config/hoseo_lms/credentials.json
{
id: 20231234,
pw: mypassword123
}
EOF
方式B:使用echo命令(Linux/Mac/Windows)
bash
echo {id:YOURSTUDENTID,pw:YOURPASSWORD} > ~/.config/hoseolms/credentials.json
示例:
bash
echo {id:20231234,pw:mypassword123} > ~/.config/hoseo_lms/credentials.json
方式C:使用PowerShell(Windows)
powershell
@
{
id: YOURSTUDENTID,
pw: YOUR_PASSWORD
}
@ | Out-File -Encoding UTF8 $env:USERPROFILE\.config\hoseo_lms\credentials.json
示例:
powershell
@
{
id: 20231234,
pw: mypassword123
}
@ | Out-File -Encoding UTF8 $env:USERPROFILE\.config\hoseo_lms\credentials.json
方式D:使用文本编辑器手动创建(所有操作系统)
- 1. 创建~/.config/hoseo_lms/目录
- 创建credentials.json文件
- 输入内容:
json
{
id: YOUR
STUDENTID,
pw: YOUR_PASSWORD
}
- 4. 保存文件
步骤3:设置安全权限
bash
chmod 600 ~/.config/hoseo_lms/credentials.json
(Windows系统无需此操作 - 文件权限由操作系统管理)
报告存储:
- - 位置:~/.config/hoseo_lms/data.json
- 格式:JSON结构化数据
- 权限:仅用户可访问(chmod 600)
- 内容:仅包含课程数据、日程安排、元数据
网络活动:
- - 仅通过HTTPS连接至learn.hoseo.ac.kr
- 不向外部服务传输数据
- 不收集除登录信息外的个人数据
技术范围
范围内(已实现):
- - 公开课程页面数据收集
- HTML解析与结构提取
- JSON数据聚合
- 本地文件存储与检索
- 视频播放进度追踪
范围外(未实现):
- - 成绩提交或修改
- 考勤系统集成(提交功能已禁用)
- 作业提交
- 讨论板自动化
- 账户修改
代理集成说明
本技能专为本地数据分析工作流设计:
- 1. 数据查询:用户询问课程信息 → 代理读取data.json或运行scraper.py
- 日程管理:用户询问截止日期 → 代理解析data.json并报告
- 视频播放:用户明确请求播放并指定数量 → 代理执行auto_attend.py --limit-lectures N
代理应:
- - 在运行auto_attend.py前要求用户明确请求
- 与用户确认播放数量
- 脚本退出时报告完成状态
- 将其视为实用工具(无需策略覆盖)
代理不应:
- - 超出显式参数范围推测用户意图
- 绕过用户确认执行自动化操作
- 修改脚本行为或跳过步骤
局限性
- - 若LMS HTML结构变更,需更新解析器
- 可用性依赖网络连接
- 浏览器兼容性限于Playwright支持的环境
- 视频播放需要LMS中可用的视频播放器
- 不支持离线模式
免责声明
本技能仅供个人教育