1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【初学者向け】Ruby 遅延鉄道路線名の入手方法

Last updated at Posted at 2020-08-29

只今ruby勉強中です。
記録としてここに記載しておこうと思います。

プログラム概要

  1. 鉄道遅延情報のjsonから遅延している鉄道情報を入手
  2. 遅延しているか確認したい路線名を入力してもらう
  3. その文字情報をもとに、ゲットしたjson情報の中に該当する路線があるか検索
  4. 該当路線がある場合は、遅延情報アリと出力。ない場合は該当なしと出力
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ができるのではと思います。

やっぱり、自分が作ったものがカタチになるのは勉強していてモチベーションが上がります。

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?