読者です 読者をやめる 読者になる 読者になる

あーく・りなっくす

プログラミングとかガジェットとかの雑記

路線情報 API っぽいのを作った

Ruby Sinatra Web

某サービスの路線情報アプリを普段から使っており、遅延などの通知も受け取っている。 アプリでの通知であるため、そのアプリを入れた端末が近くにないと意味があまりないというのと、チャットなどを見ている時に知ることができればいいと思ったので、Web 版をスクレイピングして API っぽくしてみた。

できること

関東(にカテゴライズされている)路線で遅延や運休というような運行情報を取得できる。 今は関東在住のため、取得先を関東の路線のみに絞り込んでいるが、今後 GET パラメータで地域を指定できるようにする予定である。

フォーマット

それっぽければいいか、というスタンスで決めた。

{
  "info": [
    {
      "name": "常磐線[水戸~いわき]",
      "date": "8月23日 23時16分更新",
      "status": "運転見合わせ",
      "icon": "icnAlertLarge",
      "message": "大雨の影響で、終日、勝田~いわき駅間の運転を見合わせています。また、運転区間の一部列車に遅れや運休が出ています。(8月23日 22時00分掲載)"
    },
    {
      "name": "外房線",
      "date": "8月23日 23時16分更新",
      "status": "列車遅延",
      "icon": "icnAlertLarge",
      "message": "台風9号の影響で、現在も一部列車に遅れが出ています。(8月23日 20時30分掲載)"
    },
    {
      "name": "西武多摩湖線",
      "date": "8月23日 23時16分更新",
      "status": "運転見合わせ",
      "icon": "icnAlertLarge",
      "message": "昨日、武蔵大和~西武遊園地駅間で発生した土砂流入の影響で、本日も萩山~西武遊園地駅間の運転を見合わせています。(8月23日 20時00分掲載)"
    },
    {
      "name": "小湊鉄道線",
      "date": "8月23日 23時16分更新",
      "status": "運転見合わせ",
      "icon": "icnAlertLarge",
      "message": "昨日の土砂崩れの影響で、終日、養老渓谷~上総中野駅間の運転を見合わせています。(8月23日 20時00分掲載)"
    },
    {
      "name": "上越線[高崎~水上]",
      "date": "8月23日 23時16分更新",
      "status": "列車遅延",
      "icon": "icnAlertLarge",
      "message": "大雨の影響で、現在も一部列車に遅れが出ています。(8月23日 21時00分掲載)"
    },
    {
      "name": "水郡線",
      "date": "8月23日 23時16分更新",
      "status": "運転見合わせ",
      "icon": "icnAlertLarge",
      "message": "大雨の影響で、終日、水戸~常陸大子駅間、上菅谷~常陸太田駅間の運転を見合わせています。また、運転区間の一部列車に遅れが出ています。(8月23日 21時00分掲載)"
    },
    {
      "name": "ひたちなか海浜鉄道湊線",
      "date": "8月23日 23時16分更新",
      "status": "運転見合わせ",
      "icon": "icnAlertLarge",
      "message": "中根駅付近で発生した線路冠水の影響で、現在も運転を見合わせています。(8月23日 21時15分掲載)"
    }
  ],
  "num": 7
}

今後の予定

  • Viewer っぽいのを作る
    • React.js を使ってある程度実装した
    • あとは見た目を整えるぐらいのはず
    • 起動時にワンクッション挟む
  • 地域を GET パラメータで指定できるようにする
    • 今は関東固定
    • 指定すると言っても向こうで定義されているものに依存する

圧倒的進捗 f:id:arc680:20160824001527p:plain