# HG changeset patch # User anatofuz # Date 1585639973 -32400 # Node ID b6a2d89b06e7a3a01dbad18d88c80f0a7bf1089d # Parent 2348344480daa1aa5ef2b5c4e0f5110a442afe4b add cmd_pdf diff -r 2348344480da -r b6a2d89b06e7 cmd_donwload.go --- a/cmd_donwload.go Tue Mar 31 15:43:14 2020 +0900 +++ b/cmd_donwload.go Tue Mar 31 16:32:53 2020 +0900 @@ -28,8 +28,9 @@ arr3 := []string{"601495001", "600625001"} lwps, err := dh.LecIDStoDonwlodSyllabus(ctx, arr3, outStream) - - return dh.DumpLectureWithPathJSON(lwps) + lectures, err := dh.LectureWPathS2LectureStruct(ctx, lwps, outStream) + if err != nil { + return err + } + return dh.DumpLecureToJson(lectures) } - - diff -r 2348344480da -r b6a2d89b06e7 cmd_pdf.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmd_pdf.go Tue Mar 31 16:32:53 2020 +0900 @@ -0,0 +1,20 @@ +package lectable + +import ( + "context" + "io" +) + +type cmdPDF struct{} + +func (cp *cmdPDF) name() string { + return "pdf" +} + +func (cd *cmdPDF) description() string { + return "parse from pdf" +} + +func (cd *cmdPDF) run(ctx context.Context, argv []string, outStream, errStream io.Writer) error { + return nil +} diff -r 2348344480da -r b6a2d89b06e7 lectable.go --- a/lectable.go Tue Mar 31 15:43:14 2020 +0900 +++ b/lectable.go Tue Mar 31 16:32:53 2020 +0900 @@ -15,6 +15,7 @@ var ( subCommands = []cmd{ &cmdDownload{}, + &cmdPDF{}, } dispatch = make(map[string]cmd, len(subCommands)) maxSubcommandName int diff -r 2348344480da -r b6a2d89b06e7 syllabus/getSyllabus.go --- a/syllabus/getSyllabus.go Tue Mar 31 15:43:14 2020 +0900 +++ b/syllabus/getSyllabus.go Tue Mar 31 16:32:53 2020 +0900 @@ -18,6 +18,14 @@ "github.com/pkg/errors" ) +const ( + monday int = iota + tuesday + wednesday + thursday + friday +) + //GetSyllabus is use main function struct. members using download html operation type GetSyllabus struct { year int @@ -34,10 +42,10 @@ //Lecture ID is ex. 600625001 , Name is プログラミング1, Day is LecutreDay type Lecture struct { - ID string - Name string - Day LectureDay - Teacher string + ID string `json: "id"` + Name string `json: "name` + Day LectureDay `json: "day"` + Teacher string `json: "teacher"` } type LectureWPath struct { @@ -156,8 +164,28 @@ return outputPath, nil } +func (g *GetSyllabus) LectureWPathS2LectureStruct(ctx context.Context, lwps *[]LectureWPath, outStream io.Writer) (*[]Lecture, error) { + //var wg sync.WaitGroup + ch := make(chan Lecture, len(*lwps)) + for _, lwp := range *lwps { + //wg.Add(1) + go func(lwp LectureWPath) { + //defer wg.Done() + lec, _ := g.LectureWPath2LectureStruct(&lwp) + ch <- *lec + }(lwp) + } + //wg.Wait() + + var lecs []Lecture + for range *lwps { + lecs = append(lecs, <-ch) + } + return &lecs, nil +} + //LecIDwFilePath2LectureStruct is require LectureID (== Lecture.ID), filePath ( syllabus.html path) -func (g *GetSyllabus) LecIDwFilePath2LectureStruct(lwp *LectureWPath) (*Lecture, error) { +func (g *GetSyllabus) LectureWPath2LectureStruct(lwp *LectureWPath) (*Lecture, error) { file, err := os.Open(lwp.Path) if err != nil { @@ -223,25 +251,25 @@ func kanjiday2int(kanjiDay string) int { switch kanjiDay { case "月": - return 0 + return monday case "火": - return 1 + return tuesday case "水": - return 2 + return wednesday case "木": - return 3 + return thursday case "金": - return 4 + return friday } return -1 } -func (g *GetSyllabus)DumpLectureWithPathJSON(lwps *[]LectureWPath) error { - bytes, err := json.Marshal(lwps) +func (g *GetSyllabus) DumpLecureToJson(lectures *[]Lecture) error { + bytes, err := json.Marshal(lectures) if err != nil { return err } - fp := filepath.Join(g.outputdir, "dump.json") + fp := filepath.Join(g.outputdir, "dump_lectures.json") file, err := os.Create(fp) bw := bufio.NewWriter(file) _, err = bw.Write(bytes) @@ -253,3 +281,19 @@ return nil } +func (g *GetSyllabus) DumpLectureWithPathJSON(lwps *[]LectureWPath) error { + bytes, err := json.Marshal(lwps) + if err != nil { + return err + } + fp := filepath.Join(g.outputdir, "dump.json") + file, err := os.Create(fp) + bw := bufio.NewWriter(file) + _, err = bw.Write(bytes) + if err != nil { + return err + } + bw.Flush() + file.Close() + return nil +}