An open API service indexing awesome lists of open source software.

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

🍚🍴 μ „κ΅­ ꡐ윑청 급식, 학사일정 νŒŒμ‹± 라이브러리
https://github.com/leegeunhyeok/school-kr

javascript node-module nodejs school school-kr

Last synced: 21 days ago
JSON representation

🍚🍴 μ „κ΅­ ꡐ윑청 급식, 학사일정 νŒŒμ‹± 라이브러리

Awesome Lists containing this project

README

        

# school-kr

> μ „κ΅­ 초, λ“±, 고등학ꡐ 및 λ³‘μ„€μœ μΉ˜μ› 급식, 학사일정 νŒŒμ‹± 라이브러리

[![npm version](https://img.shields.io/npm/v/school-kr.svg)](https://www.npmjs.com/package/school-kr)
[![downloads](https://img.shields.io/npm/dt/school-kr.svg)](https://www.npmjs.com/package/school-kr)
[![license](https://img.shields.io/npm/l/school-kr.svg)](https://www.npmjs.com/package/school-kr)
[![circleci](https://circleci.com/gh/leegeunhyeok/school-kr.svg?style=shield)](https://circleci.com/gh/leegeunhyeok/school-kr)

λ³Έ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” `Node.js` ν™˜κ²½μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” Promise 기반의 `급식 API` + `학사일정 API` 톡합 라이브러리 μž…λ‹ˆλ‹€.

μ „κ΅­ ꡐ윑청 학생 μ„œλΉ„μŠ€ νŽ˜μ΄μ§€(stu.xxx.go.kr)λ₯Ό νŒŒμ‹±ν•˜μ—¬ 이번 달 **학사일정**κ³Ό **급식 정보**λ₯Ό JSON λ°μ΄ν„°λ‘œ μ œκ³΅ν•©λ‹ˆλ‹€.

`3.0.0` 버전뢀터 νŒŒμ‹± 방식이 μ•„λ‹Œ API ν˜ΈμΆœμ„ 톡해 데이터λ₯Ό μˆ˜μ§‘ν•˜μ—¬ μ œκ³΅ν•©λ‹ˆλ‹€.

- `μ‹œκ°„ν‘œ 정보`도 ν•„μš”ν•˜μ‹ κ°€μš”? κ·Έλ ‡λ‹€λ©΄ [comcigan-parser](https://github.com/leegeunhyeok/comcigan-parser) λΌμ΄λΈŒλŸ¬λ¦¬λ„ ν•¨κ»˜ ν™•μΈν•΄λ³΄μ„Έμš”!

## μ„€μΉ˜ν•˜κΈ°

[NPM](https://www.npmjs.com/package/school-kr) μ €μž₯μ†Œλ₯Ό 톡해 λ‹€μš΄λ‘œλ“œ 받을 수 있으며 별닀λ₯Έ μž‘μ—… 없이 λ°”λ‘œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.

```bash
npm i school-kr
```

## ν…ŒμŠ€νŠΈ

μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜μ—¬ 미리 μž‘μ„±λœ 예제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
`sample/sample.js` μ½”λ“œκ°€ μ‹€ν–‰λ˜λ©°, ν•™κ΅λŠ” `κ΄‘λͺ…κ²½μ˜νšŒκ³„κ³ λ“±ν•™κ΅` κΈ°μ€€μœΌλ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€.

```bash
npm test
```

`v2` 버전과 `v3` λ²„μ „μ˜ μ„±λŠ₯ 비ꡐ

---

> v3λŠ” v2 λŒ€λΉ„ μ•½ 25%의 μ„±λŠ₯이 ν–₯상됨 (λ„€νŠΈμ›Œν¬ μƒνƒœμ— 따라 일뢀 변동될 수 있음)

ν…ŒμŠ€νŠΈ μ½”λ“œλŠ” `test/test_v2.js`, `test/test_v3.js` μ°Έκ³ 

## 개발 λ¬Έμ„œ

### School

λͺ¨λ“ˆμ„ 뢈러였면 School 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

```javascript
const School = require('school-kr');
new School();
```

---

### School.Type

[학ꡐ μ’…λ₯˜](#학ꡐ-μ’…λ₯˜) μ°Έμ‘°

---

### School.Region

[ꡐ윑청 κ΄€ν•  μ§€μ—­](#ꡐ윑청-κ΄€ν• -μ§€μ—­) μ°Έμ‘°

---

### (Method) School.search

μ§€μ •ν•œ μ§€μ—­μ˜ 학ꡐλ₯Ό κ²€μƒ‰ν•˜μ—¬ 정보λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

| Parameter | Type | Required |
| :-------- | :----: | :------: |
| region | Symbol | O |
| name | string | O |

Return type: `Promise>`, [μ°Έκ³ ](#검색-데이터-ν˜•μ‹)

```javascript
const school = new School();
school.search(region, name);
```

μ˜ˆμ œλŠ” [학ꡐ 검색](#학ꡐ-검색) μ°Έμ‘°

---

### (Method) School.init

μΈμŠ€ν„΄μŠ€ 정보λ₯Ό μ§€μ •ν•œ ν•™κ΅λ‘œ μ΄ˆκΈ°ν™” ν•©λ‹ˆλ‹€.

| Parameter | Type | Required |
| :--------- | :----: | :------: |
| type | Symbol | O |
| region | Symbol | O |
| schoolCode | string | O |

Return type: `void`

```javascript
const school = new School();
school.init(type, region, schoolCode);
```

μ˜ˆμ œλŠ” [μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™”](#μΈμŠ€ν„΄μŠ€-μ΄ˆκΈ°ν™”) μ°Έμ‘°

---

### (Method) School.getMeal

이번 달 λ˜λŠ” μ§€μ •ν•œ 년도/μ›”μ˜ 급식 데이터λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€
년도 λ˜λŠ” 월을 μ§€μ •ν•˜μ§€ μ•Šμ„ 경우 **ν˜„μž¬ μ‹œμ μ˜ λ‚ μ§œ** κΈ°μ€€μ˜ 데이터λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

| Parameter | Type | Required |
| :-------- | :----: | :------: |
| year | any | X |
| month | number | X |

Return type: `Promise`, [μ°Έκ³ ](#급식-데이터-ν˜•μ‹)

```javascript
school.getMeal(year, month);
```

μ˜ˆμ œλŠ” [급식 및 학사일정 쑰회](#급식-및-학사일정-쑰회) μ°Έμ‘°

---

### (Method) School.getCalendar

이번 달 λ˜λŠ” μ§€μ •ν•œ 년도/μ›”μ˜ 학사일정 데이터λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€
년도 λ˜λŠ” 월을 μ§€μ •ν•˜μ§€ μ•Šμ„ 경우 **ν˜„μž¬ μ‹œμ μ˜ λ‚ μ§œ** κΈ°μ€€μ˜ 데이터λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

| Parameter | Type | Required |
| :-------- | :----: | :------: |
| year | any | X |
| month | number | X |

Return type: `Promise`, [μ°Έκ³ ](#학사일정-데이터-ν˜•μ‹)

```javascript
school.getCalendar(year, month);
```

μ˜ˆμ œλŠ” [급식 및 학사일정 쑰회](#급식-및-학사일정-쑰회) μ°Έμ‘°

---

## μ‚¬μš© 방법

### School μΈμŠ€ν„΄μŠ€ 생성

`school-kr` λͺ¨λ“ˆμ„ 뢈러온 ν›„ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
생성 ν›„ λ°˜λ“œμ‹œ `init()`λ₯Ό ν˜ΈμΆœν•˜μ—¬ 데이터λ₯Ό μ‘°νšŒν•  ν•™κ΅λ‘œ μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.

- init() 호좜 없이 데이터λ₯Ό 뢈러올 경우 Errorκ°€ Throw λ©λ‹ˆλ‹€.

```javascript
const School = require('school-kr')
const school = new School()

/*
* @param type: 학ꡐ μœ ν˜•(초, 쀑, κ³ , λ³‘μ„€μœ μΉ˜μ›)
* @param region: ꡐ윑청 κ΄€ν•  μ§€μ—­
* @param schoolCode: 학ꡐ 고유 μ½”λ“œ
*/
school.init(/* Type */, /* Region */, /* SchoolCode */)
```

#### 학ꡐ μ’…λ₯˜

학ꡐ μ’…λ₯˜λŠ” `School.Type` μ—μ„œ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

```javascript
const School = require('school-kr');

/* 4 */
console.log(School.Type.HIGH);
```

| μœ ν˜• | Key | Value |
| :--------: | :------------- | :---: |
| λ³‘μ„€μœ μΉ˜μ› | `KINDERGARTEN` | 1 |
| μ΄ˆλ“±ν•™κ΅ | `ELEMENTARY` | 2 |
| 쀑학ꡐ | `MIDDLE` | 3 |
| 고등학ꡐ | `HIGH` | 4 |

#### ꡐ윑청 κ΄€ν•  μ§€μ—­

지역은 μƒμ„±ν•œ `School.Region` μ—μ„œ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

```javascript
const School = require('school-kr');

/* stu.sen.go.kr */
console.log(School.Region.SEOUL);
```

| μ§€μ—­ | Key | Value |
| :--: | :---------- | :------------ |
| μ„œμšΈ | `SEOUL` | stu.sen.go.kr |
| 인천 | `INCHEON` | stu.ice.go.kr |
| λΆ€μ‚° | `BUSAN` | stu.pen.go.kr |
| κ΄‘μ£Ό | `GWANGJU` | stu.gen.go.kr |
| λŒ€μ „ | `DAEJEON` | stu.dge.go.kr |
| λŒ€κ΅¬ | `DEAGU` | stu.dge.go.kr |
| μ„Έμ’… | `SEJONG` | stu.sje.go.kr |
| μšΈμ‚° | `ULSAN` | stu.use.go.kr |
| κ²½κΈ° | `GYEONGGI` | stu.goe.go.kr |
| 강원 | `KANGWON` | stu.kwe.go.kr |
| 좩뢁 | `CHUNGBUK` | stu.cbe.go.kr |
| 좩남 | `CHUNGNAM` | stu.cne.go.kr |
| 경뢁 | `GYEONGBUK` | stu.gbe.go.kr |
| 경남 | `GYEONGNAM` | stu.gne.go.kr |
| 전뢁 | `JEONBUK` | stu.jbe.go.kr |
| 전남 | `JEONNAM` | stu.jne.go.kr |
| 제주 | `JEJU` | stu.jje.go.kr |

## 학ꡐ μ½”λ“œ

`School.search()`λ₯Ό 톡해 학ꡐ μ½”λ“œλ₯Ό 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.
μžμ„Έν•œ μ‚¬μš©λ²•μ€ [학ꡐ 검색](#학ꡐ-검색) μ°Έμ‘°

## μ‚¬μš© μ˜ˆμ‹œ

β€» μ•„λž˜ μ˜ˆμ œλŠ” κ²½κΈ°λ„μ˜ `κ΄‘λͺ…κ²½μ˜νšŒκ³„κ³ λ“±ν•™κ΅`λ₯Ό κΈ°μ€€μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

### 학ꡐ 검색

```javascript
const School = require('school-kr');
const school = new School();

school.search(School.Region.GYEONGGI, 'κ΄‘λͺ…κ²½μ˜νšŒκ³„κ³ ');
```

### μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™”

```javascript
const School = require('school-kr');
const school = new School();

school.init(School.Type.HIGH, School.Region.GYEONGGI, 'J100000488');
```

### 급식 및 학사일정 쑰회

#### μ‚¬μš© μ˜ˆμ‹œ

```javascript
const School = require('school-kr');
const school = new School();

const example = async function () {
// 학ꡐ 검색 및 첫 번째 결과의 학ꡐ μ½”λ“œλ‘œ μ΄ˆκΈ°ν™”
const result = await school.search(School.Region.GYEONGGI, 'κ΄‘λͺ…κ²½μ˜νšŒκ³„κ³ ');
school.init(School.Type.HIGH, School.Region.GYEONGGI, result[0].schoolCode);

const meal = await school.getMeal();
const calendar = await school.getCalendar();

// 였늘 λ‚ μ§œ
console.log(`${meal.month}μ›” ${meal.day}일`);

// 였늘 급식 정보
console.log(meal.today);

// 이번 달 급식 정보
console.log(meal);

// 이번 달 학사일정
console.log(calendar);

// 년도와 달을 μ§€μ •ν•˜μ—¬ ν•΄λ‹Ή λ‚ μ§œμ˜ 데이터λ₯Ό μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
const mealCustom = await school.getMeal(2018, 9);
const calendarCustom = await school.getCalendar(2017, 4);

console.log(mealCustom);
console.log(calendarCustom);

// 년도값 λŒ€μ‹  μ˜΅μ…˜ 객체λ₯Ό μ „λ‹¬ν•˜μ—¬ 데이터 μˆ˜μ§‘ κ°€λŠ₯
// year: 년도 (κΈ°λ³Έκ°’: ν˜„μž¬ μ‹œμ μ˜ 년도)
// month: 달 (κΈ°λ³Έκ°’: ν˜„μž¬ μ‹œμ μ˜ 달)
// default: 급식이 μ—†λŠ” 경우 κΈ°λ³Έκ°’ (κΈ°λ³Έκ°’: '')
const optionMeal = await school.getMeal({
year: 2018,
month: 9,
default: '급식이 μ—†μŠ΅λ‹ˆλ‹€',
});

// 년도값 λŒ€μ‹  μ˜΅μ…˜ 객체λ₯Ό μ „λ‹¬ν•˜μ—¬ 데이터 μˆ˜μ§‘ κ°€λŠ₯
// year: 년도 (κΈ°λ³Έκ°’: ν˜„μž¬ μ‹œμ μ˜ 년도)
// month: 달 (κΈ°λ³Έκ°’: ν˜„μž¬ μ‹œμ μ˜ 달)
// default: 급식이 μ—†λŠ” 경우 κΈ°λ³Έκ°’ (κΈ°λ³Έκ°’: '')
// separator: ν•˜λ£¨μ— 2개 μ΄μƒμ˜ 일정이 μžˆλŠ” 경우의 κ΅¬λΆ„λ¬Έμž (κΈ°λ³Έκ°’: ,)
// 예: κ²¨μšΈλ°©ν•™,ν† μš”νœ΄μ—…μΌ
const optionCalendar = await school.getCalendar({
default: '일정 μ—†λŠ” λ‚ ',
separator: '\n',
});

console.log(optionMeal);
console.log(optionCalendar);
};

example();
```

### 검색 데이터 ν˜•μ‹

`search` λ°˜ν™˜ 데이터 ν˜•μ‹μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

| Key | Value | λΉ„κ³  |
| :--------- | :---------: | :-------- |
| name | 학ꡐλͺ… | |
| schoolCode | 학ꡐ μ½”λ“œ | NEIS μ½”λ“œ |
| address | 학ꡐ μ†Œμž¬μ§€ | |

```javascript
// κ²½κΈ°, μ†Œν•˜ ν‚€μ›Œλ“œ 검색 κ²°κ³Ό
[
{
name: 'μ†Œν•˜μ΄ˆλ“±ν•™κ΅λ³‘μ„€μœ μΉ˜μ›',
schoolCode: 'J100005055',
address: '경기도 κ΄‘λͺ…μ‹œ μ†Œν•˜1동',
},
{
name: 'μ†Œν•˜μ΄ˆλ“±ν•™κ΅',
schoolCode: 'J100001213',
address: '경기도 κ΄‘λͺ…μ‹œ μ†Œν•˜λ™',
},
{ name: 'μ†Œν•˜μ€‘ν•™κ΅', schoolCode: 'J100001194', address: '경기도 κ΄‘λͺ…μ‹œ μ†Œν•˜λ™' },
{
name: 'μ†Œν•˜κ³ λ“±ν•™κ΅',
schoolCode: 'J100000632',
address: '경기도 κ΄‘λͺ…μ‹œ μ†Œν•˜1동',
},
];
```

### 급식 데이터 ν˜•μ‹

`getMeal` λ°˜ν™˜ 데이터 ν˜•μ‹μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

| Key | Value | λΉ„κ³  |
| :----- | :--------------: | :------------------------------------------------ |
| 1 ~ 31 | ν•΄λ‹Ή λ‚ μ§œμ˜ 급식 | 급식이 μ—†λŠ” 경우 option.default κ°’ ν˜Ήμ€ 빈 λ¬Έμžμ—΄ |
| year | 쑰회 년도 | |
| month | 쑰회 달 | |
| day | 였늘 λ‚ μ§œ | μ‚¬μš©μž μ§€μ • 년도/월이 이번 달이 μ•„λ‹Œ 경우 0 |
| today | 였늘 급식 | 급식이 μ—†λŠ” 경우 κΈ°λ³Έ 급식 κ°’ |

```javascript
{
'1': '[쀑식]\nλ°œμ•„ν˜„λ―Έλ°₯\nλ―Έμ—­κ΅­5.6.9....', // μ΄λ²ˆλ‹¬ 1일 메뉴
'2': '[쀑식]\nμ–Όκ°ˆμ΄λœμž₯무침5.6.\nμΉΌμŠ˜μ°ΉμŒ€....', // μ΄λ²ˆλ‹¬ 2일 메뉴
'3': '[쀑식]\nνˆ¬μ›€λ°”νŒŒμŠ€νƒ€(주식)1.2.5.6.9.13.15.\n....', // μ΄λ²ˆλ‹¬ 3일 메뉴
'4': '', // 급식이 없을 경우 option.default κ°’ ν˜Ήμ€ 빈 λ¬Έμžμ—΄
'5': '',
...
'year': 2018, // 이번 년도
'month': 5, // 이번 달
'day': 3, // 였늘 λ‚ μ§œ
'today': '[쀑식]\nνˆ¬μ›€λ°”νŒŒμŠ€νƒ€(주식)1.2.5.6.9.13.15.\n....' // 였늘 메뉴
}
```

### 학사일정 데이터 ν˜•μ‹

`getCalendar` λ°˜ν™˜ 데이터 ν˜•μ‹μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

| Key | Value | λΉ„κ³  |
| :----- | :--------------: | :------------------------------------------------ |
| 1 ~ 31 | ν•΄λ‹Ή λ‚ μ§œμ˜ 일정 | 일정이 μ—†λŠ” 경우 option.default κ°’ ν˜Ήμ€ 빈 λ¬Έμžμ—΄ |
| year | 쑰회 년도 | |
| month | 쑰회 달 | |
| day | 였늘 λ‚ μ§œ | μ‚¬μš©μž μ§€μ • 년도/월이 이번 달이 μ•„λ‹Œ 경우 0 |
| today | 였늘 급식 | 일정이 μ—†λŠ” 경우 κΈ°λ³Έ 일정 κ°’ |

```javascript
{
'1': '', // 이번 달 1일의 일정
'2': '', // 일정이 없을 경우 option.default κ°’ ν˜Ήμ€ 빈 λ¬Έμžμ—΄
'3': '',
'4': 'κ°œκ΅κΈ°λ…μΌ', // 4일 일정
'5': '',
'6': '',
'7': 'λŒ€μ²΄κ³΅νœ΄μΌ',
...
'year': 2018,
'month': 5 // 이번 달
'day': 4, // 였늘 λ‚ μ§œ
'today': 'κ°œκ΅κΈ°λ…μΌ' // 였늘의 일정
}
```

## 문제 μ‹ κ³ 

v3 미만의 버전을 μ‚¬μš©ν•˜μ‹œλŠ” 경우 ꡐ윑청 ν™ˆνŽ˜μ΄μ§€μ˜ 리뉴얼 λ“±μ˜ 문제둜 νŒŒμ‹±μ΄ λΆˆκ°€λŠ₯ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. v3 이상 μ‚¬μš©μ„ ꢌμž₯ν•˜λ©°, λ¬Έμ œκ°€ λ°œμƒν•  경우 [이슈](https://github.com/leegeunhyeok/school-kr/issues)λ₯Ό λ‚¨κ²¨μ£Όμ‹œλ©΄ μ΅œλŒ€ν•œ λΉ λ₯΄κ²Œ μˆ˜μ •ν•˜μ—¬ λ°˜μ˜ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

## 변경사항

- `3.1.2`
- [Issue #26](https://github.com/leegeunhyeok/school-kr/issues/25) 3μ›” μ΄μ „μ˜ 학사일정을 μ œλŒ€λ‘œ λΆˆλŸ¬μ˜€μ§€ λͺ»ν•˜λ˜ 문제 μˆ˜μ • - Thanks to [cjaewon](https://github.com/cjaewon)
- `3.1.1`
- [Issue #19](https://github.com/leegeunhyeok/school-kr/issues/19) μ„œλ‘œ λ‹€λ₯Έ μ§€μ—­μ˜ 학ꡐ 데이터λ₯Ό 뢈러올 경우 λ°œμƒν•˜λ˜ 문제 μˆ˜μ • (검색, 급식, 곡지 λͺ¨λ‘ 해당함)
- 개발 μ˜μ‘΄μ„± λͺ¨λ“ˆ μ—…λ°μ΄νŠΈ
- `3.1.0`
- [Issue #9](https://github.com/leegeunhyeok/school-kr/issues/9) μ„Έμ…˜ κ΄€λ ¨ 둜직 κ°œμ„  (확인 ν•„μš”)
- [Issue #16](https://github.com/leegeunhyeok/school-kr/issues/16) νƒ€μž…μŠ€ν¬λ¦½νŠΈ 지원(d.ts μΆ”κ°€) - Thanks to [cjaewon](https://github.com/cjaewon)
- ESLint ꡬ성 μΆ”κ°€ 및 μ½”λ“œ μŠ€νƒ€μΌ μˆ˜μ •
- `3.0.3`
- [Issue #15](https://github.com/leegeunhyeok/school-kr/issues/15) λͺ¨λ“ˆμ„ 뢈러올 수 μ—†λ˜ 문제 μˆ˜μ •
- `3.0.2`
- [Issue #11](https://github.com/leegeunhyeok/school-kr/issues/11), [Issue #14](https://github.com/leegeunhyeok/school-kr/issues/14) 1λ…„ 이전 데이터가 νŒŒμ‹±λ˜λ˜ 문제 μˆ˜μ •
- `3.0.1`
- [Issue #10](https://github.com/leegeunhyeok/school-kr/issues/10) ꡐ윑청 지역별 μ„Έμ…˜ μœ μ§€ν•˜λ„λ‘ μˆ˜μ •
- `3.0.0`
- node-school-kr -> school-kr둜 λͺ¨λ“ˆλͺ… λ³€κ²½
- HTTP μš”μ²­ μ½”λ“œλ₯Ό 기쑴의 requestμ—μ„œ λͺ¨λ‘ axios둜 λ³€κ²½
- νŽ˜μ΄μ§€ HTML νŒŒμ‹± λ°©μ‹μ—μ„œ API 데이터 μš”μ²­ λ°©μ‹μœΌλ‘œ 변경함에 따라 데이터 μˆ˜μ§‘ μ„±λŠ₯ κ°œμ„  - `μ•½ 25%`
- [Issue #2](https://github.com/leegeunhyeok/school-kr/issues/2) 학ꡐ 정보(μ½”λ“œ) 쑰회λ₯Ό μœ„ν•œ search λ©”μ†Œλ“œ μΆ”κ°€ - [μ°Έκ³ ](#method-schoolsearch)
- [Issue #6](https://github.com/leegeunhyeok/school-kr/issues/6) 1~2μ›” 데이터λ₯Ό μ‘°νšŒν•  경우 잘λͺ»λœ 데이터가 λ‚˜μ˜€λ˜ 문제 μˆ˜μ • - [μ°Έκ³ ](https://github.com/leegeunhyeok/school-kr/issues/6#issuecomment-575427817)
- 3.0.0 λΆ€ν„° μ‚¬μš©ν•˜μ§€ μ•ŠμŒ (Deprecated)
- `School.reset`
- `School.getTargetURL`
- 3.0.0에 λ§žλ„λ‘ λ¬Έμ„œ μˆ˜μ •, [Issue #7](https://github.com/leegeunhyeok/school-kr/issues/5) λ§ˆν¬λ‹€μš΄ ν˜•μ‹ μˆ˜μ •
- `2.2.2`
- [Issue #5](https://github.com/leegeunhyeok/school-kr/issues/5) λŒ€μ „ ꡐ윑청 URL 문제 μˆ˜μ •
- `2.2.1`
- [Issue #4](https://github.com/leegeunhyeok/school-kr/issues/4) 학사일정 κΈ°λ³Έκ°’ 였λ₯˜ μˆ˜μ •
- `2.2.0`
- [Issue #3](https://github.com/leegeunhyeok/school-kr/issues/3) κΈ°λ³Έκ°’ μ˜΅μ…˜ μΆ”κ°€
- `getMeal`, `getCalendar` μ˜΅μ…˜ ν˜ΈμΆœλ°©μ‹ μΆ”κ°€
- `2.1.2`
- [Issue #1](https://github.com/leegeunhyeok/school-kr/issues/1) 경뢁 ꡐ윑청 μ ‘μ†λ¬Έμ œ μˆ˜μ •
- 의쑴 라이브러리의 λ³΄μ•ˆ μ·¨μ•½μ„± μ—…λ°μ΄νŠΈ
- `2.1.1`
- 의쑴 라이브러리의 λ³΄μ•ˆ μ·¨μ•½μ„± μ—…λ°μ΄νŠΈ
- `2.1.0`
- 급식 / 학사일정 데이터λ₯Ό 뢈러올 λ•Œ 년도와 월을 μ§€μ •ν•  수 μžˆλ„λ‘ κΈ°λŠ₯ μΆ”κ°€
- 급식 / 학사일정 데이터에 년도 μΆ”κ°€
- README에 개발 λ¬Έμ„œ μΆ”κ°€ μž‘μ„±
- `2.0.1`
- 의쑴 라이브러리의 λ³΄μ•ˆ μ·¨μ•½μ„± μ—…λ°μ΄νŠΈ
- `2.0.0`
- β€» κΈ°μ‘΄ 버전과 `ν˜Έν™˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.` (μ•„λž˜ 변경사항을 확인 ν•΄μ£Όμ„Έμš”)
- Type, Region ν”„λ‘œνΌν‹° 값을 Symbol 기반으둜 κ΅¬ν˜„
- Type, Region μ ‘κ·Ό 방식이 쑰금 λ³€κ²½ 됨, [μ°Έκ³ 1](#학ꡐ-μ’…λ₯˜), [μ°Έκ³ 2](#ꡐ윑청-κ΄€ν• -μ§€μ—­)
- μ—λŸ¬ λ°œμƒ 상황 μΆ”κ°€ 및 κΈ°μ‘΄ μ—λŸ¬ λ©”μ‹œμ§€ μˆ˜μ •
- getNotice λ©”μ†Œλ“œλͺ… λ³€κ²½ -> `getCalendar`
- getTargetURL λ©”μ†Œλ“œ μΆ”κ°€ (νŒŒμ‹±ν•  νƒ€κ²Ÿ URL을 λ°˜ν™˜ν•©λ‹ˆλ‹€, [μ°Έκ³ ](#νƒ€κ²Ÿ-URL-쑰회))
- 예제 및 README λ‚΄μš© μˆ˜μ •μ‚¬ν•­μ— 맞게 μ—…λ°μ΄νŠΈ / λ‚΄μš© μΆ”κ°€
- μ½”λ“œ 주석 μ—…λ°μ΄νŠΈ
- `1.0.1`
- NPM μ €μž₯μ†Œμ™€ 이름 λ™μΌν•˜κ²Œ Git μ €μž₯μ†Œ 이름 λ³€κ²½ (이미 μ‚¬μš©μ€‘μΈ 이름)
- node-school -> node-school-kr
- README λ¬Έμ„œ λ‚΄μš© μˆ˜μ •
- μ—λŸ¬ λ©”μ‹œμ§€ ꡬ뢄 문자 μΆ”κ°€ (급식 νŒŒμ‹± μ—λŸ¬μΈμ§€ 학사일정 νŒŒμ‹± μ—λŸ¬μΈμ§€ ꡬ뢄)
- `1.0.0` - 첫 번째 릴리즈!

## λΌμ΄μ„ΌμŠ€

[MIT](https://github.com/leegeunhyeok/school-kr/blob/master/LICENSE)

## 정보

λ³Έ ν”„λ‘œμ νŠΈλŠ” [School API](https://github.com/agemor/school-api)λ₯Ό μ°Έκ³ ν•˜μ—¬ Node.js ν™˜κ²½μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μƒˆλ‘œ ν¬νŒ…ν•œ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€.
`3.0.0` 버전뢀터 μ™„μ „νžˆ μƒˆλ‘­κ²Œ κ°œλ°œλ˜μ–΄ μ„±λŠ₯ 및 μ•ˆμ •μ„±μ΄ 크게 κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.