이근둥
근둥이의 블로그
이근둥
전체 방문자
759,181
오늘
137
어제
617

공지사항

  • 전체보기 (106) N
    • 웹 (8)
    • 언어 & 프레임워크 (53)
      • JavaScript (7)
      • TypeScript (0)
      • Node.js (11)
      • Vue.js (3)
      • React (0)
      • C & C++ (19)
      • Java & JSP (9)
      • Python (4)
    • 컴퓨터 과학 (3) N
      • 알고리즘 (0)
      • 자료구조 (3) N
    • 기타 (9)
      • Linux (1)
      • Git (2)
      • DialogFlow (4)
    • 일상 (13)
      • 게임 (13)
    • 칼럼 (9)
      • 회고 (0)
      • 나만의 글 (0)
      • 제품 리뷰 (9)
    • __Dev__ (9)
      • Release (9)
반응형

인기 글

  • [Tomcat] 아파치 톰캣 서버 포⋯
    2018.08.24
    [Tomcat] 아파치 톰캣 서버 포⋯
  • [Node.js] 실시간 채팅 서비스⋯
    2018.05.31
    [Node.js] 실시간 채팅 서비스⋯
  • [PWA] 프로그레시브 웹 앱 시작⋯
    2019.01.09
    [PWA] 프로그레시브 웹 앱 시작⋯
  • [Linux] Ubuntu 18.04 테마 설⋯
    2019.01.16
    [Linux] Ubuntu 18.04 테마 설⋯
  • [DialogFlow] 다이얼로그 플로⋯
    2018.07.13
    [DialogFlow] 다이얼로그 플로⋯

태그

  • Hello World!
  • vuex
  • 이펙트
  • pwa
  • vue-next
  • Composition API
  • 프로그레시브 웹 앱
  • spread syntax
  • 자바
  • Scanner
  • Vue 3
  • 파티클
  • java
  • vue.js
  • WWDC20
  • vue3
  • 출간
  • 자바 프로젝트
  • 이클립스
  • Deemo
  • WWDC
  • composition-api
  • ES6
  • vue
  • 웹 확장
  • Java FX
  • AstroWar
  • javascript
  • 전개 구문
  • self

최근 댓글

  • 아래 composition API 부분 코⋯
    깜장발
  • 좋은 글 작성해주셔서 감사합니⋯
    바밤
  • 현재 이 코드를 응용한 간단한⋯
    ㅇㅇ
  • wasd키가 아니라 방향키로는 못⋯
    clvkdh
  • 찾아 본 것 중에 가장 좋았어요⋯
    우왕

최근 글

  • 스택(Stack)
    2022.05.26
    스택(Stack)
  • 배열(Array)
    2022.05.25
    배열(Array)
  • C언어로 배우는 자료구조
    2022.05.24
    C언어로 배우는 자료구조
  • [Vue 3] Composition API와 템⋯
    2020.10.02
    [Vue 3] Composition API와 템⋯
  • [Vue 3] Composition API와 Vue⋯
    2020.09.06
    [Vue 3] Composition API와 Vue⋯

블로그 메뉴

  • 홈
  • 미디어로그
  • 방명록
hELLO · Designed By 정상우.
이근둥

근둥이의 블로그

[Node.js] 전국 학교 급식, 학사일정 파싱 라이브러리
__Dev__/Release

[Node.js] 전국 학교 급식, 학사일정 파싱 라이브러리

2018. 5. 24. 18:46
반응형

[ school-kr ]


@@ Node.js 전용! @@










안녕하세요



얼마 전에 Node.js용 학교 급식 및 학사일정 파싱 모듈을 개발했습니다.



2017년 2월달부터 학교 급식 파싱에 대한 내용은 꾸준히 찾아보고 구현해왔는데

학사일정 부분에 대해서는 아래 라이브러리를 참고하여 새롭게 포팅했습니다.

https://github.com/agemor/school-api




위 라이브러리는 자바 라이브러리 이므로 Node.js 에서 사용이 불가능합니다.


그래서 저는 Node.js 에서 사용할 라이브러리로 새롭게 포팅했습니다.


[Github]

https://github.com/leegeunhyeok/school-kr



[NPM]

https://www.npmjs.com/package/school-kr



Node.js 웹 서버, 챗봇 API 서버 등 대한민국의 전국 학교(또는 병설유치원)의


급식정보

학사일정


이 필요하시면 위 라이브러리를 설치하여 사용하시면 됩니다.



데이터는 파싱하여 JSON형태로 변환할 수 있는 형식으로 제공이 되구요

자바스크립트 내에서는 객체가 JSON 형태이기 때문에 바로 사용이 가능합니다.




라이브러리 설치 방법




Node.js + NPM이 설치되어있어야 합니다.

