# HG changeset patch # User anatofuz # Date 1585624672 -32400 # Node ID e4088b031eba81162d39caf0382306640e2283b5 # Parent dccd0dd6cfbc280af39432838f6d366bae2dc418 add cmd diff -r dccd0dd6cfbc -r e4088b031eba LICENSE --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LICENSE Tue Mar 31 12:17:52 2020 +0900 @@ -0,0 +1,22 @@ +Copyright (c) 2020 AnaTofuZ + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff -r dccd0dd6cfbc -r e4088b031eba cmd.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmd.go Tue Mar 31 12:17:52 2020 +0900 @@ -0,0 +1,9 @@ +package lectable + +import "io" + +type cmd interface { + name() string + description() string + run(cotnext.Context, []string, io.Writer, io.Writer) +} diff -r dccd0dd6cfbc -r e4088b031eba cmd/lectable/main.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmd/lectable/main.go Tue Mar 31 12:17:52 2020 +0900 @@ -0,0 +1,23 @@ +package main + +import ( + "context" + "flag" + "log" + "os" + + "ie.u-ryukyu.ac.jp/hg/y19/index.cgi/home/hg/y19/k198584/Tools/lectable" +) + +func main() { + log.SetFlags(0) + err := lectable.Run(context.Background(), os.Args[1:], os.Stdout, os.Stderr) + if err != nil && err != flag.ErrHelp { + log.Println(err) + exitCode := 1 + if ecoder, ok := err.(interface{ ExitCode() int }); ok { + exitCode = ecoder.ExitCode() + } + os.Exit(exitCode) + } +} diff -r dccd0dd6cfbc -r e4088b031eba go.sum --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/go.sum Tue Mar 31 12:17:52 2020 +0900 @@ -0,0 +1,1 @@ +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= diff -r dccd0dd6cfbc -r e4088b031eba lectable.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lectable.go Tue Mar 31 12:17:52 2020 +0900 @@ -0,0 +1,32 @@ +package lectable + +import ( + "context" + "flag" + "fmt" + "io" + "log" +) + +const cmdName = "lectable" + +// Run the lectable +func Run(ctx context.Context, argv []string, outStream, errStream io.Writer) error { + log.SetOutput(errStream) + fs := flag.NewFlagSet( + fmt.Sprintf("%s (v%s rev:%s)", cmdName, version, revision), flag.ContinueOnError) + fs.SetOutput(errStream) + ver := fs.Bool("version", false, "display version") + if err := fs.Parse(argv); err != nil { + return err + } + if *ver { + return printVersion(outStream) + } + return nil +} + +func printVersion(out io.Writer) error { + _, err := fmt.Fprintf(out, "%s v%s (rev:%s)\n", cmdName, version, revision) + return err +} diff -r dccd0dd6cfbc -r e4088b031eba syllabus/getSyllabus.go --- a/syllabus/getSyllabus.go Tue Mar 31 09:49:20 2020 +0900 +++ b/syllabus/getSyllabus.go Tue Mar 31 12:17:52 2020 +0900 @@ -4,7 +4,10 @@ "bufio" "io" "net/http" + "net/url" "os" + "path" + "path/filepath" "strconv" "strings" "time" @@ -46,17 +49,16 @@ func CreateGetSyllabus() *GetSyllabus { var gs GetSyllabus tm := time.Now() - gs.year = tm.Year() + //gs.year = tm.Year() + gs.year = 2019 if tm.Month() < 7 { gs.term = "previous" } else { gs.term = "latter" } - var b strings.Builder - b.WriteString(strconv.Itoa(gs.year)) - b.WriteString("/") - b.WriteString(gs.term) - gs.outputdir = b.String() + gs.term = "previous" + + gs.outputdir = filepath.Join(strconv.Itoa(gs.year), gs.term) return &gs } @@ -66,14 +68,17 @@ var endSpan = "" var dayOfWeeklen = len("月") +//"https://tiglon.jim.u-ryukyu.ac.jp/portal/Public/Syllabus/SyllabusSearchStart.aspx?lct_year=2019&lct_cd=610004071&je_cd=1" +var endpoint = "https://tiglon.jim.u-ryukyu.ac.jp" + //LecIDtoDownloadSyllabus is download from lecture ID func (g *GetSyllabus) LecIDtoDownloadSyllabus(lectureID string) error { var strBuilder strings.Builder - strBuilder.WriteString(g.outputdir) - strBuilder.WriteString("/") strBuilder.WriteString(lectureID) strBuilder.WriteString(".html") + putputPath := filepath.Join(g.outputdir, strBuilder.String()) + file, err := os.Create(strBuilder.String()) defer file.Close() @@ -83,7 +88,19 @@ strBuilder.Reset() - res, err := http.Get("http://google.com") + u, err := url.Parse(endpoint) + if err != nil { + return err + } + + u.path = path.Join(u.path, "portal", "Public", "Syllabus", "SyllabusSearchStart.aspx") + q := u.Query() + q.Set("lect_year", g.year) + q.Set("lect_cd", lectureID) + q.Set("je_cd", "1") + u.RawQuery = q.Encode() + + res, err := http.Get(u.String()) defer res.Body.Close() if err != nil { diff -r dccd0dd6cfbc -r e4088b031eba version.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/version.go Tue Mar 31 12:17:52 2020 +0900 @@ -0,0 +1,5 @@ +package lectable + +const version = "1.0.0" + +var revision = "HEAD"