SkillHub

hoseo-lms

v1.0.2

LMS data aggregation and reporting tool for course information management.

Sourced from ClawHub, Authored by Seongmin Hong

Installation

Please help me install the skill `hoseo-lms` from SkillHub official store. npx skills add Acogkr/hoseo-lms

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
  2. Schedule Analysis: Parses deadlines and activity schedules
  3. 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.confighoseo_lmscredentials.json"

Example:

@"
{
  "id": "20231234",
  "pw": "mypassword123"
}
"@ | Out-File -Encoding UTF8 "$env:USERPROFILE.confighoseo_lmscredentials.json"

Option D: Manual creation with text editor (All OS)

  1. Create ~/.config/hoseo_lms/ directory
  2. Create credentials.json file
  3. Enter content:
{
  "id": "YOUR_STUDENT_ID",
  "pw": "YOUR_PASSWORD"
}
  1. 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:

  1. Data Queries: User asks for course information → Agent reads data.json or runs scraper.py
  2. Schedule Management: User asks about deadlines → Agent parses data.json and reports
  3. 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.