All Projects → agemor → Neis Api

agemor / Neis Api

Licence: mit
빠르고 가벼운 전국 초, 중, 고등학교 급식 식단/학사일정 파서

Programming Languages

kotlin
9241 projects

Labels

Projects that are alternatives of or similar to Neis Api

Cppcoreguidelines
C++ 핵심 가이드라인 한글화 프로젝트 (C++ Core Guidelines)
Stars: ✭ 572 (+672.97%)
Mutual labels:  korean
Ununiga
[은는이가] 한글 조사(助詞) 대응 I18n engine extension
Stars: ✭ 34 (-54.05%)
Mutual labels:  korean
Char Rnn Tensorflow
Multi-layer Recurrent Neural Networks for character-level language models implements by TensorFlow
Stars: ✭ 58 (-21.62%)
Mutual labels:  korean
Learn React In Korean
Let's learn React in Korean!!! (⚛ + 🇰🇷 = 😈 😈 😈)
Stars: ✭ 673 (+809.46%)
Mutual labels:  korean
Atom Korean Spell Daum
Daum 맞춤법 검사기로 텍스트를 보내 손쉽게 교정 가능한 Atom package
Stars: ✭ 24 (-67.57%)
Mutual labels:  korean
Owasp Masvs
The Mobile Application Security Verification Standard (MASVS) is a standard for mobile app security.
Stars: ✭ 1,030 (+1291.89%)
Mutual labels:  korean
Open Korean Text
Open Korean Text Processor - An Open-source Korean Text Processor
Stars: ✭ 438 (+491.89%)
Mutual labels:  korean
Kog2p
Korean grapheme-to-phone conversion in Python
Stars: ✭ 62 (-16.22%)
Mutual labels:  korean
Hangul Asm
Hangul disasm/asm
Stars: ✭ 10 (-86.49%)
Mutual labels:  korean
Yesterday I Learned
Brainfarts are caused by the rupturing of the cerebral sphincter.
Stars: ✭ 50 (-32.43%)
Mutual labels:  korean
Awesome Sushi
🍣 국내 스시 오마카세 맛집 리스트
Stars: ✭ 700 (+845.95%)
Mutual labels:  korean
Eulyoo1945
을유문화사에서 만든 을유1945 폰트를 웹에서 손쉽게 사용할 수 있는 환경을 제공합니다.
Stars: ✭ 24 (-67.57%)
Mutual labels:  korean
Graphql Kr.github.io
🇰🇷 GraphQL Document in Korean
Stars: ✭ 47 (-36.49%)
Mutual labels:  korean
Awesome Swift Korean Lecture
훌륭한 Swift 세션 동영상(강좌), 한글 자막있는 혹은 한국어 강의 정보 링크 모음 (Awesome Swift Korean lecture information)
Stars: ✭ 649 (+777.03%)
Mutual labels:  korean
Konlpy
Python package for Korean natural language processing.
Stars: ✭ 1,098 (+1383.78%)
Mutual labels:  korean
Kagome
Self-contained Japanese Morphological Analyzer written in pure Go
Stars: ✭ 554 (+648.65%)
Mutual labels:  korean
Haskellstudy
HaskellStudy
Stars: ✭ 44 (-40.54%)
Mutual labels:  korean
Kor2vec
Library for Korean morpheme and word vector representation
Stars: ✭ 64 (-13.51%)
Mutual labels:  korean
Typescript Handbook Ko
TypeScript Handbook in Korean.
Stars: ✭ 60 (-18.92%)
Mutual labels:  korean
Gobyexample
🎁 Go By Example 한국어 버전
Stars: ✭ 50 (-32.43%)
Mutual labels:  korean

NEIS API

빠르고 가벼운 전국 초,중,고등학교 급식 식단표/학사일정 파서

나이스(교육행정정보시스템) 학생서비스 페이지 파싱을 통해 월간 학사일정급식 식단표를 간편하게 불러올 수 있게 해 주는 API입니다. 한 번 로드된 데이터는 캐시하여 관리하고, 의존 라이브러리가 없어 7KB 정도의 적은 용량만을 차지하기 때문에 빠르고 가볍게 동작합니다.

[중요]

본 프로젝트는 NEIS에서 공식 API를 공개함에 따라 더 이상 관리되지 않습니다. NEIS 공식 API https://open.neis.go.kr/ 를 사용하시길 바랍니다.

설치하기

neis-apijcenter에 호스팅되어 있습니다.

dependencies {
    implementation "kr.go.neis.api:neis-api:4.0.1"
}

사용 예시

코드

Kotlin
val school = School.find(School.Region.SEOUL, "선덕고등학교")

// 2019년 1월 2일 점심 급식 식단표
val menu = school.getMonthlyMenu(2019, 1)
println(menu[1].lunch)

