Skip to content

πŸ“˜πŸ•˜ μ»΄μ‹œκ°„ μ•Œλ¦¬λ―Έ μ‹œκ°„ν‘œ νŒŒμ‹± 라이브러리 μž…λ‹ˆλ‹€.

License

Notifications You must be signed in to change notification settings

UrWrstNightmare/comcigan-parser

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

comcigan-parser

πŸ“˜πŸ•˜ μ»΄μ‹œκ°„ μ•Œλ¦¬λ―Έ μ‹œκ°„ν‘œ νŒŒμ‹± 라이브러리 μž…λ‹ˆλ‹€.
λ³Έ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ»΄μ‹œκ°„ ν™ˆνŽ˜μ΄μ§€μ—μ„œ λ“±λ‘λœ ν•™κ΅μ˜ μ‹œκ°„ν‘œ 데이터λ₯Ό νŒŒμ‹±ν•˜μ—¬ μ œκ³΅ν•©λ‹ˆλ‹€.

npm version

JavaScript Style Guide

κΈ°λŠ₯

  • 학ꡐλͺ… μž…λ ₯ ν›„ λ°”λ‘œ μ‚¬μš© κ°€λŠ₯
  • ν•™κΈ‰ μ‹œκ°„ν‘œ 데이터 제곡

정보

μ•„λž˜ 두 μ±—λ΄‡μ—μ„œ μ‚¬μš©ν•˜λ˜ μ‹œκ°„ν‘œ νŒŒμ‹± κΈ°λŠ₯을 라이브러리둜 κ°œλ°œν•˜μ˜€μŠ΅λ‹ˆλ‹€.

μ»΄μ‹œκ°„ μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” ν•™κ΅μ˜ μ‹œκ°„ν‘œ 데이터λ₯Ό μ‰½κ²Œ μˆ˜μ§‘ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ»΄μ‹œκ°„μΈ‘μ˜ μ†ŒμŠ€μ½”λ“œ λ³€κ²½μœΌλ‘œ 인해 μ‹œκ°„ν‘œ 데이터 νŒŒμ‹±μ΄ λΆˆκ°€λŠ₯ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œκ°€ λ°œμƒν•  경우 μ—¬κΈ°λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”

(주의!) λ³Έ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” λΉ„κ³΅μ‹μ μœΌλ‘œ μ»΄μ‹œκ°„ μ„œλΉ„μŠ€μ˜ 데이터λ₯Ό νŒŒμ‹±ν•˜λ©°, 상업적인 μš©λ„λ‘œ μ‚¬μš©ν•˜λ‹€ λ¬Έμ œκ°€ λ°œμƒν•  경우 μ±…μž„μ„ 지지 μ•ŠμŠ΅λ‹ˆλ‹€.

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

npm i comcigan-parser

개발 λ¬Έμ„œ

Timetable

Timetable 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

const Timetable = require('comcigan-parser')
new Timetable()

(Method) Timetable.init

μΈμŠ€ν„΄μŠ€ 정보λ₯Ό μ΄ˆκΈ°ν™” ν•©λ‹ˆλ‹€.
μ˜΅μ…˜μ„ μΆ”κ°€ν•˜μ—¬ μ‚¬μš©μž 섀정을 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.

Parameter Type Required
option any X

μ˜΅μ…˜ μ •λ³΄λŠ” μ•„λž˜ ν‘œ μ°Έκ³ 

Option Value default
firstNames array ['κΉ€', 'λ°•', '이', '솑']
maxGrade number 3
timetableThreshold number 30000
  • firstNames - ꡐ사 이름 μΆ”μΆœ μ‹œ μ°Έκ³ ν•  성씨 λͺ©λ‘μž…λ‹ˆλ‹€.
  • maxGrade - μ΅œλŒ€ 학년을 μ§€μ •ν•©λ‹ˆλ‹€.
  • timetableThreshold - μ‹œκ°„ν‘œ 데이터 μž„κ³„κ°’
    • 응닡 λ°μ΄ν„°λŠ” [0, 0, 0, 0, 0], [0, 10324, 52201, 8909, 0] 이와 같은 ν˜•μ‹μœΌλ‘œ μˆ˜μ§‘λ˜λ©° 각 μš”μ†Œλ₯Ό λͺ¨λ‘ λ”ν•œ 값이 μ§€μ •ν•œ μž„κ³„κ°’μ„ λ„˜μ„ 경우 ν•΄λ‹Ή 값을 μ‹œκ°„ν‘œ λ°μ΄ν„°λ‘œ μ‚¬μš©ν•¨
    • λΉ„μ–΄μžˆλŠ” 데이터 ([0, 0, 0, 0, 0])λ₯Ό ν•„ν„°λ§ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

