Twinte内部で利用するために開発された
KdB(筑波大学教育課程編成支援システム 開設科目一覧)
のパーサー。
KDBからCSVファイルをダウンロードする。
import { donwloadKDB } from 'twinte-parser'
const csv = await downloadKDB()
KdBから取得したcsvをオブジェクトに変換する。
import parseKDB from 'twinte-parser'
// or
import { parseKDB } from 'twinte-parser'
const courses = parseKDB(csv)
enum Module {
SpringA = '春A',
SpringB = '春B',
SpringC = '春C',
FallA = '秋A',
FallB = '秋B',
FallC = '秋C',
SummerVacation = '夏季休業中',
SpringVacation = '春季休業中',
Annual = '通年',
Unknown = '不明'
}
enum Day {
Sun = '日',
Mon = '月',
Tue = '火',
Wed = '水',
Thu = '木',
Fri = '金',
Sat = '土',
Intensive = '集中',
Appointment = '応談',
AnyTime = '随時',
Unknown = '不明'
}
interface Course {
code: string
name: string
credits: number
overview: string
remarks: string
type: number
recommendedGrade: number[]
schedules: {
module: Module
day: Day
period: number
room: string
}[]
instructor: string
lastUpdate: Date
error: boolean
}
ここでschedules
が配列になっていることに注意。
例えば春AB・月曜1限・3A201の授業があった場合、
{
code: 'XXXXXXX',
name: "名前",
schedules: [
{
module: "春A",
day: "月",
period: 1,
room: "3A201"
},
{
module: "春B",
day: "月",
period: 1,
room: "3A201"
}
]
}
のようになる。これはモジュールごとに教室や開講時間が変更になる場合に対応するためである。
MIT