(기본적으로 Node.js 설치 시 NPM은 기본으로 같이 설치 됨)




NPM에 업로드해두었으므로 편리하게 설치가 가능합니다.



npm install school-kr


또는


npm i school-kr




예제


아래 사진은 간단한 예제입니다.


학교는 광명경영회계고등학교를 기준으로 초기화한 후 진행하였습니다.



init() 초기화 부분의 값은 총 3개인데 필수 데이터입니다.


- 첫 번째 -

병설유치원, 초, 중, 고


- 두 번째 -

교육청 관할 지역


- 세 번째-

해당 학교 고유번호



위 3가지 값, 기타 추가 문서는 Github 또는 NPM에서 확인 가능합니다.

(예제 및 사용 방법, 기타 정보를 작성해두었습니다)



※ 2020.02.03 현재 3.0 버전으로 업데이트 되었습니다. ※

꼭 공식 문서에서 사용법을 확인해주세요.

(일부 사용법 변경 됨)






Promise 기반으로 개발하였기 때문에 비동기 함수에서 사용이 가능합니다.




결과




급식 데이터





학사일정 데이터



해당 날짜에 급식이 없거나, 학사일정이 없을 경우 빈 데이터로 반환됩니다.


급식 데이터의 경우 month, day, today 속성이 있는데

해당 속성은 각각 현재 시점의


달(Month)

일(Day)

오늘의 급식


추가로 저장되어있어서 데이터 수집 후 다시 처리하지 않고도 빠르게 오늘 급식 및 날짜를 확인할 수 있습니다.




학사일정 데이터의 경우는 month만 존재하기 제공됩니다.




라이선스




본 프로젝트의 라이선스는 MIT 라이선스입니다.





오류 제보



파싱이 안되거나 기타 오류가 발생할 경우 댓글에 남겨주시거나 Github에 이슈 남겨주시면 확인 후 수정하도록 하겠습니다.


[ Github 이슈 ]

https://github.com/leegeunhyeok/school-kr/issues







깃허브 사용자이시면 Star 한번씩 눌러주세요~!!


 팔로우도 환영합니다!


https://github.com/leegeunhyeok/school-kr










기타 질문사항은 댓글 또는 Github 이슈에 글 남겨주세요!




감사합니다.

