Node.jsで作る番組情報通知Bot

Blog >> Node.jsで作る番組情報通知Bot

実行結果
小さいかもしれませんね.すみません.

先に

この記事は下記事の内容をパクったと言っても過言ではありません.

もはや写経ですが勉強記録用なので.

動機

時の流れか,我が家では4月から新聞の購読を停止することになりました.非常に残念であります.かくいう私も,新聞をまともに読んでいたのはGコードが消えるか否かのころまでだったと思います.今ではラテ欄とスポーツ欄に隔月で発生する大相撲ぐらいしか読んでいません.あと下世話な週刊誌の広告.

テレビっ子な私はラテ欄の代替を探さなければならないわけですが,Webの番組表の扱いにくさは厳しいものがあります.あの縦長どうにかなりませんか.あの中で見たい番組を探すのは至難の技でしょう.こんな状態なので最低限,自分が興味のある番組くらいは抑えておきたいわけです.スクレイピングはPythonでかじっているので苦労はしないと思うのですが.

流れ

手作業でのURL取得

番組を探す — Gガイド.テレビ王国で見たい番組のキーワードや芸能人の名前を入力しURLを生成します.ここ一番ダサいです.試しに地上波+金属バット1で検索します.

https://tv.so-net.ne.jp/schedulesBySearch.action?condition.genres[0].parentId=-1&condition.genres[0].childId=-1&stationPlatformId=1&condition.keyword=%E9%87%91%E5%B1%9E%E3%83%90%E3%83%83%E3%83%88&submit=%E6%A4%9C%E7%B4%A2&descriptive=true

このURLとページのソースを元にスクレイピングしていきます.url.jsonには後で使う情報を入れておきます.

url.json

[展開する]

スクレイピングと整形

TV_scrape.js

[展開する]

メモ

  • ライブラリはcheerio-httpcliを使う.requireimportみたいなものだろうか.
  • 関数名の前にasyncを置くと内部でawaitが使える.awaitは待機と例外処理を担う?
  • index側からfetchにURLを投げる.
  • タグはそのまま,id#class.を付けて表現する.
  • module.exportsは外から呼んだときに使えるようにするもの?

Slackへの通知

slack.js

[展開する]

メモ

  • 一言一句違わず申し訳ない気持ちになる.
  • やっていることは単純だが一から書くとなると…

index.js

通知といったら瓦版なのでチャンネル名は#瓦版です.fetchの前にawaitを入れないとエラーを吐くので気を付けます(1敗).

[展開する]

実行

node index.js

角界のロボコップ

他にやりたいこと

  • AWSで定期的に実行.
  • Slackのslash-commandを用いた検索条件の追加削除.

今回はここまで.

 
comments powered by Disqus