Neis-api.py 4.0.2
나이스 api를 이용한 파이썬 모듈입니다.
License: MIT
Requires Python: >=3.6

# neispy

> **동기와 비동기 전부 지원합니다.** **문제 발생시 이슈 넣어주세요!**

api키는 [이곳](https://open.neis.go.kr/portal/guide/actKeyPage.do)에서 받으실 수 있습니다.

[open Neis api](https://open.neis.go.kr/)의 모든 엔드포인트가 래핑되어있습니다

```sh
pip install neis.py
```

## 업데이트 방법

```sh
pip install --upgrade neis.py
```

## 사용 예시(비동기)

```py
from neis.py import Neispy
from asyncio.events import get_event_loop


name = "인천석천초등학교"


async def main():
    # 필수인자가 들어가는곳입니다. API키,json,xml등 받을방식등등..
    # 아무값이 없으니 샘플키로 요청합니다.
    async with Neispy() as neis:
        # 학교이름으로 학교정보를 요청하고 교육청코드 와 학교코드로 가져옵니다.
        scinfo = await neis.schoolInfo(SCHUL_NM=name)
        AE = scinfo[0].ATPT_OFCDC_SC_CODE  # 교육청코드
        SE = scinfo[0].SD_SCHUL_CODE  # 학교코드

        # 학교코드와 교육청 코드로 2019년 1월 22일의 급식 정보 요청
        scmeal = await neis.mealServiceDietInfo(AE, SE, MLSV_YMD="20190122")
        meal = scmeal[0].DDISH_NM.replace("<br/>", "\n")  # 줄바꿈으로 만든뒤 출력

        # 학교코드와 교육청 코드로 2019년 3월 7일날 학사일정 요청
        scschedule = await neis.SchoolSchedule(AE, SE, AA_YMD=20201002)
        schedule = scschedule[0].EVENT_NM  # 학사일정명 가져옴

        # 학교코드와 교육청 코드로 초등학교의 2020년 1월 22일의 시간표가져옴
        sctimetable = await neis.elsTimetable(AE, SE, 2019, 2, 20200122, "1", "1")
        timetable = [i.ITRT_CNTNT for i in sctimetable]  # 리스트로 만듬

        academyinfo = await neis.acaInsTiInfo(AE)  # 교육청 코드로 학원및 교습소 정보 요청
        academy = academyinfo[0].ACA_NM  # 학교이름 출력

        scclass = await neis.classInfo(
            AE, SE, GRADE="1"
        )  # 학교코드와 교육청 코드로 1학년의 모든 반정보 요청
        class_info = [i.CLASS_NM for i in scclass]  # 리스트로만듬

        hiscinfo = await neis.schoolInfo(SCHUL_NM="인천기계")  # 다른정보를 위해 공고로 가져옴
        hAE = hiscinfo[0].ATPT_OFCDC_SC_CODE  # 교육청코드
        hSE = hiscinfo[0].SD_SCHUL_CODE  # 학교코드

        scmajorinfo = await neis.schoolMajorinfo(hAE, hSE)  # 학과정보 요청
        majorinfo = [m.DDDEP_NM for m in scmajorinfo]  # 리스트로 만듬

        scAflcoinfo = await neis.schulAflcoinfo(hAE, hSE)  # 학교 계열정보 요청
        Aflco = [a.ORD_SC_NM for a in scAflcoinfo]

        sctiClrm = await neis.tiClrminfo(hAE, hSE)  # 시간표 강의실 정보 요청
        tiClem = [t.CLRM_NM for t in sctiClrm]


get_event_loop().run_until_complete(main())

# 출력값

# E10
# 7341038
# 보리밥
# 사과
# 비엔나소시지케첩조림2.5.6.10.12.13.
# 궁중떡볶이1.5.6.13.
# 알타리김치9.13.
# 청국장찌개(신)5.9.13.
# 학급임원선거
# A+수학교습소
# ['1', '2', '3', '4', '5']
# ['즐거운생활', '수학', '국어', '즐거운생활']
# ['기계과', '공동실습소', '건축과', '건축디자인과', '금속과']
# ['공업계', '공동실습소', '공업계']
# ['건축1-1', '건축1-2', '도시1-1', '도시1-2', '메카1-1']

```

## 사용 예시(동기)

```py
from neis.py import Neispy

name = "인천석천초등학교"


def main():

    # 필수인자가 들어가는곳입니다. API키,json,xml등 받을방식등등..
    # 아무값이 없으니 샘플키로 요청합니다.
    neis = Neispy.sync()

    print(dir(neis))

    # 학교이름으로 학교정보를 요청하고 교육청코드 와 학교코드로 가져옵니다.
    scinfo = neis.schoolInfo(SCHUL_NM=name)
    AE = scinfo[0].ATPT_OFCDC_SC_CODE  # 교육청코드
    SE = scinfo[0].SD_SCHUL_CODE  # 학교코드

    # 학교코드와 교육청 코드로 2019년 1월 22일의 급식 정보 요청
    scmeal = neis.mealServiceDietInfo(AE, SE, MLSV_YMD="20190122")
    meal = scmeal[0].DDISH_NM.replace("<br/>", "\n")  # 줄바꿈으로 만든뒤 출력

    # 학교코드와 교육청 코드로 2019년 3월 7일날 학사일정 요청
    scschedule = neis.SchoolSchedule(AE, SE, AA_YMD=20201002)
    schedule = scschedule[0].EVENT_NM  # 학사일정명 가져옴

    # 학교코드와 교육청 코드로 초등학교의 2020년 1월 22일의 시간표가져옴
    sctimetable = neis.elsTimetable(AE, SE, 2019, 2, 20200122, "1", "1")
    timetable = [i.ITRT_CNTNT for i in sctimetable]  # 리스트로 만듬

    academyinfo = neis.acaInsTiInfo(AE)  # 교육청 코드로 학원및 교습소 정보 요청
    academy = academyinfo[0].ACA_NM  # 학교이름 출력

    scclass = neis.classInfo(AE, SE, GRADE="1")  # 학교코드와 교육청 코드로 1학년의 모든 반정보 요청
    class_info = [i.CLASS_NM for i in scclass]  # 리스트로만듬

    hiscinfo = neis.schoolInfo(SCHUL_NM="인천기계")  # 다른정보를 위해 공고로 가져옴
    hAE = hiscinfo[0].ATPT_OFCDC_SC_CODE  # 교육청코드
    hSE = hiscinfo[0].SD_SCHUL_CODE  # 학교코드

    scmajorinfo = neis.schoolMajorinfo(hAE, hSE)  # 학과정보 요청
    majorinfo = [m.DDDEP_NM for m in scmajorinfo]  # 리스트로 만듬

    scAflcoinfo = neis.schulAflcoinfo(hAE, hSE)  # 학교 계열정보 요청
    Aflco = [a.ORD_SC_NM for a in scAflcoinfo]

    sctiClrm = neis.tiClrminfo(hAE, hSE)  # 시간표 강의실 정보 요청
    tiClem = [t.CLRM_NM for t in sctiClrm]

    print(AE)
    print(SE)
    print(meal)
    print(schedule)
    print(academy)
    print(class_info)
    print(timetable)
    print(majorinfo)
    print(Aflco)
    print(tiClem)


main()

# 출력값

# E10
# 7341038
# 보리밥
# 사과
# 비엔나소시지케첩조림2.5.6.10.12.13.
# 궁중떡볶이1.5.6.13.
# 알타리김치9.13.
# 청국장찌개(신)5.9.13.
# 학급임원선거
# A+수학교습소
# ['1', '2', '3', '4', '5']
# ['즐거운생활', '수학', '국어', '즐거운생활']
# ['기계과', '공동실습소', '건축과', '건축디자인과', '금속과']
# ['공업계', '공동실습소', '공업계']
# ['건축1-1', '건축1-2', '도시1-1', '도시1-2', '메카1-1']
```

## 인자값

| 변수명 | 타입          | 변수 설명            | 설명                              |
| ------ | ------------- | -------------------- | --------------------------------- |
| KEY    | STRING(필수)  | 인증키               | 기본값 : sample key               |
| Type   | STRING(필수)  | 호출 문서(xml, json) | 기본값 : json                     |
| pIndex | INTEGER(필수) | 페이지 위치          | 기본값 : 1(sample key는 1 고정)   |
| pSize  | INTEGER(필수) | 페이지 당 신청 숫자  | 기본값 : 100(sample key는 5 고정) |



## 급식값

| 목차 | 변수          | 변수 설명            | 
| ------ | ------------- | -------------------- |
1|ATPT_OFCDC_SC_CODE|시도교육청코드|
2|ATPT_OFCDC_SC_NM|시도교육청명|
3|SD_SCHUL_CODE|표준학교코드|
4|SCHUL_NM|학교명|
5|MMEAL_SC_CODE|식사코드|
6|MMEAL_SC_NM|식사명|
7|MLSV_YMD|급식일자|
8|MLSV_FGR|급식인원수|
9|DDISH_NM|요리명|
10|ORPLC_INFO|원산지정보|
11|CAL_INFO|칼로리정보|
12|NTR_INFO|영양정보|
13|MLSV_FROM_YMD|급식시작일자|
14|MLSV_TO_YMD|급식종료일자|

* [데이터셋](https://open.neis.go.kr/portal/data/dataset/searchDatasetPage.do)

**시간표 같은 부분은 초,중,고,특수인걸 제외하고는 모두 같습니다.**

**Attribute도 데이터셋을 참고해주시기바랍니다.**