hoseo-lms
--- name: hoseo_lms description: LMS data aggregation and reporting tool for course information management. homepage: https://learn.hoseo.ac.kr metadata: { "openclaw": { "r
Description
name: hoseo_lms description: LMS data aggregation and reporting tool for course information management. homepage: https://learn.hoseo.ac.kr metadata: { "openclaw": { "requires": { "bins": ["python3"] } } }
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:
- 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.
python3 src/scraper.py
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.
python3 src/summary.py
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.
python3 src/auto_attend.py [options]
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:
python3 src/auto_attend.py --limit-lectures 3
Play 2 videos from specific course:
python3 src/auto_attend.py --course Database --limit-lectures 2
Play 5 videos from weeks 1-8:
python3 src/auto_attend.py --limit-lectures 5 --max-week 8
Play with direct credentials:
python3 src/auto_attend.py --id 20231234 --pw password --limit-lectures 4
Play with debug output:
python3 src/auto_attend.py --limit-lectures 3 --verbose
Options:
| Flag | Default | Type | Description |
|---|---|---|---|
--id |
credentials.json | string | Student ID |
--pw |
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
mkdir -p ~/.config/hoseo_lms
Step 2: Create credentials.json using terminal
Option A: Using cat (Linux/Mac)
cat << 'EOF' > ~/.config/hoseo_lms/credentials.json
{
"id": "YOUR_STUDENT_ID",
"pw": "YOUR_PASSWORD"
}
EOF
Example:
cat << 'EOF' > ~/.config/hoseo_lms/credentials.json
{
"id": "20231234",
"pw": "mypassword123"
}
EOF
Option B: Using echo (Linux/Mac/Windows)
echo '{"id":"YOUR_STUDENT_ID","pw":"YOUR_PASSWORD"}' > ~/.config/hoseo_lms/credentials.json
Example:
echo '{"id":"20231234","pw":"mypassword123"}' > ~/.config/hoseo_lms/credentials.json
Option C: Using PowerShell (Windows)
@"
{
"id": "YOUR_STUDENT_ID",
"pw": "YOUR_PASSWORD"
}
"@ | Out-File -Encoding UTF8 "$env:USERPROFILE\.config\hoseo_lms\credentials.json"
Example:
@"
{
"id": "20231234",
"pw": "mypassword123"
}
"@ | Out-File -Encoding UTF8 "$env:USERPROFILE\.config\hoseo_lms\credentials.json"
Option D: Manual creation with text editor (All OS)
- Create
~/.config/hoseo_lms/directory - Create
credentials.jsonfile - Enter content:
{
"id": "YOUR_STUDENT_ID",
"pw": "YOUR_PASSWORD"
}
- Save file
Step 3: Set secure permissions
chmod 600 ~/.config/hoseo_lms/credentials.json
(Not required on Windows - file permissions handled by OS)
Report Storage:
- Location:
~/.config/hoseo_lms/data.json - Format: JSON structured data
- Permissions: User-only (chmod 600)
- Content: Course data, schedules, metadata only
Network Activity:
- HTTPS connections only to
learn.hoseo.ac.kr - 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:
- Data Queries: User asks for course information → Agent reads
data.jsonor runsscraper.py - Schedule Management: User asks about deadlines → Agent parses
data.jsonand reports - Video Playback: User explicitly requests playback with count → Agent executes
auto_attend.py --limit-lectures N
Agent should:
- Require explicit user request before running
auto_attend.py - 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.
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!