[ 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 이슈에 글 남겨주세요!
감사합니다.
이 라이브러리에서 today의 급식만 따로 빼내는 방법 알려주실 수 있나요??
node.js 파싱이라고 구글링을 해보았는데, 위에 있는 코드랑 많이 달라서요..
데이터는 객체로 묶어서 전달이 되는데 객체에서 원하는 키에 접근하는 방법은 아래 2 방법이 있습니다.
obj.key
obj['key']
만약 급식 데이터가 meal 변수에 있다고 하면 meal.today 또는 meal['today']로 today에 해당하는 값만 접근할 수 있습니다.
const sampleAsync = async function() {
var meal = await school.getMeal()
console.log(meal.today)
}
sampleAsync()
다음과 같은 코드는 로컬 환경에서 구동이 잘 됩니다.
하지만 동일 코드를 웹 서버에서 구동을 하려고 하니까
const sampleAsync = async function() {
^^^^^^^^
SyntaxError: Unexpected token function
다음과 같은 에러가 발생하네요.. 라이브러리를 설치했는데도 이 증상이 발생하는데, 어떤 오류인지 알 수 있을까요?
node --harmony-async-await 파일.js 로 실행시키거나 Node.js v8 이상 버전을 사용하시면 됩니다
var msg = req.body.content;
console.log('전달받은 메시지' + msg);
var send = {};
switch(msg) {
case '오늘 급식':
send = {
'message' : {
'text': '몰라요'
}
}
핳 죄송하지만 좀 부탁드릴게용...ㅠㅠㅠ
/* 객체 생성 */
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': '알 수 없는 명령'
}
})
}
}
})
...중략...
제가 올린 챗봇 강좌, 급식 라이브러리는 콜백함수나 프라미스, 비동기함수 개념까지 어느정도 알고 계셔야 사용할 때 어려움이 없습니다.
컴퓨터시간을 가져와서 오늘 밥을 알려주는 건가요?
아니면 나이스의 서버 시간을 가져오는 건가요?
Node.js에 node-schedule 이라는 모듈이 있는데 이를 사용하면 특정 시간마다 코드를 실행하실 수 있습니다. 이 부분을 알아보시면 도움될것같아요
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 오류가 납니다 어떻게 해야하나요
rn-nodeify