Mercurial > mercurial > hgweb_golang.cgi
diff src/getexr/getexr.go @ 61:49656dc40069
add qtuti.
author | pyon@macmini |
---|---|
date | Fri, 11 Sep 2020 20:06:27 +0900 |
parents | 38b64afbaf79 |
children |
line wrap: on
line diff
--- a/src/getexr/getexr.go Fri Aug 14 03:31:29 2020 +0900 +++ b/src/getexr/getexr.go Fri Sep 11 20:06:27 2020 +0900 @@ -21,99 +21,99 @@ func main() { - version := flag.Bool( "v", false, "print version" ) - verbose := flag.Bool( "V", false, "verbose" ) - file := flag.String( "f", "usd.dat", "data file" ) + version := flag.Bool("v", false, "print version") + verbose := flag.Bool("V", false, "verbose") + file := flag.String("f", "usd.dat", "data file") flag.Parse() - if ( *version ) { - fmt.Fprintf( os.Stderr, "getexr - Get Exchange Rate [ version = %s ]\n", ver ) - os.Exit( 0 ) + if (*version) { + fmt.Fprintf(os.Stderr, "getexr - Get Exchange Rate [ version = %s ]\n", ver) + os.Exit(0) } t := time.Now() - now := t.Format( "2006-01-02 15:04:05" ) + now := t.Format("2006-01-02 15:04:05") // Get USD Rate - PrintVerbose( *verbose, "> get rate from yahoo..." ) + PrintVerbose(*verbose, "> get rate from yahoo...") url := "http://finance.yahoo.co.jp/" - resp, err := http.Get( url ) + resp, err := http.Get(url) if err != nil { - log.Fatal( err ) + log.Fatal(err) } - PrintVerbose( *verbose, "success\n" ) + PrintVerbose(*verbose, "success\n") - z := html.NewTokenizer( resp.Body ) - usd, err := ParseHtml( z ) + z := html.NewTokenizer(resp.Body) + usd, err := ParseHtml(z) if err != nil { - log.Fatal( err ) + log.Fatal(err) } defer resp.Body.Close() - PrintVerbose( *verbose, fmt.Sprintf( "> rate = %.2f\n", usd ) ) + PrintVerbose(*verbose, fmt.Sprintf("> rate = %.2f\n", usd)) - content, err := ioutil.ReadFile( *file ) + content, err := ioutil.ReadFile(*file) if err != nil { - log.Fatal( err ) + log.Fatal(err) } fc := 0 - buf1 := strings.Split( string( content ), "\n" ) + buf1 := strings.Split(string(content), "\n") // Compare Alert Rate - buf2 := strings.Split( buf1[ 0 ], "," ) + buf2 := strings.Split(buf1[ 0 ], ",") flg := buf2[0] - thr, _ := strconv.ParseFloat( buf2[1], 32 ) + thr, _ := strconv.ParseFloat(buf2[1], 32) - if ( strings.EqualFold( "H", flg ) && thr < usd ) { + if (strings.EqualFold("H", flg) && thr < usd) { fc = -1 - content = bytes.Replace( content, []byte( "H" ), []byte( "-" ), 1 ) - if err := AlertMail( "H", now, usd ); err != nil { - log.Fatal( err ) + content = bytes.Replace(content, []byte("H"), []byte("-"), 1) + if err := AlertMail("H", now, usd); err != nil { + log.Fatal(err) } - PrintVerbose( *verbose, "> rate higher.\n> sending alert mail.\n" ) + PrintVerbose(*verbose, "> rate higher.\n> sending alert mail.\n") - } else if ( strings.EqualFold( "L", flg ) && thr > usd ) { + } else if (strings.EqualFold("L", flg) && thr > usd) { fc = -1 - content = bytes.Replace( content, []byte( "L" ), []byte( "-" ), 1 ) - if err := AlertMail( "L", now, usd ); err != nil { - log.Fatal( err ) + content = bytes.Replace(content, []byte("L"), []byte("-"), 1) + if err := AlertMail("L", now, usd); err != nil { + log.Fatal(err) } - PrintVerbose( *verbose, "> rate lower.\n> sending alert mail.\n" ) + PrintVerbose(*verbose, "> rate lower.\n> sending alert mail.\n") } // Compare Past Rate - buf2 = strings.Split( buf1[ len( buf1 ) - 2 ], "," ) + buf2 = strings.Split(buf1[ len(buf1) - 2 ], ",") ymd0 := buf2[0] - usd0, _ := strconv.ParseFloat( buf2[1], 32 ) + usd0, _ := strconv.ParseFloat(buf2[1], 32) - if ( math.Abs( usd0 - usd ) > 1.0 ) { + if (math.Abs(usd0 - usd) > 1.0) { fc = 1 // Post E-mail - PrintVerbose( *verbose, "> sending notify mail.\n" ) - if err := NotifyMail( now, usd, ymd0, usd0 ); err != nil { - log.Fatal( err ) + PrintVerbose(*verbose, "> sending notify mail.\n") + if err := NotifyMail(now, usd, ymd0, usd0); err != nil { + log.Fatal(err) } - PrintVerbose( *verbose, "> rate changed.\n" ) + PrintVerbose(*verbose, "> rate changed.\n") } else { - PrintVerbose( *verbose, "> not changed.\n" ) + PrintVerbose(*verbose, "> not changed.\n") } // Save Rate - if ( fc != 0 ) { - if ( fc == 1 ) { - buf := fmt.Sprintf( "%s,%.2f\n", now, usd ) - content = append( content, buf... ) + if (fc != 0) { + if (fc == 1) { + buf := fmt.Sprintf("%s,%.2f\n", now, usd) + content = append(content, buf...) } - if err := ioutil.WriteFile( *file, content, 0777 ); err != nil { - log.Fatal( err ) + if err := ioutil.WriteFile(*file, content, 0777); err != nil { + log.Fatal(err) } - PrintVerbose( *verbose, "> data file overwrited.\n" ) + PrintVerbose(*verbose, "> data file overwrited.\n") } - PrintVerbose( *verbose, "> finish.\n" ) + PrintVerbose(*verbose, "> finish.\n") } -func ParseHtml( z *html.Tokenizer ) ( float64, error ) { +func ParseHtml(z *html.Tokenizer) (float64, error) { for { tt := z.Next() switch tt { @@ -123,59 +123,59 @@ case html.StartTagToken: tag, _ := z.TagName() key, val, _ := z.TagAttr() - if string( tag ) == "strong" && string( key ) == "class" && string( val ) == "bkLine" { + if string(tag) == "strong" && string(key) == "class" && string(val) == "bkLine" { z.Next() - //fmt.Printf( "%s %s %s\n", key, val, z.Token() ) - return strconv.ParseFloat( z.Token().String(), 32 ) + //fmt.Printf("%s %s %s\n", key, val, z.Token()) + return strconv.ParseFloat(z.Token().String(), 32) } } } } -func NotifyMail( now string, usd float64, old string, usd0 float64 ) error { +func NotifyMail(now string, usd float64, old string, usd0 float64) error { address := "muty@willcom.com" msg := "To: " + address + "\r\n" + "Subject: Exchange-Mail\r\n" + "\r\n" + "rate changed\r\n" + now + "\r\n" + - fmt.Sprintf( "[ USD/JPY : %.2f ].", usd ) + "\r\n\r\n" + + fmt.Sprintf("[ USD/JPY : %.2f ].", usd) + "\r\n\r\n" + old + "\r\n" + - fmt.Sprintf( "[ USD/JPY : %.2f ].", usd0 ) + "\r\n" // mail body - if err := SendMail( address, msg ); err != nil { + fmt.Sprintf("[ USD/JPY : %.2f ].", usd0) + "\r\n" // mail body + if err := SendMail(address, msg); err != nil { return err } return nil } -func AlertMail( flg, now string, usd float64 ) error { +func AlertMail(flg, now string, usd float64) error { address := "muty@willcom.com" msg := "To: " + address + "\r\n" + "Subject: Exchange-Mail\r\n" + "\r\n" + "rate changed\r\n" + now + "\r\n" + - fmt.Sprintf( "[ USD/JPY : %.2f ].", usd ) + "\r\n" // mail body - if err := SendMail( address, msg ); err != nil { + fmt.Sprintf("[ USD/JPY : %.2f ].", usd) + "\r\n" // mail body + if err := SendMail(address, msg); err != nil { return err } return nil } -func SendMail( address, msg string ) error { +func SendMail(address, msg string) error { hostname := "sdm.sakura.ne.jp" - auth := smtp.PlainAuth( "", "bad_user@sdm.sakura.ne.jp", "hogehoge3", hostname ) + auth := smtp.PlainAuth("", "bad_user@sdm.sakura.ne.jp", "hogehoge3", hostname) to := []string{ address } - err := smtp.SendMail( hostname + ":587", auth, "bad_user@sdm.sakura.ne.jp", to, []byte( msg ) ) + err := smtp.SendMail(hostname + ":587", auth, "bad_user@sdm.sakura.ne.jp", to, []byte(msg)) if err != nil { return err } return nil } -func PrintVerbose( y bool, msg string ) { +func PrintVerbose(y bool, msg string) { if y { - fmt.Fprintf( os.Stderr, msg ) + fmt.Fprintf(os.Stderr, msg) } }