Skip to content

KimHands/classfileauto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eclass 강의 자료 자동 다운로더

SCH Eclass에 새 강의 자료가 올라오면 자동으로 감지·다운로드하고 Discord로 알림을 보내는 백그라운드 CLI 툴

Python Requests Schedule Discord

항목 내용
대상 eclass.sch.ac.kr (LearningX 기반)
형태 CLI (스케줄러 / 즉시 실행)
본인 담당 단독 개발 (인증 · 크롤러 · 다운로더 · Discord 알림)
관련 저장소 웹 버전: ClassFileAuto_Web

동작 흐름

flowchart LR
    Cron[30분 주기 스케줄러] --> Login
    Login[SSO 로그인<br/>세션 유지] --> List
    List[수강 강의 + 파일 목록] --> Diff
    Diff{이력 비교<br/>신규 파일?}
    Diff -->|있음| Down[다운로드]
    Diff -->|없음| Skip[스킵]
    Down --> Save[downloads/학기/강의/]
    Down --> Hook[Discord 알림]
    Save --> History[(이력 JSON)]
Loading

기능

  • 로그인 및 세션 자동 유지 (만료 시 재로그인)
  • 수강 중인 전체 강의의 첨부파일 자동 감지
  • 신규 파일만 선별 다운로드 (중복 스킵)
  • Discord Webhook 알림 (성공/실패)
  • 30분 주기 자동 실행 (설정 변경 가능)

설치

pip install -r requirements.txt

환경 설정

.env.example을 복사하여 .env로 만든 후 실제 값을 입력하세요.

cp .env.example .env

.env 파일 설정:

ECLASS_ID=학번
ECLASS_PW=비밀번호
ECLASS_BASE_URL=https://eclass.sch.ac.kr
DOWNLOAD_BASE_DIR=./downloads
CHECK_INTERVAL_MINUTES=30
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
LOG_LEVEL=INFO
DOWNLOAD_VIDEO=false

Discord Webhook 생성 방법

  1. Discord 서버에서 알림 받을 채널로 이동
  2. 채널 설정 → 연동 → 웹후크 → 새 웹후크
  3. 이름 입력 후 "웹후크 URL 복사"
  4. .envDISCORD_WEBHOOK_URL에 붙여넣기

Discord Webhook이 없어도 다운로드는 정상 동작합니다.

실행 방법

스케줄러 모드 (백그라운드 주기 실행):

python main.py

즉시 1회 실행:

python main.py --run-now

폴더 구조

eclass-downloader/
├── main.py               # 엔트리포인트
├── eclass/
│   ├── auth.py           # 로그인/세션 관리
│   ├── crawler.py        # 강의 목록 및 파일 크롤링
│   └── downloader.py     # 파일 다운로드
├── notifier/
│   └── discord.py        # Discord 알림
├── utils/
│   ├── history.py        # 다운로드 이력 관리
│   └── sanitize.py       # 파일명 정규화
├── data/                 # 다운로드 이력 JSON (자동 생성)
├── logs/                 # 에러 로그 (자동 생성)
├── downloads/            # 저장 폴더 (자동 생성)
├── .env                  # 환경변수 (Git 제외)
├── .env.example          # 환경변수 템플릿
└── requirements.txt

다운로드 파일은 downloads/{학기}/{강의명}/{파일명} 구조로 저장됩니다.

주의사항

  • 교내망 환경 필요: 학교 외부에서는 VPN 또는 교내 Wi-Fi 사용 권장
  • 서버 부하 주의: 요청 사이 1~3초 랜덤 딜레이가 자동 적용됩니다. 최소 실행 주기는 15분 이상 권장
  • Eclass HTML 구조: 크롤링 코드의 CSS 셀렉터는 실제 Eclass 구조 분석 후 수정이 필요합니다 (# TODO 주석 참고)
  • .env 파일은 절대 Git에 커밋하지 마세요

About

SCH Eclass 신규 강의 자료 자동 감지·다운로드·Discord 알림 CLI 툴

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages