📺

テレビ番組表を表示させるコマンドを作りました in Rust

2022/09/25に公開

私はテレビが大好きで仕事中も今日のテレビは何だろなと気になっているのですが、仕事中は仕事をしないといけません。

仕事中に隠れてテレビ番組表を見るためにはどうすればいいのかなといったところで、テレビ番組表を表示させるコマンドを作ることにしました。

作ったもの

作ったコマンドは直近2時間の放送予定を1時間ごとに表示させるといったシンプルなものです。

tvshow -a 東京

10/23 19時~
--------------------------------------------
19:00~19:56 【4 日テレ1】	I LOVEみんなのどうぶつ園▽永野芽郁と犬カフェ▽ジャンポケ新企画▽中岡と犬[] [7452]
19:00~21:00 【8 フジテレビ】	芸能人が本気で考えた!ドッキリGP アナウンサー謝罪会見!裏切り連発SP[] [30761]
19:30~20:15 【1 NHK総合1..】	ブラタモリ「つくば〜つくばは“日本の姿”をどう解き明かす?〜」[][] [20171]
19:30~20:00 【3 tvk1】	tvkお買物情報 [44941]
19:30~20:00 【3 チバテレ1】	猫のもふもふ日記 [3210]
19:30~20:00 【3 テレ玉1】	2021衆議院議員選挙 政見放送 [27000]
19:30~20:00 【9 TOKYO ..】	MXショッピング [51387]
19:45~19:55 【2 NHKEテレ..】	バビブベボディ「筋肉」[] [20301]
19:45~20:00 【9 TOKYO ..】	ドロンズ石本のラーメンいいね [51431]
19:54~20:54 【7 テレビ東京1】	出川哲朗の充電させてもらえませんか?行くぞ!山形秋田縦断135キロSP[] [27764]
19:55~20:00 【2 NHKEテレ..】	NHK手話ニュース[] [19267]
19:56~20:54 【4 日テレ1】	世界一受けたい授業[] [7453]

10/23 20時~
--------------------------------------------
20:00~20:55 【3 tvk1】	韓国ドラマ「シグナル」 第12話 [44943]
20:00~21:00 【3 チバテレ1】	大岡越前 第6部 [2188]
20:00~20:30 【3 テレ玉1】	TVショッピング・ダイレクトテレショップ[S] [28045]
20:00~20:45 【2 NHKEテレ..】	チョイス@病気になったとき「本当に大丈夫?あなたの月経」[][] [19268]
20:00~20:30 【9 TOKYO ..】	斬波ZANMAI ★斬波演技レッスン [51461]
20:00~20:30 【9 TOKYO ..】	MXショッピング [51379]
20:15~20:45 【1 NHK総合1..】	有吉のお金発見 突撃!カネオくん「超過酷な犬ぞり北極調査!探検のお金の秘密」[] [19171]
20:30~21:00 【3 テレ玉1】	2021衆議院議員選挙 政見放送 [27001]
20:30~21:00 【9 TOKYO ..】	遊戯配信 e-Strangers ★狩野英孝が動画配信界のスター候補を発掘! [51449]
20:30~20:52 【9 TOKYO ..】	ごりやくさん ★愛宕神社[][] [51417]
20:45~20:55 【1 NHK総合1..】	ニュース[] [19176]
20:45~21:00 【2 NHKEテレ..】	ろうを生きる 難聴を生きる「音のないオンガク会」※字幕スーパー[] [19271]
20:52~21:00 【9 TOKYO ..】	ヒーリングタイム&ヘッドラインニュース [51349]
20:54~21:00 【4 日テレ1】	ワーズハウスへようこそ[] [7454]
20:54~21:00 【7 テレビ東京1】	生きるを伝える[] [27765]
20:55~21:00 【1 NHK総合1..】	ニュース・気象情報(関東甲信越)[] [19177]
20:55~21:00 【3 tvk1】	tvkニュース [44945]

This TV schedule is got from テレビ番組表Gガイド(https://bangumi.org).

テレビ番組表Gガイドをスクレイピングしてうまいこと整形した後に標準出力しています。

全国対応しており -a オプションでエリアを指定できます。

cargo でインストールできるので気になった方は試してみてください!

cargo install tvshow

初めての Rust

前から気になっていた Rust で作ってみました。
とりあえず動かすことだけ考えて作ったのでめちゃくちゃです。

キャッチアップは以下の公式チュートリアルで行いました。

チュートリアルにかなりの情報が詰まっていて正直理解できていないところも多々ありますが、新しい言語をキャッチアップするにあたって公式のチュートリアルが丁寧に作られているのはありがたいですね。

今回スクレイピングを Rust で行ったなのですが他の言語に比べると正直しんどかったです。
Rust 自体の問題というよりはスクレイピング関連のパッケージが他の言語に比べるとまだ成熟していないという印象です。

今度 Rust を触る際には API 開発や WASM あたりやってみたいところです。

おわりに

新しい言語を勉強する際にちょっとしたコマンドを作成するのは個人的におすすめです。

チュートリアルで終わらせずに短期間でアウトプットを出せるところと、言語自体の勉強だけではなくパッケージの公開に必要なことなど幅広く学べるところがいいです。

皆さんもぜひ試してもらえれば。

関連

Discussion