main.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "time"
  6. )
  7. var version = "1.0.2"
  8. func help () {
  9. fmt.Println("076 乗換 - CLIでの路線情報")
  10. fmt.Println("https://076.moe/ | https://gitler.moe/suwako/norikae")
  11. fmt.Println("")
  12. fmt.Println("使い方:")
  13. fmt.Println("norikae -v :バージョンを表示")
  14. fmt.Println("norikae -h :ヘルプを表示")
  15. fmt.Println("\n【必須のオプション】")
  16. fmt.Println("-f [出発駅] :例:秋葉原、渋谷、大手町(東京)")
  17. fmt.Println("-t [到着駅] :例:秋葉原、渋谷、大手町(東京)")
  18. fmt.Println("\n【任意のオプション】")
  19. fmt.Println("-n [YYYY-MM-DD] :例:2023-05-02(デフォルト:今)")
  20. fmt.Println("-j [HH:MM] :例:18:45(デフォルト:今)")
  21. fmt.Println("-m [0〜4] :0 = 出発、1 = 指定なし、2 = 終電、3 = 始発、4 = 到着(デフォルト:0)")
  22. fmt.Println("-r [0〜2] :0 = 到着が早い順、1 = 料金が高い順、2 = 乗り換え回数順(デフォルト:0)")
  23. fmt.Println("--no-airplane :空路を省く")
  24. fmt.Println("--no-shinkansen :新幹線を省く")
  25. fmt.Println("--no-express :有料特急を省く")
  26. fmt.Println("--no-expressbus :高速バスを省く")
  27. fmt.Println("--no-bus :路線/連絡バスを省く")
  28. fmt.Println("--no-ferry :フェリーを省く")
  29. fmt.Println("\n例: norikae -f 秋葉原 -t 渋谷 -j 16:23 -m 4 --no-bus")
  30. }
  31. func main () {
  32. //args := os.Args
  33. var opts Opts
  34. // デフォルトな値
  35. t := time.Now()
  36. opts.Date = t.Format("2006-01-02")
  37. opts.Time = t.Format("15:04")
  38. opts.Mode = "0"
  39. opts.Route = "0"
  40. opts.NoAirplane = true
  41. opts.NoShinkansen = true
  42. opts.NoExpress = true
  43. opts.NoExpressBus = true
  44. opts.NoBus = true
  45. opts.NoFairy = true
  46. if len(os.Args) == 1 {
  47. help()
  48. return
  49. }
  50. var foundf, foundt bool
  51. for _, v := range os.Args {
  52. if (v == "-f") { foundf = true }
  53. if (v == "-t") { foundt = true }
  54. if (v == "-v") {
  55. fmt.Printf("norikae-%s\n", version)
  56. return
  57. }
  58. if (v == "-h") {
  59. help()
  60. return
  61. }
  62. }
  63. if !foundf || !foundt {
  64. help()
  65. return
  66. }
  67. for i := 1; i < len(os.Args); i++ {
  68. if os.Args[i] == "-f" { opts.From = os.Args[i+1] }
  69. if os.Args[i] == "-t" { opts.To = os.Args[i+1] }
  70. if os.Args[i] == "-n" { opts.Date = os.Args[i+1] }
  71. if os.Args[i] == "-j" { opts.Time = os.Args[i+1] }
  72. if os.Args[i] == "-m" { opts.Mode = os.Args[i+1] }
  73. if os.Args[i] == "-r" { opts.Route = os.Args[i+1] }
  74. if os.Args[i] == "--no-airplane" { opts.NoAirplane = false }
  75. if os.Args[i] == "--no-shinkansen" { opts.NoShinkansen = false }
  76. if os.Args[i] == "--no-express" { opts.NoExpress = false }
  77. if os.Args[i] == "--no-expressbus" { opts.NoExpressBus = false }
  78. if os.Args[i] == "--no-bus" { opts.NoBus = false }
  79. if os.Args[i] == "--no-ferry" { opts.NoFairy = false }
  80. }
  81. gurl := geturl(opts)
  82. route := scrape(gurl)
  83. render(route)
  84. }