Mercurial > hg > Members > anatofuz > lectable
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 |
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 } |