어느 학교던지, 학교 홈페이지에 접속하면 학사일정이 기록되어 있습니다. 다만, 항상 학교 홈페이지까지 접속하여 학사일정을 확인하기에는 번거롭고 귀찮아 obtuse-triangle/neisScheduleToICS 라는 레포지토리를 만들어 내가 원하는 캘린더에 학교 학사일정을 추가할 수 있도록 개발하였습니다.
neisScheduleToICS 소개
neisScheduleToICS는 나이스에 있는 학교 학사일정을 당해년도 1월 1일부터 내년 1월 1일까지 모두 api로 조회한 이후, iCalendar(애플의 캘린더 앱) 형식인 ics 형식으로 제공하는 api이자 변환 툴?이라고 할 수 있겠습니다. Node.js 기반으로 개발되었기 때문에 직접 서버를 구동하기 위해서는 Node.js와 fs, request, express가 필요합니다.
사용법
기본적으로 neisScheduleToICS는 obtuse.kr에서 서비스 중 이므로, 사용하고자 한다면, 각자 서버를 설정할 필요 없이 obtuse.kr을 통해 사용하시면 됩니다.
기본 사용법
각자 원하는 캘린더 앱을 실행한 이후 새로운 캘린더 구독
을 선택한 후 하단 URL을 각자 학교의 시도교육청코드와 표준행정코드를 입력하여 사용합니다.
https://obtuse.kr/api/calendar/school?ATPT_OFCDC_SC_CODE=시도교육청코드&SD_SCHUL_CODE=표준행정코드
업데이트는 캘린더 앱에서 설정한 주기마다 되며, 서버측 캐시는 일주일마다 초기화되어 새로운 학사일정을 나이스로부터 받아옵니다.
시도교육청코드와 표준행정코드는 나이스 교육정보개방포털 – 학교기본정보 에서 학교명을 조회하여 확인하실 수 있습니다.
위 사진의 정보를 바탕으로, 부산소프트웨어마이스터고등학교의 학사일정 정보를 불러오기 위해서는 다음과 같은 링크를 사용해야 합니다.
https://obtuse.kr/api/calendar/school?ATPT_OFCDC_SC_CODE=C10&SD_SCHUL_CODE=7150658
직접 호스팅해서 사용하기
git clone
과 npm i
명령을 사용하여 레포지토리 파일과 구동에 필요한 라이브러리들을 받아주세요.
simple.js 사용하기
simple.js 파일의 최하단을 확인하면 jsondata 라는 이름의 변수를 확인할 수 있습니다.. 이 변수에 neisAPI로부터 받은 학사일정 json 내용을 작성하면 정적인 ics 파일을 생성할 수 있는 프로그램입니다.
index.js 사용하기
index.js는 jsondata를 변수에 미리 입력시키지 않고, config.json파일에 neisKey와 시도교육청코드, 표준행정코드를 입력하여 자동으로 api를 사용해 학교의 학사일정을 불러오고, 정적인 ics파일을 생성하는 프로그램입니다.
server.js 사용하기
server.js는 요청이 들어왔을 때, neis api에 요청을 보내 학사일정을 불러온 후 자동으로 ics파일로 변환한 후 응답을 반환하는 서버 프로그램입니다. 이 역시 neis api를 호출하기 위해서 config.json파일에 neisKey를 작성해야 합니다.
server.js는 요청을 받게 되면 ./config/시도교육청코드/표준행정코드.ics
형식으로 캐싱을 진행합니다. 캐싱은 일주일간 유효하며, 캐싱기간인 일주일 안에 정확히 같은 시도교육청코드와 표준행정코드로 요청이 날아오면 neis api 호출 없이 캐싱된 데이터를 바로 서빙합니다.
마치며
나이스 api를 활용해서 학교 학사일정을 내가 원하는 캘린더에 불러와 사용하는 방법에 대해서 알아보았습니다.
답글 남기기