// 2018년 12월 5일 학사일정
val schedule = school.getMonthlySchedule(2018, 12)
println(schedule[4])
Java
try {
    School school = School.Companion.find(School.Region.SEOUL, "선덕고등학교");

    List<Menu> menu = school.getMonthlyMenu(2019, 1);
    List<Schedule> schedule = school.getMonthlySchedule(2018, 12);

    // 2019년 1월 2일 점심 급식 식단표
    System.out.println(menu.get(1).getLunch());

    // 2018년 12월 5일 학사일정
    System.out.println(schedule.get(4));

} catch (NEISException e) {
    e.printStackTrace();
}

출력

칼슘찹쌀밥
옥수수스프(빠네)1.2.5.6.13.
경양식돈까스1.2.5.6.10.12.13.
마카로니사과샐러드1.5.6.13.
모듬피클13.
복숭아플리또1.2.5.11.13.
단호박범벅1.5.13.

자치
생명존중자살예방교육
대학입시제도의이해

사용 방법

School 인스턴스 생성

NEIS API를 사용하기 위해 School인스턴스가 우선 생성되어야 합니다. 생성에는 세 가지 정보가 필요합니다.

val school = School(/* 학교 종류 */, /* 관할 지역 */, /* 학교 코드 */)

수동으로 코드를 입력할 필요 없이 교육기관명으로 자동 검색하는 방법도 있습니다. 이 방법은 교육기관 정보를 NEIS에서 검색하여 가져오므로 위의 방법보다 시간이 조금 더 소요됩니다.

val school = School.find(/* 관할 지역 */, /* 학교 이름 */)

학교 종류

학교 종류는 School.Type 에서 선택할 수 있습니다.

  • 병설유치원: School.Type.KINDERGARTEN
  • 초등학교: School.Type.ELEMENTARY
  • 중학교: School.Type.MIDDLE
  • 고등학교: School.Type.HIGH

관할 지역

관할 지역은 School.Region 에서 선택할 수 있습니다.

  • 서울특별시: School.Region.SEOUL
  • 인천광역시: School.Region.INCHEON
  • 부산광역시: School.Region.BUSAN
  • 광주광역시: School.Region.GWANGJU
  • 대전광역시: School.Region.DAEJEON
  • 대구광역시: School.Region.DAEGU
  • 세종특별자치시: School.Region.SEJONG
  • 울산광역시: School.Region.ULSAN
  • 경기도: School.Region.GYEONGGI
  • 강원도: School.Region.KANGWON
  • 충청북도: School.Region.CHUNGBUK
  • 충청남도: School.Region.CHUNGNAM
  • 경상북도: School.Region.GYEONGBUK
  • 경상남도: School.Region.GYEONGNAM
  • 전라북도: School.Region.JEONBUK
  • 전라남도: School.Region.JEONNAM
  • 제주도: School.Region.JEJU

학교 코드

학교의 고유 코드는 여기에서 학교명으로 검색할 수 있습니다. 학교 코드는 X000000000 형식의 10자리 문자열입니다.

학사일정 불러오기

월간 학사일정은 getMonthlySchedule(year:Int, month:Int)로 불러올 수 있습니다. 불러온 학사일정은 ArrayList 형태로 저장됩니다. 날짜는 0일부터 시작합니다. (1일 = 0, 2일 = 1, ... 31일=30)

// 2018년 12월의 학사일정 불러오기
val schedule = school.getMonthlySchedule(2018, 12)

// 그 달의 모든 일정을 출력
for (i in schedule.indices) {
    println("${i + 1}일 학사일정")
    println(schedule[i])
}

// 15일 학사일정
println(schedule[14])

급식 식단 불러오기

월간 급식 메뉴는 getMonthlyMenu(year:Int, month:Int)로 불러올 수 있습니다.

// 2019년 1월의 급식 식단 불러오기
val menu = school.getMonthlyMenu(2019, 1)

// 그 달의 모든 식단을 출력
for (i in menu.indices) {
    println("${i + 1}일 메뉴")
    println(menu[i])
}
// 24일 저녁 메뉴
println(menu[23].dinner)

// 1일 아침 메뉴
println(menu[0].breakfast)

// 30일 점심 메뉴
println(menu[29].lunch)

사용 시 주의사항

NEIS API 내 모든 메서드들은 동기적(synchronous) IO를 사용합니다. 따라서 NEIS 서버에서 데이터를 로드하는 메서드 (getMonthlyMenu,getMonthlySchedule,find) 사용 시 스레드나 코루틴 등으로 병렬 처리를 해 주셔야 blocking 이 발생하지 않습니다.

기여하기

교육청 내부 URL 이동, HTML 구조 변경 등으로 파싱이 되지 않거나 에러가 발생할 수 있습니다. 이런 상황이 발생할 경우 이슈로 등록해 주시거나, 문제가 되는 부분을 수정하신 후 PR해 주시면 감사하겠습니다.

라이센스

이 라이브러리는 MIT 라이센스를 따라 자유롭게 이용하실 수 있습니다.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].