Return - Promise<any>

const timetable = new Timetable()
timetable.init(option)

(Method) Timetable.setSchool

μ‹œκ°„ν‘œλ₯Ό 뢈러올 학ꡐλ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.

μ»΄μ‹œκ°„μ— λ“±λ‘λœ 학ꡐ가 아닐 경우 κ²€μƒ‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Parameter Type Required
keyword string O

Return - Promise<any>

timetable.search(keyword)

(Method) Timetable.getTimetable

μ§€μ •ν•œ ν•™κ΅μ˜ μ‹œκ°„ν‘œ 데이터λ₯Ό λΆˆλŸ¬μ˜΅λ‹ˆλ‹€.

Return - Promise<any>

timetable.getTimetable()

(Method) Timetable.getClassTime

각 κ΅μ‹œλ³„ μˆ˜μ—… μ‹œμž‘/μ’…λ£Œ μ‹œκ°„μ •λ³΄λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

Return - Array<string>

timetable.getClassTime()

μ‚¬μš© 방법

Timetable μΈμŠ€ν„΄μŠ€ 생성

comcigan-parser λͺ¨λ“ˆμ„ 뢈러온 ν›„ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
생성 ν›„ λ°˜λ“œμ‹œ init(option)λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ΄ˆκΈ°ν™” ν•©λ‹ˆλ‹€.

const Timetable = require('comcigan-parser')
const timetable = new Timetable()

timetable.init(option).then(() => {
  // μ΄ˆκΈ°ν™” μ™„λ£Œ..
})

학ꡐ μ„€μ •

μ»΄μ‹œκ°„μ— λ“±λ‘λ˜μ–΄μžˆλŠ” 학ꡐλ₯Ό κ²€μƒ‰ν•˜κ³  μΈμŠ€ν„΄μŠ€μ— λ“±λ‘ν•©λ‹ˆλ‹€.

학ꡐ가 μ—¬λŸ¬κ°œ μ‘°νšŒλ˜κ±°λ‚˜ 검색 κ²°κ³Όκ°€ μ—†λŠ” 경우 μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

timetable.setSchool('κ΄‘λͺ…κ²½μ˜νšŒκ³„κ³ λ“±ν•™κ΅').then(() => {
  // 학ꡐ μ„€μ • μ™„λ£Œ..
})

μ‹œκ°„ν‘œ 쑰회

λ“±λ‘ν•œ ν•™κ΅μ˜ μ‹œκ°„ν‘œ 데이터λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.

timetable.getTimetable().then(result => {
  console.log(result)

  // result[ν•™λ…„][반][μš”μΌ][κ΅μ‹œ]
  // μš”μΌ: (μ›”: 0 ~ 금: 4)
  // κ΅μ‹œ: 1κ΅μ‹œ(0), 2κ΅μ‹œ(1), 3κ΅μ‹œ(2)..
  // 3ν•™λ…„ 8반 ν™”μš”μΌ 2κ΅μ‹œ μ‹œκ°„ν‘œ
  console.log(result[3][8][1][1])
})

μˆ˜μ—…μ‹œκ°„ 정보 쑰회

const time = timetable.getClassTime()
console.log(time)

/*
[ '1(09:10)',
  '2(10:10)',
  '3(11:10)',
  '4(12:10)',
  '5(13:50)',
  '6(14:50)',
  '7(15:50)',
  '8(16:50)' ]
*/

μ‚¬μš© 예제

const Timetable = require('comcigan-parser')
const timetable = new Timetable()

const test = async () => {
  await timetable.init()
  await timetable.setSchool('κ΄‘λͺ…κ²½μ˜νšŒκ³„κ³ λ“±ν•™κ΅')

  // 전ꡐ μ‹œκ°„ν‘œ 정보 쑰회
  const result = await timetable.getTimetable()
  console.log(result)

  // 각 κ΅μ‹œλ³„ μˆ˜μ—… μ‹œμž‘/μ’…λ£Œ μ‹œκ°„ 정보 쑰회
  const time = timetable.getClassTime()
  console.log(time)
}

데이터 ν˜•μ‹

μ‹œκ°„ν‘œ 데이터

