# HG changeset patch # User anatofuz # Date 1585830264 -32400 # Node ID 1aa824c6b319c44598f7349d0441674ba1d49c45 # Parent caf842947befca174a9a5b378e215384c65acbfe ... diff -r caf842947bef -r 1aa824c6b319 2020/previous/jq_dfpdf.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2020/previous/jq_dfpdf.json Thu Apr 02 21:24:24 2020 +0900 @@ -0,0 +1,581 @@ +[ + { + "ID": "617009001", + "Name": "プロジェクトデザイン", + "Day": [ + 2 + ], + "DayOfWeek": 3, + "Teacher": "山田 孝治", + "Grades": [ + 2 + ], + "Place": "工1-321" + }, + { + "ID": "610038001", + "Name": "技術英語Ⅲ", + "Day": [ + 1 + ], + "DayOfWeek": 3, + "Teacher": "小野 尋子", + "Grades": [ + 4 + ], + "Place": "共4-505" + }, + { + "ID": "R00079001", + "Name": "ソフトウェアシステム論", + "Day": [ + 4 + ], + "DayOfWeek": 3, + "Teacher": "河野 真治", + "Grades": [ + 5 + ], + "Place": "工1-321" + }, + { + "ID": "101501091", + "Name": "大学英語 09組", + "Day": [ + 2 + ], + "DayOfWeek": 0, + "Teacher": "宮城和文", + "Grades": [ + 1 + ], + "Place": "共3-403" + }, + { + "ID": "101501091", + "Name": "大学英語 09組", + "Day": [ + 2 + ], + "DayOfWeek": 3, + "Teacher": "宮城和文", + "Grades": [ + 1 + ], + "Place": "共3-201" + }, + { + "ID": "617015001", + "Name": "ディジタル回路", + "Day": [ + 4 + ], + "DayOfWeek": 0, + "Teacher": "吉田 たけお", + "Grades": [ + 2 + ], + "Place": "工1-322" + }, + { + "ID": "617038001", + "Name": "ソフトウエア開発演習III", + "Day": [ + 3 + ], + "DayOfWeek": 2, + "Teacher": "河野 真治", + "Grades": [ + 3 + ], + "Place": "工1-321" + }, + { + "ID": "R00087001", + "Name": "知能ロボット論", + "Day": [ + 5 + ], + "DayOfWeek": 3, + "Teacher": "山田 孝治", + "Grades": [ + 5 + ], + "Place": "地創棟508" + }, + { + "ID": "100826081", + "Name": "微分積分学ST(スタンダードコース)Ⅰ 08組", + "Day": [ + 3 + ], + "DayOfWeek": 2, + "Teacher": "林正史", + "Grades": [ + 1 + ], + "Place": "共1-217" + }, + { + "ID": "R00409001", + "Name": "システムアーキテクチャ論", + "Day": [ + 1 + ], + "DayOfWeek": 2, + "Teacher": "和田 知久", + "Grades": [ + 5 + ], + "Place": "地創棟503" + }, + { + "ID": "617022001", + "Name": "ソフトウェア工学", + "Day": [ + 4 + ], + "DayOfWeek": 2, + "Teacher": "河野 真治", + "Grades": [ + 3 + ], + "Place": "工1-321" + }, + { + "ID": "610013071", + "Name": "キャリアデザイン 05組", + "Day": [ + 4, + 5 + ], + "DayOfWeek": 1, + "Teacher": "遠藤 聡志", + "Grades": [ + 3 + ], + "Place": "工1-322" + }, + { + "ID": "R01423001", + "Name": "プロジェクト・マネジメント演習", + "Day": [ + 5 + ], + "DayOfWeek": 4, + "Teacher": "名嘉村 盛和", + "Grades": [ + 5 + ], + "Place": "地創棟508" + }, + { + "ID": "610001041", + "Name": "キャリアデザイン入門 04組", + "Day": [ + 5 + ], + "DayOfWeek": 1, + "Teacher": "清水 肇, 渡嘉敷 健", + "Grades": [ + 1 + ], + "Place": "工1-222" + }, + { + "ID": "617006001", + "Name": "情報ネットワークⅠ", + "Day": [ + 1 + ], + "DayOfWeek": 2, + "Teacher": "長田 智和", + "Grades": [ + 2 + ], + "Place": "工1-322" + }, + { + "ID": "617003011", + "Name": "知能情報実験Ⅰ 01組", + "Day": [ + 3, + 4 + ], + "DayOfWeek": 1, + "Teacher": "吉田 たけお, 宮里 智樹, 赤嶺 有平, 國田樹", + "Grades": [ + 2 + ], + "Place": "地創棟508" + }, + { + "ID": "610016001", + "Name": "技術英語Ⅰ", + "Day": [ + 1 + ], + "DayOfWeek": 4, + "Teacher": "比嘉 広樹", + "Grades": [ + 3 + ], + "Place": "工4-111" + }, + { + "ID": "617039001", + "Name": "ICT実践英語I", + "Day": [ + 1 + ], + "DayOfWeek": 2, + "Teacher": "比嘉健伸", + "Grades": [ + 4 + ], + "Place": "共4-305" + }, + { + "ID": "617003021", + "Name": "知能情報実験Ⅰ 02組", + "Day": [ + 3, + 4 + ], + "DayOfWeek": 4, + "Teacher": "吉田 たけお, 宮里 智樹, 赤嶺 有平, 國田樹", + "Grades": [ + 2 + ], + "Place": "地創棟508" + }, + { + "ID": "610001031", + "Name": "キャリアデザイン入門 03組", + "Day": [ + 5 + ], + "DayOfWeek": 1, + "Teacher": "清水 肇, 渡嘉敷 健", + "Grades": [ + 1 + ], + "Place": "工1-221" + }, + { + "ID": "101501081", + "Name": "大学英語 08組", + "Day": [ + 2 + ], + "DayOfWeek": 0, + "Teacher": "富里明美", + "Grades": [ + 1 + ], + "Place": "共3-205" + }, + { + "ID": "101501081", + "Name": "大学英語 08組", + "Day": [ + 2 + ], + "DayOfWeek": 3, + "Teacher": "富里明美", + "Grades": [ + 1 + ], + "Place": "共3-403" + }, + { + "ID": "R00084001", + "Name": "知能システム論", + "Day": [ + 2 + ], + "DayOfWeek": 2, + "Teacher": "姜 東植", + "Grades": [ + 5 + ], + "Place": "地創棟504" + }, + { + "ID": "610001011", + "Name": "キャリアデザイン入門 01組", + "Day": [ + 5 + ], + "DayOfWeek": 1, + "Teacher": "清水 肇, 渡嘉敷 健", + "Grades": [ + 1 + ], + "Place": "工1-221" + }, + { + "ID": "610012071", + "Name": "技術者の倫理 03組", + "Day": [ + 1 + ], + "DayOfWeek": 3, + "Teacher": "和田 知久", + "Grades": [ + 1 + ], + "Place": "工1-221" + }, + { + "ID": "617021001", + "Name": "知能情報実験III", + "Day": [ + 3, + 4 + ], + "DayOfWeek": 3, + "Teacher": "國田樹, 全教員", + "Grades": [ + 3 + ], + "Place": "地創棟508" + }, + { + "ID": "100408031", + "Name": "物理学Ⅰ 03組", + "Day": [ + 2 + ], + "DayOfWeek": 2, + "Teacher": "深水 孝則", + "Grades": [ + 4 + ], + "Place": "共1-118" + }, + { + "ID": "617023001", + "Name": "数理計画とアルゴリズム", + "Day": [ + 2 + ], + "DayOfWeek": 2, + "Teacher": "長山 格", + "Grades": [ + 3 + ], + "Place": "工1-321" + }, + { + "ID": "617028001", + "Name": "ヒューマンコンピュータインタラクション", + "Day": [ + 2 + ], + "DayOfWeek": 1, + "Teacher": "赤嶺 有平", + "Grades": [ + 3 + ], + "Place": "工2-313" + }, + { + "ID": "610042001", + "Name": "情報科教育法B", + "Day": [ + 1 + ], + "DayOfWeek": 3, + "Teacher": "岡﨑 威生", + "Grades": [ + 4 + ], + "Place": "工1-509" + }, + { + "ID": "610000071", + "Name": "工学基礎演習 06組", + "Day": [ + 3, + 4 + ], + "DayOfWeek": 0, + "Teacher": "國田樹, 遠藤 聡志", + "Grades": [ + 1 + ], + "Place": "工1-321" + }, + { + "ID": "R01672001", + "Name": "データマイニング論", + "Day": [ + 4 + ], + "DayOfWeek": 1, + "Teacher": "當間 愛晃", + "Grades": [ + 5 + ], + "Place": "工1-321" + }, + { + "ID": "610002071", + "Name": "工業数学Ⅰ 07組", + "Day": [ + 3, + 4 + ], + "DayOfWeek": 0, + "Teacher": "山田 孝治", + "Grades": [ + 1 + ], + "Place": "工1-321" + }, + { + "ID": "617005001", + "Name": "アルゴリズムとデータ構造", + "Day": [ + 2 + ], + "DayOfWeek": 2, + "Teacher": "名嘉村 盛和", + "Grades": [ + 2 + ], + "Place": "工1-322" + }, + { + "ID": "610019001", + "Name": "産業社会学原論Ⅰ", + "Day": [ + 5 + ], + "DayOfWeek": 4, + "Teacher": "玉城 史朗", + "Grades": [ + 3 + ], + "Place": "工1-322" + }, + { + "ID": "610004071", + "Name": "プログラミングⅠ", + "Day": [ + 1 + ], + "DayOfWeek": 4, + "Teacher": "當間 愛晃", + "Grades": [ + 1 + ], + "Place": "工1-321" + }, + { + "ID": "610005071", + "Name": "基礎数学Ⅰ 06組", + "Day": [ + 3 + ], + "DayOfWeek": 3, + "Teacher": "岡﨑 威生, 國田樹", + "Grades": [ + 1 + ], + "Place": "工1-321" + }, + { + "ID": "610001021", + "Name": "キャリアデザイン入門 02組", + "Day": [ + 5 + ], + "DayOfWeek": 1, + "Teacher": "清水 肇, 渡嘉敷 健", + "Grades": [ + 1 + ], + "Place": "工1-222" + }, + { + "ID": "617000001", + "Name": "プログラミング演習Ⅰ", + "Day": [ + 2 + ], + "DayOfWeek": 4, + "Teacher": "赤嶺 有平", + "Grades": [ + 1 + ], + "Place": "工1-321" + }, + { + "ID": "617007001", + "Name": "コンピュータシステム", + "Day": [ + 2 + ], + "DayOfWeek": 0, + "Teacher": "姜 東植", + "Grades": [ + 2 + ], + "Place": "工1-321" + }, + { + "ID": "617016001", + "Name": "情報処理技術概論", + "Day": [ + 3 + ], + "DayOfWeek": 0, + "Teacher": "宮里 智樹", + "Grades": [ + 2 + ], + "Place": "工1-322" + }, + { + "ID": "R01768001", + "Name": "UI/UX論", + "Day": [ + 5 + ], + "DayOfWeek": 1, + "Teacher": "赤嶺 有平", + "Grades": [ + 5 + ], + "Place": "工1-321" + }, + { + "ID": "617008001", + "Name": "データサイエンス基礎", + "Day": [ + 1, + 2 + ], + "DayOfWeek": 1, + "Teacher": "岡﨑 威生", + "Grades": [ + 2 + ], + "Place": "工1-321" + }, + { + "ID": "R01610011", + "Name": "科学者の倫理 01組", + "Day": [ + 5 + ], + "DayOfWeek": 0, + "Teacher": "當間 愛晃, 全教員", + "Grades": [ + 5 + ], + "Place": "工2-224" + } +] diff -r caf842947bef -r 1aa824c6b319 cmd_dumphtml.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmd_dumphtml.go Thu Apr 02 21:24:24 2020 +0900 @@ -0,0 +1,50 @@ +package lectable + +import ( + "context" + "errors" + "fmt" + "io" + "path/filepath" +) + +type cmdDumpHTML struct{} + +func (cdh *cmdDumpHTML) name() string { + return "dumphtml" +} + +func (cdh *cmdDumpHTML) description() string { + return "generate lectable html" +} + +func (cdh *cmdDumpHTML) run(ctx context.Context, argv []string, outStream, errStream io.Writer) error { + if len(argv) == 0 { + return errors.New("Usage: ./lectable dumphtml lecture.json") + } + teacherToURLMap, err := convertStaticTeacherToMap(filepath.Join("static_json", "teacher.json")) + if err != nil { + return err + } + dlfpdf, err := convertLec(argv[0]) + if err != nil { + return err + } + grlectures, err := convertdumpHTMLSTR(dlfpdf, *teacherToURLMap) + if err != nil { + return err + } + for doIndex, dayList := range grlectures.B1 { + fmt.Printf("doindex : %d\n", doIndex) + for i, v := range dayList { + fmt.Printf("index : %d\n", i) + if v == nil { + fmt.Println("nil") + continue + } + fmt.Println(*v) + } + } + //dumpHTML(grlectures, outStream) + return nil +} diff -r caf842947bef -r 1aa824c6b319 dumphtml.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dumphtml.go Thu Apr 02 21:24:24 2020 +0900 @@ -0,0 +1,156 @@ +package lectable + +import ( + "bufio" + "encoding/json" + "io" + "os" + "strings" +) + +/* +プロジェクトデザイン +山田 孝治 +工1-321 + +情報処理技術概論 +宮里 智樹 +工1-322 +*/ + +type teacherSTR struct { + name string + url string +} + +type TeacherFromJSON struct { + Teacher []string `json:"teacher"` +} + +type dumpHTMLSTR struct { + ID string + Name string + Teacher teacherSTR + Place string + IsSelect bool + NextTerm *dumpHTMLSTR +} + +type teacherNameToURL map[string]string + +func convertStaticTeacherToMap(jsonPath string) (*teacherNameToURL, error) { + f, err := os.Open(jsonPath) + if err != nil { + return nil, err + } + br := bufio.NewReader(f) + dec := json.NewDecoder(br) + var teacherFJson []TeacherFromJSON + err = dec.Decode(&teacherFJson) + if err != nil { + return nil, err + } + + tnametoURL := make(teacherNameToURL, len(teacherFJson)) + + for _, tcfj := range teacherFJson { + tnametoURL[tcfj.Teacher[0]] = tcfj.Teacher[1] + } + return &tnametoURL, nil +} + +func convertLec(jsonPath string) ([]Lec, error) { + f, err := os.Open(jsonPath) + if err != nil { + return nil, err + } + br := bufio.NewReader(f) + dec := json.NewDecoder(br) + var lecs []Lec + err = dec.Decode(&lecs) + if err != nil { + return nil, err + } + return lecs, nil +} + +/* + */ +/* +type dumpHTMLSTR struct { + ID string + Name string + Teacher teacherSTR + Place string + IsSelect bool + NextTerm *DumpLectureFPDF +} +*/ + +type GradeLecturesArray [6][5][5]*dumpHTMLSTR + +type GradeLectures struct { + B1 *[5][5]*dumpHTMLSTR //[ day of week ] [period] + B2 *[5][5]*dumpHTMLSTR //[ day of week ] [period] + B3 *[5][5]*dumpHTMLSTR //[ day of week ] [period] + B4 *[5][5]*dumpHTMLSTR //[ day of week ] [period] + M *[5][5]*dumpHTMLSTR //[ day of week ] [period] + OLD *[5][5]*dumpHTMLSTR //[ day of week ] [period] +} + +func convertdumpHTMLSTR(lecs []Lec, teacherToJSON teacherNameToURL) (*GradeLectures, error) { + glecturesArray := new(GradeLecturesArray) + for _, lec := range lecs { + grade := lec.Grades[0] //NOTE: now, grade elements is always one + grade-- + + teacherURL := teacherToJSON[lec.Teacher] + + lTeacher := teacherSTR{ + name: lec.Teacher, + url: teacherURL, + } + for _, day := range lec.Day { + dhstr := dumpHTMLSTR{ + ID: lec.ID, + Name: lec.Name, + Teacher: lTeacher, + Place: lec.Place, + IsSelect: lec.isSelect, + NextTerm: nil, + } + day-- + if glecturesArray[grade][lec.DayOfWeek][day] != nil { + if strings.Contains(glecturesArray[grade][lec.DayOfWeek][day].Name, "大学英語") { + var strBuilder strings.Builder + strBuilder.WriteString(dhstr.Teacher.name) + strBuilder.WriteString("/") + strBuilder.WriteString(glecturesArray[grade][lec.DayOfWeek][day].Teacher.name) + glecturesArray[grade][lec.DayOfWeek][day].Teacher.name = strBuilder.String() + strBuilder.Reset() + + strBuilder.WriteString(dhstr.Place) + strBuilder.WriteString("/") + strBuilder.WriteString(glecturesArray[grade][lec.DayOfWeek][day].Place) + glecturesArray[grade][lec.DayOfWeek][day].Place = strBuilder.String() + continue + } + glecturesArray[grade][lec.DayOfWeek][day].NextTerm = &dhstr + continue + } + glecturesArray[grade][lec.DayOfWeek][day] = &dhstr + } + } + glectures := new(GradeLectures) + glectures.B1 = &glecturesArray[0] + glectures.B2 = &glecturesArray[1] + glectures.B3 = &glecturesArray[2] + glectures.B4 = &glecturesArray[3] + glectures.M = &glecturesArray[4] + + return glectures, nil +} + +func dumpHTML(grlectures *GradeLectures, writer io.Writer) error { + return nil +} diff -r caf842947bef -r 1aa824c6b319 lectable.go --- a/lectable.go Thu Apr 02 08:53:36 2020 +0900 +++ b/lectable.go Thu Apr 02 21:24:24 2020 +0900 @@ -16,6 +16,7 @@ subCommands = []cmd{ &cmdDownload{}, &cmdPDF{}, + &cmdDumpHTML{}, } dispatch = make(map[string]cmd, len(subCommands)) maxSubcommandName int diff -r caf842947bef -r 1aa824c6b319 static_json/teacher.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/static_json/teacher.json Thu Apr 02 21:24:24 2020 +0900 @@ -0,0 +1,62 @@ +[ + { + "teacher": [ + "長山 格", + "https://ie.u-ryukyu.ac.jp/nagayama-laboratory/" + ] + }, + { + "teacher": [ + "河野 真治", + "http://www.ie.u-ryukyu.ac.jp/%7Ekono/" + ] + }, + { + "teacher": [ + "山田 孝治", + "http://ie.u-ryukyu.ac.jp/%7Ekoji/pw" + ] + }, + { + "teacher": [ + "國田 樹", + "https://ie.u-ryukyu.ac.jp/kunita/" + ] + }, + { + "teacher": [ + "岡﨑 威生", + "http://www.ie.u-ryukyu.ac.jp/%7Eokazaki" + ] + }, + { + "teacher": [ + "和田 知久", + "http://www.ie.u-ryukyu.ac.jp/%7Ewada/" + ] + }, + { + "teacher": [ + "長田 智和", + "http://n-lab.info/" + ] + }, + { + "teacher": [ + "名嘉村 盛和", + "https://ie.u-ryukyu.ac.jp/morikazu/" + ] + }, + { + "teacher": [ + "當間 愛晃", + "http://www.ie.u-ryukyu.ac.jp/%7Etnal" + ] + }, + { + "teacher": [ + "赤嶺 有平", + "https://sites.google.com/ie.u-ryukyu.ac.jp/akamine-lab/%E3%83%9B%E3%83%BC%E3%83%A0" + ] + } +]