Module: KansaiTrainInfo
- Defined in:
- lib/kansai_train_info.rb,
lib/kansai_train_info/cli.rb,
lib/kansai_train_info/client.rb,
lib/kansai_train_info/version.rb
Defined Under Namespace
Classes: CLI
Constant Summary collapse
- LINES =
{ 大阪環状線: [4, 2, 263], 近鉄京都線: [6, 5, 288], 阪急京都線: [8, 2, 306], 御堂筋線: [10, 3, 321], 烏丸線: [34, 2, 318], 東西線: [34, 3, 319] }.freeze
- VERSION =
'0.2.0'
Class Method Summary collapse
- .description(detail_url) ⇒ Object
-
.get(route_array, url: false) ⇒ Object
rubocop:disable Metrics/AbcSize, Layout/LineLength.
-
.help ⇒ Object
rubocop:enable Metrics/CyclomaticComplexity.
-
.kansai_doc ⇒ Object
rubocop:enable Metrics/AbcSize, Layout/LineLength.
-
.message(route, state, url, detail_url) ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity.
Class Method Details
.description(detail_url) ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/kansai_train_info/client.rb', line 46 def description(detail_url) charset = nil detail_html = URI.open(detail_url) do |f| charset = f.charset f.read end detail_doc = Nokogiri::HTML.parse(detail_html, nil, charset) detail_doc.xpath('//*[@id="mdServiceStatus"]/dl/dd/p').first.text end |
.get(route_array, url: false) ⇒ Object
rubocop:disable Metrics/AbcSize, Layout/LineLength
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/kansai_train_info/client.rb', line 17 def get(route_array, url: false) = [] route_array.each do |route| line = LINES[route.to_sym] raise KeyError, "Invalid route: #{route}" unless line status_xpath = "//*[@id='mdAreaMajorLine']/div[#{LINES[route.to_sym][0]}]/table/tr[#{LINES[route.to_sym][1]}]/td[2]" detail_url = "https://transit.yahoo.co.jp/traininfo/detail/#{LINES[route.to_sym][2]}/0/" state = kansai_doc.xpath(status_xpath).first&.text << (route, state, url, detail_url) end end |
.help ⇒ Object
rubocop:enable Metrics/CyclomaticComplexity
76 77 78 79 80 81 82 |
# File 'lib/kansai_train_info/client.rb', line 76 def help print '利用可能な路線:' print "\n" print "\n" print '大阪環状線、近鉄京都線、阪急京都線, 御堂筋線, 烏丸線, 東西線' print "\n" end |
.kansai_doc ⇒ Object
rubocop:enable Metrics/AbcSize, Layout/LineLength
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/kansai_train_info/client.rb', line 34 def kansai_doc charset = nil url = 'https://transit.yahoo.co.jp/traininfo/area/6/' html = URI.open(url) do |f| charset = f.charset f.read end Nokogiri::HTML.parse(html, nil, charset) end |
.message(route, state, url, detail_url) ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/kansai_train_info/client.rb', line 57 def (route, state, url, detail_url) return "#{route}は運行情報がありません" if state.nil? state&.slice!('[○]') state&.slice!('[!]') puts "#{route}は#{state}です" if state == '平常運転' = case state when '運転状況' "#{route}は#{state}に変更があります。" when '列車遅延' "#{route}は#{state}があります。" when '運転見合わせ' "#{route}は#{state}しています。" end = "#{} #{description(detail_url)}" url ? + detail_url : end |