{
  "1": {
    // 1ν•™λ…„
    "1": [ // 1반
      [ // μ›”μš”μΌ μ‹œκ°„ν‘œ
        {
          grade: 1,                   // ν•™λ…„
          class: 1,                   // 반
          weekday: 1,                 // μš”μΌ (1: μ›” ~ 5: 금)
          weekdayString: 'μ›”',        // μš”μΌ λ¬Έμžμ—΄
          class_time: 1,              // κ΅μ‹œ
          code: '5644',               // μˆ˜μ—… μ½”λ“œ
          teacher: '이희*',           // μ„ μƒλ‹˜ 성함
          subject: 'μ‹€μš©λΉ„μ¦ˆλ‹ˆμŠ€μ˜μ–΄'  // κ³Όλͺ©λͺ…
        },
        {
          grade: 1,
          class: 1,
          weekday: 1,
          weekdayString: 'μ›”',
          class_time: 2,
          code: '1606',
          teacher: 'κ°•μ—°*',
          subject: 'μ§„λ‘œν™œλ™'
        }
      ],
      [ν™”μš”μΌμ‹œκ°„ν‘œ],
      [μˆ˜μš”μΌμ‹œκ°„ν‘œ],
      [λͺ©μš”μΌμ‹œκ°„ν‘œ],
      [κΈˆμš”μΌμ‹œκ°„ν‘œ]
    ],
    "2": [ // 2반
      [μ›”μš”μΌμ‹œκ°„ν‘œ],
      [ν™”μš”μΌμ‹œκ°„ν‘œ],
      [μˆ˜μš”μΌμ‹œκ°„ν‘œ],
      [λͺ©μš”μΌμ‹œκ°„ν‘œ],
      [κΈˆμš”μΌμ‹œκ°„ν‘œ]
    ],
    "3": [
      [], [], [], [], []
    ],
    ...
  },
  "2": {
    // 2ν•™λ…„
  },
  "3": {
    // 3ν•™λ…„
  }
}
timetable.getTimetable().then(result => {
  // 3ν•™λ…„ 8반 μ‹œκ°„ν‘œ (μ›” ~ 금)
  console.log(result[3][8])

  // 1ν•™λ…„ 1반 μ›”μš”μΌ μ‹œκ°„ν‘œ
  console.log(result[1][1][0])

  // 2ν•™λ…„ 5반 κΈˆμš”μΌ 3κ΅μ‹œ μ‹œκ°„ν‘œ 
  console.log(result[2][5][4][2])
})

μˆ˜μ—…μ‹œκ°„ 정보

[ '1(09:10)',
  '2(10:10)',
  '3(11:10)',
  '4(12:10)',
  '5(13:50)',
  '6(14:50)',
  '7(15:50)',
  '8(16:50)' ]

문제 μ‹ κ³ 

μ‹œκ°„ν‘œ νŒŒμ‹±μ΄ λ˜μ§€ μ•Šκ±°λ‚˜ λ¬Έμ œκ°€ λ°œμƒν•œ 경우 이슈λ₯Ό λ‚¨κ²¨μ£Όμ„Έμš”.

변경사항

  • 0.2.0
    • getClassTime λ©”μ†Œλ“œ μΆ”κ°€ (각 κ΅μ‹œλ³„ μˆ˜μ—… μ‹œμž‘/μ’…λ£Œ μ‹œκ°„ 정보) - μ°Έμ‘°
  • 0.1.1
    • tempSave μ˜΅μ…˜ 문제 μˆ˜μ •
  • 0.1.0
    • tempSave μ˜΅μ…˜ μ‚­μ œ
    • μ‹œκ°„ν‘œ μΆ”μΆœ 데이터 μž„κ³„κ°’ μ˜΅μ…˜ μΆ”κ°€ (μžμ„Έν•œ 사항은 μ—¬κΈ° μ°Έμ‘°)
  • 0.0.3
    • 데이터 νŒŒμ‹± 문제 μˆ˜μ •
  • 0.0.2
    • 개발 λ¬Έμ„œ μΆ”κ°€
    • init의 κΈ°λ³Έ μ˜΅μ…˜ 문제 μˆ˜μ •
  • 0.0.1 - 첫 번째 릴리즈!

About

πŸ“˜πŸ•˜ μ»΄μ‹œκ°„ μ•Œλ¦¬λ―Έ μ‹œκ°„ν‘œ νŒŒμ‹± 라이브러리 μž…λ‹ˆλ‹€.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%