반응형
저작자표시비영리동일조건
    '__Dev__/Release' 카테고리의 다른 글
    • 깃허브 커밋 히스토리 위젯! Gito
    • [Node.js] 학교 시간표 파싱 라이브러리
    • [Unity] 어메이징 볼링 1.0
    • [C++] Hollow Escape
    이근둥
    이근둥
    새로운 것을 좋아하는 프론트엔드 개발자 ✨
    댓글쓰기
    1. 전제영
      2018.09.11 16:46
      Javascript나 node.js에 아무런 지식 없이.. 강의만 따라가고 있는 학생입니다!
      이 라이브러리에서 today의 급식만 따로 빼내는 방법 알려주실 수 있나요??
      node.js 파싱이라고 구글링을 해보았는데, 위에 있는 코드랑 많이 달라서요..
      수정/삭제댓글쓰기댓글보기
      1. 이근둥
        2018.09.13 13:15 신고
        안녕하세요 본 라이브러리에서 급식을 조회할 경우 1일부터 30(31)일 까지의 급식을 제공합니다.

        데이터는 객체로 묶어서 전달이 되는데 객체에서 원하는 키에 접근하는 방법은 아래 2 방법이 있습니다.


        obj.key
        obj['key']


        만약 급식 데이터가 meal 변수에 있다고 하면 meal.today 또는 meal['today']로 today에 해당하는 값만 접근할 수 있습니다.
        수정/삭제
      2. 전제영
        2018.09.17 21:56
        감사합니다!!
        수정/삭제
    2. 전제영
      2018.09.17 21:16
      인스턴스 생성 후
      const sampleAsync = async function() {
      var meal = await school.getMeal()
      console.log(meal.today)
      }

      sampleAsync()

      다음과 같은 코드는 로컬 환경에서 구동이 잘 됩니다.
      하지만 동일 코드를 웹 서버에서 구동을 하려고 하니까
      const sampleAsync = async function() {
      ^^^^^^^^

      SyntaxError: Unexpected token function
      다음과 같은 에러가 발생하네요.. 라이브러리를 설치했는데도 이 증상이 발생하는데, 어떤 오류인지 알 수 있을까요?
      수정/삭제댓글쓰기댓글보기
      1. 이근둥
        2018.09.20 12:14 신고
        async 키워드 때문인것같습니다. async function 문법은 node.js v7 이상부터 지원하지만 기본적으로 잠겨있어서 사용할 수 없습니다.

        node --harmony-async-await 파일.js 로 실행시키거나 Node.js v8 이상 버전을 사용하시면 됩니다
        수정/삭제
    3. 이현탁
      2018.10.04 08:00
      이걸 카카오톡 봇이랑 합치면 어떻게 만들어야 할까요.... 답변 부탁드려요.. 코드도 같이 주시면 감사합니다!
      수정/삭제댓글쓰기댓글보기
      1. 이근둥
        2018.10.04 10:54 신고
        app.post('message', ...) 내부에 위 라이브러리를 호출하여(getMeal) 데이터를 보내주면 됩니다.
        수정/삭제
    4. 이현탁
      2018.10.04 13:49
      으아.... app.post('/message', function(req, res){
      var msg = req.body.content;
      console.log('전달받은 메시지' + msg);
      var send = {};
      switch(msg) {
      case '오늘 급식':
      send = {
      'message' : {
      'text': '몰라요'
      }
      }
      핳 죄송하지만 좀 부탁드릴게용...ㅠㅠㅠ
      수정/삭제댓글쓰기댓글보기
      1. 이근둥
        2018.10.05 10:42 신고
        const School = require('node-school-kr')

        /* 객체 생성 */
        const school = new School()

        /* 아래 예제는 경기도의 광명경영회계고등학교를 기준으로 함 */
        /* 데이터 불러오기 위해서는 필수로 호출 (처음 1회만 진행) */
        school.init(school.eduType.high, school.region.gyeonggi, 'J100000488')

        ...중략...

        app.post('/message', function (req, res) {
        var msg = req.body.content

        switch (msg) {
        case '오늘 급식': {
        school.getMeal().then(function (result) {
        // 결과 가져온 후 클라이언트에게 응답
        res.json({
        'message' : {
        'text': result['today']
        }
        })
        })
        }

        default: {
        res.json({
        'message' : {
        'text': '알 수 없는 명령'
        }
        })
        }
        }
        })

        ...중략...
        수정/삭제
      2. 이근둥
        2018.10.05 10:45 신고
        프로그래밍 경험이 많이 없으시다면 자바스크립트 기초를 익히시고 진행하시는게 도움이 됩니다!

        제가 올린 챗봇 강좌, 급식 라이브러리는 콜백함수나 프라미스, 비동기함수 개념까지 어느정도 알고 계셔야 사용할 때 어려움이 없습니다.
        수정/삭제
    5. X
      2019.01.13 16:56
      궁금한게 있습니다.
      컴퓨터시간을 가져와서 오늘 밥을 알려주는 건가요?
      아니면 나이스의 서버 시간을 가져오는 건가요?
      수정/삭제댓글쓰기댓글보기
      1. 이근둥
        2019.01.15 16:16 신고
        코드가 실행되는 컴퓨터의 시간 기준으로 데이터를 수집합니다.
        수정/삭제
    6. 익명
      2019.02.20 23:06
      비밀댓글입니다
      수정/삭제댓글쓰기댓글보기
      1. 이근둥
        2019.03.11 20:54 신고
        lghlove0509@naver.com 으로 보내주시면 됩니다~

        Node.js에 node-schedule 이라는 모듈이 있는데 이를 사용하면 특정 시간마다 코드를 실행하실 수 있습니다. 이 부분을 알아보시면 도움될것같아요
        수정/삭제
    7. 네모네모
      2019.08.05 15:39
      react-native 에서 개발을 해보려는데

      import React, {component} from 'react';
      import { StyleSheet, Text, View } from 'react-native';

      export default class App extends React.Component {
      getget(){
      const school = new School()
      school.init(School.Type.HIGH, School.Region.GYEONGGI, 'J100004971')
      console.log(school.getMeal)
      }
      render(){
      return (
      <View style={styles.container}>
      <Text>Open up App.js to start working on your app!</Text>
      </View>
      );
      }
      }

      const styles = StyleSheet.create({
      container: {
      flex: 1,
      backgroundColor: '#fff',
      alignItems: 'center',
      justifyContent: 'center',
      },
      });

      이렇게 했는데 unable to resolve the module crypto 오류가 납니다 어떻게 해야하나요
      수정/삭제댓글쓰기댓글보기
      1. 이근둥
        2019.08.05 15:42 신고
        RN에 대해선 잘 모르지만 아래 모듈을 설치하면 해결된다는 자료를 확인했습니다


        rn-nodeify
        수정/삭제
    8. 근둥님팬
      2020.06.12 23:20
      안녕하세요 혹시 급식 이미지도 같이 있나요?
      수정/삭제댓글쓰기댓글보기
      1. 이근둥
        2020.06.25 14:31 신고
        급식 이미지는 교육청에서 제공하지 않기 때문에 포함되어있지 않습니다. ㅜㅜ
        수정/삭제
    • 이전
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • ···
    • 9
    • 다음

    티스토리툴바