只今ruby勉強中です。
記録としてここに記載しておこうと思います。
プログラム概要
- 鉄道遅延情報のjsonから遅延している鉄道情報を入手
- 遅延しているか確認したい路線名を入力してもらう
- その文字情報をもとに、ゲットしたjson情報の中に該当する路線があるか検索
- 該当路線がある場合は、遅延情報アリと出力。ない場合は該当なしと出力
getting_delayed_trains_info.rb
require 'open-uri'
require 'nokogiri' #スクレイピングするためのgem
require 'json' #jsonを使うための呼び出し
# urlを解析する
url = 'http://tetsudo.rti-giken.jp/free/delay.json'
html = open(url).read
doc = Nokogiri::HTML(html, url)
#Json形式にパースし、ハッシュへ変換
hash = JSON.parse doc.css("body").inner_text
# 調べたい路線名を標準入力し、input_train へ格納
puts "遅延状況を知りたい路線を入力ください.例:京浜東北線"
input_train = gets.chomp
# delayed_trains 配列変数を用意
delayed_trains = Array.new
# input_trainの文字列が含まれた遅延路線名と更新日時を delayed_trains へ格納していく
hash.each {|train| delayed_train << train["name"] + \
'(更新日時: ' + Time.at(train["lastupdate_gmt"], in: "+09:00").strftime("%Y-%m-%d %H:%M:%S").to_s + ')' \
if train["name"].include? input_train }
# 配列が空であれば遅延対象路線はなく、そうでなければ路線名を出力する
if delayed_trains.empty?
puts "送信頂いた『#{input_train}』の文字を含む路線に遅れは出ておりません"
else
puts delayed_trains.join(",") + "に遅れが出ている模様です\n詳しくは鉄道会社HPを見てください"
end
LINE BOTでオウム返しを作成されている記事がいくつかありますが、それを参考にし、このアルゴリズムを入れれば、遅延しているか聞きたい路線を聞いたら答えてくれるLINE BOTができるのではと思います。
やっぱり、自分が作ったものがカタチになるのは勉強していてモチベーションが上がります。