| Crates.io | rusaint-cli |
| lib.rs | rusaint-cli |
| version | 0.12.0 |
| created_at | 2025-01-26 19:03:53.332003+00 |
| updated_at | 2025-09-12 08:42:57.703287+00 |
| description | CLI for fetching course schedules |
| homepage | |
| repository | https://github.com/2wndrhs/rusaint |
| max_upload_size | |
| id | 1531640 |
| size | 107,690 |
rusaint-cli는 cli 환경에서 rusaint를 사용하여 강의 정보를 가져와 json 파일로 만들어주는 Rust 바이너리입니다.
rusaint-cli 설치를 위해 먼저 Rust 설치가 선행되어야 합니다.
아래 명령어를 터미널에 입력하여 rustup(러스트 버전 관리 툴)을 설치해줍니다.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup의 설치가 완료되었다면 아래 명령어를 터미널에 입력해 rusaint-cli 바이너리를 설치해줍니다.
cargo install rusaint-cli
유세인트에서 강의 정보를 가져오기 위해 유세인트 아이디(학번)와 비밀번호를 환경 변수로 설정해야 합니다.
rusaint-cli를 실행할 위치에 아래와 같은 형식의 .env 파일을 만들어줍니다.
SSO_ID={학번} // 20203123
SSO_PASSWORD={비밀번호} // 1q2w1q2w!
rusaint-cli 는 유세인트 강의시간표 분류에 대응하는 다양한 command가 존재합니다.
편의를 위해 자주 사용하는 옵션들에 대해 짧은 형태를 제공합니다:
-y : --year (연도)-s : --semester (학기)-k : --keyword (검색어)-c : --college (대학)-d : --department (학과)-m : --major (전공)-n : --course-name, --chapel-name, --major-name (이름)rusaint-cli by-lecture --year <YEAR> --semester <SEMESTER> --keyword <KEYWORD>
# 짧은 옵션 사용
rusaint-cli by-lecture -y <YEAR> -s <SEMESTER> -k <KEYWORD>
rusaint-cli by-lecture --year 2025 --semester 1 --keyword "대학글쓰기"
# 짧은 옵션 사용
rusaint-cli by-lecture -y 2025 -s 1 -k "대학글쓰기"
[
{
"syllabus": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.HAS_PLAN_PAPER_SALV_WD_CE.1",
"category": "교필",
"sub_category": null,
"abeek_info": null,
"field": null,
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "(외국인을위한)대학글쓰기",
"division": null,
"professor": "김지학",
"department": "교양교육운영팀",
"time_points": "2.0/2.0",
"personeel": "0",
"remaining_seats": "30",
"schedule_room": "월 11:00-11:50 (전산관 19330-김지학)\n월 12:00-12:50 (전산관 19330-김지학)",
"target": "전체학년 전체;순수외국인입학생 (대상외수강제한)"
},
]
rusaint-cli major --year <YEAR> --semester <SEMESTER> --college <COLLEGE> --department <DEPARTMENT> --major <MAJOR>
# 짧은 옵션 사용
rusaint-cli major -y <YEAR> -s <SEMESTER> -c <COLLEGE> -d <DEPARTMENT> -m <MAJOR>
rusaint-cli major --year 2025 --semester 1 --college "공과대학" --department "건축학부" --major "건축공학전공"
# 짧은 옵션 사용
rusaint-cli major -y 2025 -s 1 -c "공과대학" -d "건축학부" -m "건축공학전공"
rusaint-cli major --year 2025 --semester 1 --college "IT대학" --department "컴퓨터학부"
# 짧은 옵션 사용
rusaint-cli major -y 2025 -s 1 -c "IT대학" -d "컴퓨터학부"
[
{
"syllabus": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.HAS_PLAN_PAPER_SALV_WD_CE.1",
"category": "전선-컴퓨터",
"sub_category": "복선-컴퓨터",
"abeek_info": null,
"field": null,
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "(공통)물리1및실험",
"division": null,
"professor": "김남미\n이재구",
"department": "물리학과",
"time_points": "4.0/3.0",
"personeel": "0",
"remaining_seats": "25",
"schedule_room": "목 13:00-13:50 (숭덕경상관 02317-김남미)\n목 14:00-14:50 (숭덕경상관 02317-김남미)\n목 15:00-15:50 (조만식기념관 12123-이재구)\n목 16:00-16:50 (조만식기념관 12123-이재구)",
"target": "전체학년 기계,화공,전기,건축학부,신소재,정통전,전자정보공학부-IT융합,전자정보공학부-전자공학,AI융합,물리,화학,의생명,소프트,컴퓨터"
},
]
rusaint-cli required-elective --year <YEAR> --semester <SEMESTER> --course-name <COURSE_NAME>
# 짧은 옵션 사용
rusaint-cli required-elective -y <YEAR> -s <SEMESTER> -n <COURSE_NAME>
rusaint-cli required-elective --year 2025 --semester 1 --course-name "대학한국어1"
# 짧은 옵션 사용
rusaint-cli required-elective -y 2025 -s 1 -n "대학한국어1"
[
{
"syllabus": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.HAS_PLAN_PAPER_SALV_WD_CE.1",
"category": "교필",
"sub_category": null,
"abeek_info": null,
"field": null,
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "대학한국어1",
"division": null,
"professor": "김수은",
"department": "교양교육운영팀",
"time_points": "6.0/6.0",
"personeel": "0",
"remaining_seats": "0",
"schedule_room": "월 목 09:00-10:15 (진리관 11115-김수은)\n월 목 10:30-11:45 (진리관 11115-김수은)",
"target": "전체학년 ;순수외국인입학생 (대상외수강제한)(대상외수강제한)"
},
]
rusaint-cli optional-elective --year <YEAR> --semester <SEMESTER> --course-name <COURSE_NAME>
# 짧은 옵션 사용
rusaint-cli optional-elective -y <YEAR> -s <SEMESTER> -n <COURSE_NAME>
rusaint-cli optional-elective --year 2025 --semester 1 --course-name "['23이후]과학·기술"
# 짧은 옵션 사용
rusaint-cli optional-elective -y 2025 -s 1 -n "['23이후]과학·기술"
[
{
"syllabus": null,
"category": "교선",
"sub_category": null,
"abeek_info": null,
"field": "[‘23이후]과학·기술\n['20,'21~'22]창의/융합,균형교양-자연과학·공학·기술\n['19]균형교양-자연/공학(자연/과학/기술)\n['16-'18]기초역량(과학정보기술-정보기술)\n['15이전]정보와기술(융합-자연)",
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "4차산업혁명시대의정보보안",
"division": null,
"professor": "장의진",
"department": "SW교육팀",
"time_points": "3.0/3.0",
"personeel": "0",
"remaining_seats": "50",
"schedule_room": "화 09:00-10:15 (벤처중소기업센터 10309 (이도영강의실)-장의진)",
"target": "IT융합전공 ,컴퓨터 ,소프트 ,AI융합학부 ,글로벌미디어 ,정보보호(계약), 교류학과"
},
]
rusaint-cli chapel --year <YEAR> --semester <SEMESTER> --chapel-name <CHAPEL_NAME>
# 짧은 옵션 사용
rusaint-cli chapel -y <YEAR> -s <SEMESTER> -n <CHAPEL_NAME>
rusaint-cli chapel --year 2025 --semester 1 --chapel-name "비전채플"
# 짧은 옵션 사용
rusaint-cli chapel -y 2025 -s 1 -n "비전채플"
[
{
"syllabus": null,
"category": "채플",
"sub_category": null,
"abeek_info": null,
"field": null,
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "비전채플",
"division": null,
"professor": "김회권",
"department": "학원선교팀",
"time_points": "1.0/0.5",
"personeel": "0",
"remaining_seats": "980",
"schedule_room": "화 16:30-17:20 (한경직기념관 08110-김회권)",
"target": "1학년 내국인학생 전체 수강제한 // 전체학년 수강 신청일: 2학년 이상 전체 단과대학 학생(1학년 외국인유학생 포함) 수강신청 가능"
},
]
rusaint-cli education --year <YEAR> --semester <SEMESTER>
# 짧은 옵션 사용
rusaint-cli education -y <YEAR> -s <SEMESTER>
rusaint-cli education --year 2025 --semester 1
# 짧은 옵션 사용
rusaint-cli education -y 2025 -s 1
[
{
"syllabus": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.HAS_PLAN_PAPER_SALV_WD_CE.1",
"category": "교직",
"sub_category": null,
"abeek_info": null,
"field": "교직이론영역",
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "교육과정",
"division": null,
"professor": "조호제",
"department": "교직팀",
"time_points": "2.0/2.0",
"personeel": "0",
"remaining_seats": "40",
"schedule_room": "금 16:00-16:50 (진리관 11407-조호제)\n금 17:00-17:50 (진리관 11407-조호제)",
"target": "순수외국인입학생 제한"
},
]
rusaint-cli connected-major --year <YEAR> --semester <SEMESTER> --major-name <MAJOR_NAME>
# 짧은 옵션 사용
rusaint-cli connected-major -y <YEAR> -s <SEMESTER> -n <MAJOR_NAME>
rusaint-cli connected-major --year 2025 --semester 1 --major-name "융합창업연계"
# 짧은 옵션 사용
rusaint-cli connected-major -y 2025 -s 1 -n "융합창업연계"
[
{
"syllabus": null,
"category": "교선",
"sub_category": "연계2-융합창업",
"abeek_info": null,
"field": "[‘23이후]자기개발·진로탐색\n['20,'21~'22]공동체/리더십,숭실품성-인성과리더십\n['19]숭실품성-인성과리더십\n['16-'18]숭실품성(리더십-리더십이론및실천)\n['15이전]인성과리더쉽(핵심-창의)",
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "실전SNS마케팅과실무",
"division": null,
"professor": "오현석",
"department": "창업교육·지원팀",
"time_points": "3.0/3.0",
"personeel": "0",
"remaining_seats": "50",
"schedule_room": "금 15:00-16:15 (조만식기념관 12406-오현석)\n금 16:30-17:45 (조만식기념관 12406-오현석)",
"target": "전체"
},
]
rusaint-cli united-major --year <YEAR> --semester <SEMESTER> --major-name <MAJOR_NAME>
# 짧은 옵션 사용
rusaint-cli united-major -y <YEAR> -s <SEMESTER> -n <MAJOR_NAME>
rusaint-cli united-major --year 2025 --semester 1 --major-name "빅데이터융합"
# 짧은 옵션 사용
rusaint-cli united-major -y 2025 -s 1 -n "빅데이터융합"
[
{
"syllabus": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.HAS_PLAN_PAPER_SALV_WD_CE.1",
"category": "전필-소프트",
"sub_category": "복선-소프트/융선-빅데이터융합",
"abeek_info": "공학주제-소프트공인증/인필-소프트공인증",
"field": null,
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "데이터베이스",
"division": null,
"professor": "이상호",
"department": "소프트웨어학부",
"time_points": "3.0/3.0",
"personeel": "0",
"remaining_seats": "50",
"schedule_room": "월 수 09:00-10:15 (정보과학관 21303-이상호)",
"target": "3학년 소프트"
},
]
rusaint-cli recognized-other-major --year <YEAR> --semester <SEMESTER> --college <COLLEGE> --department <DEPARTMENT> --major <MAJOR>
# 짧은 옵션 사용
rusaint-cli recognized-other-major -y <YEAR> -s <SEMESTER> -c <COLLEGE> -d <DEPARTMENT> -m <MAJOR>
rusaint-cli recognized-other-major --year 2025 --semester 1 --college "공과대학" --department "건축학부" --major "건축공학전공"
# 짧은 옵션 사용
rusaint-cli recognized-other-major -y 2025 -s 1 -c "공과대학" -d "건축학부" -m "건축공학전공"
rusaint-cli recognized-other-major --year 2025 --semester 1 --college "IT대학" --department "컴퓨터학부"
# 짧은 옵션 사용
rusaint-cli recognized-other-major -y 2025 -s 1 -c "IT대학" -d "컴퓨터학부"
[
{
"syllabus": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.HAS_PLAN_PAPER_SALV_WD_CE.1",
"category": "전선-컴퓨터",
"sub_category": null,
"abeek_info": null,
"field": null,
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "디지털공학",
"division": null,
"professor": "차형태",
"department": "전자정보공학부 전자공학전공",
"time_points": "3.0/3.0",
"personeel": "0",
"remaining_seats": "40",
"schedule_room": "화 13:30-14:45 (형남공학관 05104 (김낙경강의실)-차형태)\n목 13:30-14:45 (형남공학관 05104 (김낙경강의실)-차형태)",
"target": "2학년 전자공학전공(IT융합 수강제한)"
},
]
rusaint-cli cyber --year <YEAR> --semester <SEMESTER>
# 짧은 옵션 사용
rusaint-cli cyber -y <YEAR> -s <SEMESTER>
rusaint-cli cyber --year 2025 --semester 1
# 짧은 옵션 사용
rusaint-cli cyber -y 2025 -s 1
[
{
"syllabus": null,
"category": "교선",
"sub_category": null,
"abeek_info": null,
"field": "숭실사이버대과목\n[‘23이후]자기개발·진로탐색\n['20,'21~'22]공동체/리더십,숭실품성-인성과리더십\n['19]숭실품성-인성과리더십\n['16-'18]균형교양(사회과학-문화및문명)\n['15이전]생활과건강(실용-생활)",
"code": "SALV_WD_TABLE.ID_DE0D9128A4327646C94670E2A892C99C:VIEW_TABLE.SE_SHORT_SALV_WD_CE.1",
"name": "식품과건강(숭실사이버대)",
"division": null,
"professor": "",
"department": "학사팀",
"time_points": "3.0/3.0",
"personeel": "0",
"remaining_seats": "200",
"schedule_room": "",
"target": "전체"
},
]