diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-31 06:12:13 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-31 06:12:13 +0000 |
commit | 440a17b0aceff7a94a91e53a5434905a2f6a331b (patch) | |
tree | a57f05ce6f91643a0b03c27ea71b12bff9b6afb3 | |
parent | 2101cd6cdd05a6210f37236a7f1a3cedc625b05d (diff) |
automatic import of python-neispy
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-neispy.spec | 1081 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 1083 insertions, 0 deletions
@@ -0,0 +1 @@ +/neispy-4.2.0.tar.gz diff --git a/python-neispy.spec b/python-neispy.spec new file mode 100644 index 0000000..c5a8bfb --- /dev/null +++ b/python-neispy.spec @@ -0,0 +1,1081 @@ +%global _empty_manifest_terminate_build 0 +Name: python-neispy +Version: 4.2.0 +Release: 1 +Summary: open-neis-api wrapping with aiohttp +License: MIT +URL: https://github.com/SaidBySolo/neispy +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a4/44/6efcc14f2cf40ea9a62a864fcff3be752c12db9b86113b68956ad506148a/neispy-4.2.0.tar.gz +BuildArch: noarch + +Requires: python3-aiohttp + +%description +# neispy + +> [2020 공개SW 개발자 대회 조직위원장 특별상 수상 작품](https://www.oss.kr/dev_competition_activities/show/d8ce674e-1cf4-45de-b3c2-0365cdc5aabc?page=3) +> **동기와 비동기 전부 지원합니다.** **문제 발생시 이슈 넣어주세요!** + +[](https://github.com/SaidBySolo/neispy/blob/master/LICENSE) + +[](https://pypi.org/project/neispy/) + +api키는 [이곳](https://open.neis.go.kr/portal/guide/actKeyPage.do)에서 받으실 수 있습니다. + +[open Neis api](https://open.neis.go.kr/)의 모든 엔드포인트가 래핑되어 있습니다. + + +```sh +pip install neispy +``` + +## 업데이트 방법 + +```sh +pip install --upgrade neispy +``` + +## 사용 예시(비동기) + +```py +from neispy 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 # 학교 코드 + + # 학교 코드와 교육청 코드로 2022년 5월 23일의 급식 정보 요청 + scmeal = await neis.mealServiceDietInfo(AE, SE, MLSV_YMD="20220523") + meal = scmeal[0].DDISH_NM.replace("<br/>", "\n") # 줄바꿈으로 만든 뒤 출력 + + # 학교 코드와 교육청 코드로 2022년 6월 1일날 학사일정 요청 + scschedule = await neis.SchoolSchedule(AE, SE, AA_YMD=20220601) + schedule = scschedule[0].EVENT_NM # 학사일정명 가져옴 + + # 학교 코드와 교육청 코드로 초등학교의 2022년 5월 23일의 시간표 가져옴 + sctimetable = await neis.elsTimetable(AE, SE, 2022, 1, 20220523, "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 +# 7341025 +# 보리밥c +# 감자국c (5.6.9.13.) +# 순대볶음c (5.6.10.13.) +# 고구마돈가스c (1.2.5.6.10.12.13.) +# 배추김치 (9.13.) +# 참외 +# 지방선거일 +# A+수학교습소 +# ['1', '2', '3', '4', '1'] +# ['국어', '수학', '즐거운생활', '즐거운생활', '봉사활동'] +# ['공동실습소', '건축과', '건축디자인과', '금속과', '기계공작과'] +# ['공동실습소', '공업계', '공업계'] +# ['건축1-1', '건축1-2', '도시1-1', '도시1-2', '메카1-1'] + +``` + +## 사용 예시(동기) + +```py +from neispy import Neispy + +name = "인천석천초등학교" + + +def main(): + + # 필수 인자가 들어가는 곳입니다. API키, JSON ,XML 등의 받을 방식 등등.. + # 아무런 값이 없으니 샘플 키로 요청합니다. + neis = Neispy.sync() + + # 학교 이름으로 학교 정보를 요청하고 교육청 코드 와 학교 코드로 가져옵니다. + scinfo = neis.schoolInfo(SCHUL_NM="인천동방초등학교") + AE = scinfo[0].ATPT_OFCDC_SC_CODE # 교육청 코드 + SE = scinfo[0].SD_SCHUL_CODE # 학교 코드 + + # 학교 코드와 교육청 코드로 2022년 5월 23일의 급식 정보 요청 + scmeal = neis.mealServiceDietInfo(AE, SE, MLSV_YMD="20220523") + meal = scmeal[0].DDISH_NM.replace("<br/>", "\n") # 줄바꿈으로 만든 뒤 출력 + + # 학교 코드와 교육청 코드로 2022년 6월 1일날 학사일정 요청 + scschedule = neis.SchoolSchedule(AE, SE, AA_YMD=20220601) + schedule = scschedule[0].EVENT_NM # 학사일정명 가져옴 + + # 학교 코드와 교육청 코드로 초등학교의 2022년 5월 23일의 시간표가져옴 + sctimetable = neis.elsTimetable(AE, SE, 2022, 1, 20220523, "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 +# 7341025 +# 보리밥c +# 감자국c (5.6.9.13.) +# 순대볶음c (5.6.10.13.) +# 고구마돈가스c (1.2.5.6.10.12.13.) +# 배추김치 (9.13.) +# 참외 +# 지방선거일 +# A+수학교습소 +# ['1', '2', '3', '4', '1'] +# ['국어', '수학', '즐거운생활', '즐거운생활', '봉사활동'] +# ['공동실습소', '건축과', '건축디자인과', '금속과', '기계공작과'] +# ['공동실습소', '공업계', '공업계'] +# ['건축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 고정) | + +* [데이터셋](https://open.neis.go.kr/portal/data/dataset/searchDatasetPage.do) + +**시간표 같은 부분은 초, 중, 고, 특수인 것을 제외하고는 모두 같습니다.** + +**Attribute도 데이터셋을 참고해 주시기 바랍니다.** + +## Release note + +### 4.0.0 + +* 클래스명 변경 ``Client`` -> ``Neispy``. +* 이제 ``ClientSession``을 요청마다 생성하지 않습니다. +* ``now()``함수가 더 이상 적용되지 않도록 변경되었습니다. +* ``async with`` 구문을 지원하도록 변경되었습니다. +* 기존 모델에서 SimpleNamespace로 변경되었습니다. +* 동기로 사용할시 클래스메소드 ``.sync()``의 반환값인 ``SyncNeispy``를 사용해야 하도록 변경되었습니다. +* 타입힌트가 좀 더 정확히 적용되었습니다. + +### 3.2.2 + +* 사용하지 않는 모듈을 제거한 후 재배포했습니다. + +### 3.2.1 + +* #43(#42번 이슈) PR을 적용했습니다. + +### 3.2.0 + +* #41 PR을 적용했습니다. + +### 3.1.0 + +* #40(#39번 이슈) PR을 적용했습니다. + +### 3.0.0 + +* #28(#17번 이슈) #31(#30번 이슈) #34(#33번 이슈) #36 PR을 적용했습니다. + +* 동기 비동기 클라이언트를 나누지 않고 사용할수있습니다. + +* 모델의 많은 변화가 있습니다. 예제를 참고해주세요. + +### 2.0.7 + +* neispy는 이제 UTC+9:00를 기준으로 가져옵니다. + +### 2.0.6 + +* #25번 이슈를 적용했습니다. + +* APIKeyNotFound예외를 force인자를 통해 무시할 수 있습니다. + +* 시간표에 빠져있던 강의실명 파라미터를 추가했습니다. + +### 2.0.4 + +* #22번(#21번 이슈), #23번 PR을 적용했습니다. + +### 2.0.3 + +* #20번 PR을 적용했습니다. + +### 2.0.2 + +* Fixed #15 + +* 시간표에 빠져있던 인자들을 추가했습니다. + +### 2.0.1 + +* 날짜 형식이 20200101과 같은 형식으로 안나오는 문제를 해결했습니다. + +### 2.0.0 + +* 동기 요청이 가능합니다. + +### 1.0.0 + +* 모든 엔드포인트를 커버합니다. + +### 0.6.0 + +* 모델을 적용했습니다. + +* 반 정보 엔드포인트를 커버할 수 있습니다. + +* 모든 정보가 필요할 때 rawdata를 이용하여 리스트로 가져올 수 있습니다. + +### 0.5.0 + +* Model 메커니즘을 변경했습니다. + +* docstring을 추가했습니다. + +### 0.4.0 + +* 초, 중, 고 시간표 엔드포인트를 커버할 수 있습니다. + +### 0.3.4 + +* Model 메커니즘을 변경하였습니다. + +### 0.3.3 + +* Model 클래스에서 sort_meal 함수의 이름이 달라 생긴 문제를 수정했습니다. + +### 0.3.2 + +* 코드 퀄리티가 향상되었습니다. + +### 0.3.1 + +* 코드 퀄리티가 향상되었습니다. + +### 0.3.0 + +* **코드 다시 쓰기 분기를 합병했습니다.** +* 학원교습소 정보를 추가했습니다. +* 예외 처리를 추가했습니다. +* 코드를 최적화했습니다. + +### 0.2.3 + +* 초등학생 시간표를 추가했습니다. + +### 0.2.2 + +* #1번 이슈의 버그를 수정했습니다. +* 샘플 키로 요청하도록 변경했습니다. + +### 0.2.1 + +* 학사 일정을 추가했습니다. + +### 0.2.0 + +* 학교 정보, 급식 일정 모든 인자 값을 받을 수 있습니다. + +### 0.1.1 + +* 사용하지 않는 모듈을 제거하고, 사용하기 쉽도록 함수 이름을 변경했습니다. + +### 0.1.0 + +* 첫 배포가 시작되었습니다. + + +%package -n python3-neispy +Summary: open-neis-api wrapping with aiohttp +Provides: python-neispy +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-neispy +# neispy + +> [2020 공개SW 개발자 대회 조직위원장 특별상 수상 작품](https://www.oss.kr/dev_competition_activities/show/d8ce674e-1cf4-45de-b3c2-0365cdc5aabc?page=3) +> **동기와 비동기 전부 지원합니다.** **문제 발생시 이슈 넣어주세요!** + +[](https://github.com/SaidBySolo/neispy/blob/master/LICENSE) + +[](https://pypi.org/project/neispy/) + +api키는 [이곳](https://open.neis.go.kr/portal/guide/actKeyPage.do)에서 받으실 수 있습니다. + +[open Neis api](https://open.neis.go.kr/)의 모든 엔드포인트가 래핑되어 있습니다. + + +```sh +pip install neispy +``` + +## 업데이트 방법 + +```sh +pip install --upgrade neispy +``` + +## 사용 예시(비동기) + +```py +from neispy 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 # 학교 코드 + + # 학교 코드와 교육청 코드로 2022년 5월 23일의 급식 정보 요청 + scmeal = await neis.mealServiceDietInfo(AE, SE, MLSV_YMD="20220523") + meal = scmeal[0].DDISH_NM.replace("<br/>", "\n") # 줄바꿈으로 만든 뒤 출력 + + # 학교 코드와 교육청 코드로 2022년 6월 1일날 학사일정 요청 + scschedule = await neis.SchoolSchedule(AE, SE, AA_YMD=20220601) + schedule = scschedule[0].EVENT_NM # 학사일정명 가져옴 + + # 학교 코드와 교육청 코드로 초등학교의 2022년 5월 23일의 시간표 가져옴 + sctimetable = await neis.elsTimetable(AE, SE, 2022, 1, 20220523, "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 +# 7341025 +# 보리밥c +# 감자국c (5.6.9.13.) +# 순대볶음c (5.6.10.13.) +# 고구마돈가스c (1.2.5.6.10.12.13.) +# 배추김치 (9.13.) +# 참외 +# 지방선거일 +# A+수학교습소 +# ['1', '2', '3', '4', '1'] +# ['국어', '수학', '즐거운생활', '즐거운생활', '봉사활동'] +# ['공동실습소', '건축과', '건축디자인과', '금속과', '기계공작과'] +# ['공동실습소', '공업계', '공업계'] +# ['건축1-1', '건축1-2', '도시1-1', '도시1-2', '메카1-1'] + +``` + +## 사용 예시(동기) + +```py +from neispy import Neispy + +name = "인천석천초등학교" + + +def main(): + + # 필수 인자가 들어가는 곳입니다. API키, JSON ,XML 등의 받을 방식 등등.. + # 아무런 값이 없으니 샘플 키로 요청합니다. + neis = Neispy.sync() + + # 학교 이름으로 학교 정보를 요청하고 교육청 코드 와 학교 코드로 가져옵니다. + scinfo = neis.schoolInfo(SCHUL_NM="인천동방초등학교") + AE = scinfo[0].ATPT_OFCDC_SC_CODE # 교육청 코드 + SE = scinfo[0].SD_SCHUL_CODE # 학교 코드 + + # 학교 코드와 교육청 코드로 2022년 5월 23일의 급식 정보 요청 + scmeal = neis.mealServiceDietInfo(AE, SE, MLSV_YMD="20220523") + meal = scmeal[0].DDISH_NM.replace("<br/>", "\n") # 줄바꿈으로 만든 뒤 출력 + + # 학교 코드와 교육청 코드로 2022년 6월 1일날 학사일정 요청 + scschedule = neis.SchoolSchedule(AE, SE, AA_YMD=20220601) + schedule = scschedule[0].EVENT_NM # 학사일정명 가져옴 + + # 학교 코드와 교육청 코드로 초등학교의 2022년 5월 23일의 시간표가져옴 + sctimetable = neis.elsTimetable(AE, SE, 2022, 1, 20220523, "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 +# 7341025 +# 보리밥c +# 감자국c (5.6.9.13.) +# 순대볶음c (5.6.10.13.) +# 고구마돈가스c (1.2.5.6.10.12.13.) +# 배추김치 (9.13.) +# 참외 +# 지방선거일 +# A+수학교습소 +# ['1', '2', '3', '4', '1'] +# ['국어', '수학', '즐거운생활', '즐거운생활', '봉사활동'] +# ['공동실습소', '건축과', '건축디자인과', '금속과', '기계공작과'] +# ['공동실습소', '공업계', '공업계'] +# ['건축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 고정) | + +* [데이터셋](https://open.neis.go.kr/portal/data/dataset/searchDatasetPage.do) + +**시간표 같은 부분은 초, 중, 고, 특수인 것을 제외하고는 모두 같습니다.** + +**Attribute도 데이터셋을 참고해 주시기 바랍니다.** + +## Release note + +### 4.0.0 + +* 클래스명 변경 ``Client`` -> ``Neispy``. +* 이제 ``ClientSession``을 요청마다 생성하지 않습니다. +* ``now()``함수가 더 이상 적용되지 않도록 변경되었습니다. +* ``async with`` 구문을 지원하도록 변경되었습니다. +* 기존 모델에서 SimpleNamespace로 변경되었습니다. +* 동기로 사용할시 클래스메소드 ``.sync()``의 반환값인 ``SyncNeispy``를 사용해야 하도록 변경되었습니다. +* 타입힌트가 좀 더 정확히 적용되었습니다. + +### 3.2.2 + +* 사용하지 않는 모듈을 제거한 후 재배포했습니다. + +### 3.2.1 + +* #43(#42번 이슈) PR을 적용했습니다. + +### 3.2.0 + +* #41 PR을 적용했습니다. + +### 3.1.0 + +* #40(#39번 이슈) PR을 적용했습니다. + +### 3.0.0 + +* #28(#17번 이슈) #31(#30번 이슈) #34(#33번 이슈) #36 PR을 적용했습니다. + +* 동기 비동기 클라이언트를 나누지 않고 사용할수있습니다. + +* 모델의 많은 변화가 있습니다. 예제를 참고해주세요. + +### 2.0.7 + +* neispy는 이제 UTC+9:00를 기준으로 가져옵니다. + +### 2.0.6 + +* #25번 이슈를 적용했습니다. + +* APIKeyNotFound예외를 force인자를 통해 무시할 수 있습니다. + +* 시간표에 빠져있던 강의실명 파라미터를 추가했습니다. + +### 2.0.4 + +* #22번(#21번 이슈), #23번 PR을 적용했습니다. + +### 2.0.3 + +* #20번 PR을 적용했습니다. + +### 2.0.2 + +* Fixed #15 + +* 시간표에 빠져있던 인자들을 추가했습니다. + +### 2.0.1 + +* 날짜 형식이 20200101과 같은 형식으로 안나오는 문제를 해결했습니다. + +### 2.0.0 + +* 동기 요청이 가능합니다. + +### 1.0.0 + +* 모든 엔드포인트를 커버합니다. + +### 0.6.0 + +* 모델을 적용했습니다. + +* 반 정보 엔드포인트를 커버할 수 있습니다. + +* 모든 정보가 필요할 때 rawdata를 이용하여 리스트로 가져올 수 있습니다. + +### 0.5.0 + +* Model 메커니즘을 변경했습니다. + +* docstring을 추가했습니다. + +### 0.4.0 + +* 초, 중, 고 시간표 엔드포인트를 커버할 수 있습니다. + +### 0.3.4 + +* Model 메커니즘을 변경하였습니다. + +### 0.3.3 + +* Model 클래스에서 sort_meal 함수의 이름이 달라 생긴 문제를 수정했습니다. + +### 0.3.2 + +* 코드 퀄리티가 향상되었습니다. + +### 0.3.1 + +* 코드 퀄리티가 향상되었습니다. + +### 0.3.0 + +* **코드 다시 쓰기 분기를 합병했습니다.** +* 학원교습소 정보를 추가했습니다. +* 예외 처리를 추가했습니다. +* 코드를 최적화했습니다. + +### 0.2.3 + +* 초등학생 시간표를 추가했습니다. + +### 0.2.2 + +* #1번 이슈의 버그를 수정했습니다. +* 샘플 키로 요청하도록 변경했습니다. + +### 0.2.1 + +* 학사 일정을 추가했습니다. + +### 0.2.0 + +* 학교 정보, 급식 일정 모든 인자 값을 받을 수 있습니다. + +### 0.1.1 + +* 사용하지 않는 모듈을 제거하고, 사용하기 쉽도록 함수 이름을 변경했습니다. + +### 0.1.0 + +* 첫 배포가 시작되었습니다. + + +%package help +Summary: Development documents and examples for neispy +Provides: python3-neispy-doc +%description help +# neispy + +> [2020 공개SW 개발자 대회 조직위원장 특별상 수상 작품](https://www.oss.kr/dev_competition_activities/show/d8ce674e-1cf4-45de-b3c2-0365cdc5aabc?page=3) +> **동기와 비동기 전부 지원합니다.** **문제 발생시 이슈 넣어주세요!** + +[](https://github.com/SaidBySolo/neispy/blob/master/LICENSE) + +[](https://pypi.org/project/neispy/) + +api키는 [이곳](https://open.neis.go.kr/portal/guide/actKeyPage.do)에서 받으실 수 있습니다. + +[open Neis api](https://open.neis.go.kr/)의 모든 엔드포인트가 래핑되어 있습니다. + + +```sh +pip install neispy +``` + +## 업데이트 방법 + +```sh +pip install --upgrade neispy +``` + +## 사용 예시(비동기) + +```py +from neispy 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 # 학교 코드 + + # 학교 코드와 교육청 코드로 2022년 5월 23일의 급식 정보 요청 + scmeal = await neis.mealServiceDietInfo(AE, SE, MLSV_YMD="20220523") + meal = scmeal[0].DDISH_NM.replace("<br/>", "\n") # 줄바꿈으로 만든 뒤 출력 + + # 학교 코드와 교육청 코드로 2022년 6월 1일날 학사일정 요청 + scschedule = await neis.SchoolSchedule(AE, SE, AA_YMD=20220601) + schedule = scschedule[0].EVENT_NM # 학사일정명 가져옴 + + # 학교 코드와 교육청 코드로 초등학교의 2022년 5월 23일의 시간표 가져옴 + sctimetable = await neis.elsTimetable(AE, SE, 2022, 1, 20220523, "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 +# 7341025 +# 보리밥c +# 감자국c (5.6.9.13.) +# 순대볶음c (5.6.10.13.) +# 고구마돈가스c (1.2.5.6.10.12.13.) +# 배추김치 (9.13.) +# 참외 +# 지방선거일 +# A+수학교습소 +# ['1', '2', '3', '4', '1'] +# ['국어', '수학', '즐거운생활', '즐거운생활', '봉사활동'] +# ['공동실습소', '건축과', '건축디자인과', '금속과', '기계공작과'] +# ['공동실습소', '공업계', '공업계'] +# ['건축1-1', '건축1-2', '도시1-1', '도시1-2', '메카1-1'] + +``` + +## 사용 예시(동기) + +```py +from neispy import Neispy + +name = "인천석천초등학교" + + +def main(): + + # 필수 인자가 들어가는 곳입니다. API키, JSON ,XML 등의 받을 방식 등등.. + # 아무런 값이 없으니 샘플 키로 요청합니다. + neis = Neispy.sync() + + # 학교 이름으로 학교 정보를 요청하고 교육청 코드 와 학교 코드로 가져옵니다. + scinfo = neis.schoolInfo(SCHUL_NM="인천동방초등학교") + AE = scinfo[0].ATPT_OFCDC_SC_CODE # 교육청 코드 + SE = scinfo[0].SD_SCHUL_CODE # 학교 코드 + + # 학교 코드와 교육청 코드로 2022년 5월 23일의 급식 정보 요청 + scmeal = neis.mealServiceDietInfo(AE, SE, MLSV_YMD="20220523") + meal = scmeal[0].DDISH_NM.replace("<br/>", "\n") # 줄바꿈으로 만든 뒤 출력 + + # 학교 코드와 교육청 코드로 2022년 6월 1일날 학사일정 요청 + scschedule = neis.SchoolSchedule(AE, SE, AA_YMD=20220601) + schedule = scschedule[0].EVENT_NM # 학사일정명 가져옴 + + # 학교 코드와 교육청 코드로 초등학교의 2022년 5월 23일의 시간표가져옴 + sctimetable = neis.elsTimetable(AE, SE, 2022, 1, 20220523, "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 +# 7341025 +# 보리밥c +# 감자국c (5.6.9.13.) +# 순대볶음c (5.6.10.13.) +# 고구마돈가스c (1.2.5.6.10.12.13.) +# 배추김치 (9.13.) +# 참외 +# 지방선거일 +# A+수학교습소 +# ['1', '2', '3', '4', '1'] +# ['국어', '수학', '즐거운생활', '즐거운생활', '봉사활동'] +# ['공동실습소', '건축과', '건축디자인과', '금속과', '기계공작과'] +# ['공동실습소', '공업계', '공업계'] +# ['건축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 고정) | + +* [데이터셋](https://open.neis.go.kr/portal/data/dataset/searchDatasetPage.do) + +**시간표 같은 부분은 초, 중, 고, 특수인 것을 제외하고는 모두 같습니다.** + +**Attribute도 데이터셋을 참고해 주시기 바랍니다.** + +## Release note + +### 4.0.0 + +* 클래스명 변경 ``Client`` -> ``Neispy``. +* 이제 ``ClientSession``을 요청마다 생성하지 않습니다. +* ``now()``함수가 더 이상 적용되지 않도록 변경되었습니다. +* ``async with`` 구문을 지원하도록 변경되었습니다. +* 기존 모델에서 SimpleNamespace로 변경되었습니다. +* 동기로 사용할시 클래스메소드 ``.sync()``의 반환값인 ``SyncNeispy``를 사용해야 하도록 변경되었습니다. +* 타입힌트가 좀 더 정확히 적용되었습니다. + +### 3.2.2 + +* 사용하지 않는 모듈을 제거한 후 재배포했습니다. + +### 3.2.1 + +* #43(#42번 이슈) PR을 적용했습니다. + +### 3.2.0 + +* #41 PR을 적용했습니다. + +### 3.1.0 + +* #40(#39번 이슈) PR을 적용했습니다. + +### 3.0.0 + +* #28(#17번 이슈) #31(#30번 이슈) #34(#33번 이슈) #36 PR을 적용했습니다. + +* 동기 비동기 클라이언트를 나누지 않고 사용할수있습니다. + +* 모델의 많은 변화가 있습니다. 예제를 참고해주세요. + +### 2.0.7 + +* neispy는 이제 UTC+9:00를 기준으로 가져옵니다. + +### 2.0.6 + +* #25번 이슈를 적용했습니다. + +* APIKeyNotFound예외를 force인자를 통해 무시할 수 있습니다. + +* 시간표에 빠져있던 강의실명 파라미터를 추가했습니다. + +### 2.0.4 + +* #22번(#21번 이슈), #23번 PR을 적용했습니다. + +### 2.0.3 + +* #20번 PR을 적용했습니다. + +### 2.0.2 + +* Fixed #15 + +* 시간표에 빠져있던 인자들을 추가했습니다. + +### 2.0.1 + +* 날짜 형식이 20200101과 같은 형식으로 안나오는 문제를 해결했습니다. + +### 2.0.0 + +* 동기 요청이 가능합니다. + +### 1.0.0 + +* 모든 엔드포인트를 커버합니다. + +### 0.6.0 + +* 모델을 적용했습니다. + +* 반 정보 엔드포인트를 커버할 수 있습니다. + +* 모든 정보가 필요할 때 rawdata를 이용하여 리스트로 가져올 수 있습니다. + +### 0.5.0 + +* Model 메커니즘을 변경했습니다. + +* docstring을 추가했습니다. + +### 0.4.0 + +* 초, 중, 고 시간표 엔드포인트를 커버할 수 있습니다. + +### 0.3.4 + +* Model 메커니즘을 변경하였습니다. + +### 0.3.3 + +* Model 클래스에서 sort_meal 함수의 이름이 달라 생긴 문제를 수정했습니다. + +### 0.3.2 + +* 코드 퀄리티가 향상되었습니다. + +### 0.3.1 + +* 코드 퀄리티가 향상되었습니다. + +### 0.3.0 + +* **코드 다시 쓰기 분기를 합병했습니다.** +* 학원교습소 정보를 추가했습니다. +* 예외 처리를 추가했습니다. +* 코드를 최적화했습니다. + +### 0.2.3 + +* 초등학생 시간표를 추가했습니다. + +### 0.2.2 + +* #1번 이슈의 버그를 수정했습니다. +* 샘플 키로 요청하도록 변경했습니다. + +### 0.2.1 + +* 학사 일정을 추가했습니다. + +### 0.2.0 + +* 학교 정보, 급식 일정 모든 인자 값을 받을 수 있습니다. + +### 0.1.1 + +* 사용하지 않는 모듈을 제거하고, 사용하기 쉽도록 함수 이름을 변경했습니다. + +### 0.1.0 + +* 첫 배포가 시작되었습니다. + + +%prep +%autosetup -n neispy-4.2.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-neispy -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 31 2023 Python_Bot <Python_Bot@openeuler.org> - 4.2.0-1 +- Package Spec generated @@ -0,0 +1 @@ +cf0a89975d0e033effec273aca5ae090 neispy-4.2.0.tar.gz |