annotate lectable/getSyllabus.go @ 0:5191dd198bf4

add convertSyllabus method
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 30 Mar 2020 20:40:42 +0900
parents
children 1f47625c6948
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 package lectable
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 import (
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 "bufio"
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 "os"
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 "strings"
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 "github.com/pkg/errors"
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 )
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 const (
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 monday int = iota
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 tuesday
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 wednesday
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 thursday
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 friday
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 )
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 type lectureDay struct {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 dayOfWeek int
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 period int
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 lastPeriod int
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 hasLast bool
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 type lecture struct {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 id string
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 name string
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 day *lectureDay
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 teacher string
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 func getSyllabus(lectureID, filePath string) (*lecture, error) {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 file, err := os.Open(filePath)
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 if err != nil {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 return nil, errors.Wrap(err, "failed open html file")
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 scanner := bufio.NewScanner(file)
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 var lec lecture
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 lec.id = lectureID
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 dayPeriodID := "ctl00_phContents_Detail_lbl_day_period\">"
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 lectureNameID := "ctl00_phContents_Detail_lbl_lbl_lct_name_double\">"
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 teacherNameID := "ctl00_phContents_Detail_lbl_syl_staff_name_double\">"
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 endSpan := "</span>"
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 for scanner.Scan() {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 line := scanner.Text()
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 // day Period
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 if i := strings.Index(line, dayPeriodID); i >= 0 {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 if j := strings.Index(line, endSpan); j >= 0 {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 i += len(dayPeriodID)
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 day := line[i:j]
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 if k := strings.Index(day, "~"); k >= 0 {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 lec.day.hasLast = true
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 } else {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 lec.day.hasLast = false
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 continue
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 // lecture name
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 if i := strings.Index(line, lectureNameID); i >= 0 {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 if j := strings.Index(line, endSpan); j >= 0 {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 i += len(lectureNameID)
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 lec.name = line[i:j]
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 continue
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 //teacher name
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 if i := strings.Index(line, teacherNameID); i >= 0 {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 if j := strings.Index(line, endSpan); j >= 0 {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 i += len(teacherNameID)
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 lec.teacher = line[i:j]
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 break
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 file.Close()
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 return &lec, nil
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 }
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 func kanjiday2int(kanjiDay string) (int, error) {
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 return 0, nil
5191dd198bf4 add convertSyllabus method
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 }