0
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 1 year has passed since last update.

[AWS Lambda + Python + NHK番組表API]自分好みの番組リストをSlackメッセージで受け取るものを作った

Posted at

はじめに

カジキはテレビはほぼNHKしか見ませんが、テレビ視聴に関してはわがままです。
まず、

  • 自分が興味のある番組は見逃したくないわ…

と思うものの、番組表をじっくり眺めて絞り込む時間はあまりありません。また、他にやるべきことがある時は、

  • この時間は集中したいから、むしろ面白そうな番組がやってることは知りたくないわ

ということを思って、特定の日や時間帯についてはテレビを敢えて見ないようにしている時もあります。
そんな超絶わがままな現代カジキは、テレビと仲良く賢く付き合うために、今回、

  • 自分が見る番組の候補を絞り込むアプリケーション

を作成してみました。

どういうものができますか?

こんな感じの、カスタム番組リストが毎日投稿されます。後述する抽出加工を実施し、

  • 特定の時間帯の、
  • 特定のジャンルの番組
    • 自分の場合、ジャンルはドキュメンタリー動物紀行などで絞っています

のみがリストアップされて投稿されます。
Untitled.png

1. NHK番組表APIの利用登録とAPIキー発行

下記にて利用ユーザー登録しAPIキーを発行します。制限については、取得処理が1日300回までとのことです。

APIポータル上では、利用登録後、下記のように実際の取得リクエストを試すこともできます。
Untitled 1.png

公式のAPIドキュメント

各APIのリクエスト方法についてのドキュメント

APIからのreturnに関する情報

2. Slack API APPを作成し、チャンネルと連携

今回、

  • 番組チャンネル(NHK総合、Eテレ…)ごとに、投稿先slackチャンネルも分ける

ことにしたので、投稿用にSlack API APPを作成してSlackのチャンネルに紐づけています。
本記事では手順の詳細は割愛しますが、下記の方の記事がわかりやすかったので参考にしてください。

Slack API を使用してメッセージを投稿する

3. アプリケーションコード+インフラをデプロイ

今回は、下記を構築しました。

  • AWS Systems Manager Parameter Store
    • 手動作成し、NHK APIキーやSlackのtoken、チャンネル情報など必要な情報を格納します。
    • 格納パラメータの構成については下記、SAMリポジトリのREADME.mdに記載してあります。
  • AWS SAM(Lambdaコンテナイメージ)

Tips: 自分仕様の番組フィルタリングの実装

1. 好きなジャンルの番組だけを抽出する

これは、番組ジャンルコードを利用してフィルタリングすることで実現できます。
この情報はjsonのreturnのうち、該当の番組情報のgenresに配列で含まれています。

どのジャンルがどのコードに割当てられているか、というのは一応ドキュメントがあるのですが、2023年現在、公式の日本語版はリンク切れで、英語版も情報が不完全です。

なので、ちょっと面倒なんですが、

  • 一度Program List APIを実際に実行し、自分が好きな番組に割り振られているジャンルコードが何かを確認してフィルタリングで利用する

のがTipsとなります。

また、有志(同志だと思ってます)の方がまとめて記載してくれているものもあるので、リンクを貼っておきます。

また、非公式と思われますが、現在リンク切れになっている日本語PDFは下記内容でした。

2. 自分がテレビを視聴しない時間帯の番組は除外する + 除外時間帯を平日or土日祝で変える

これは、番組の開始時間情報を利用してフィルタリングすることで実現できます。
この情報はjsonのreturnのうち、該当の番組情報のstart_timeに格納されています。

start_timeはISO8601形式の文字列が格納されているので、これを時刻型に変換して比較処理を実装します。格納されている情報は日本のタイムゾーンが明記されているので、アプリケーション上での比較の際は気をつけましょう。

また、平日と土日祝で変える部分は、

  • Parameter Storeに平日と土日祝用の時間帯パラメータを格納
  • jpholidayを使用した判定処理を追加

にて実装しました。

jpholidayについては、下記の方の記事が参考になりました。

おわりに

カジキさんは普段は読書派ですが、読書って不思議なもので、頭がある種類の疲れがあると進まないんですよね。テレビというメディアは「受動的なメディア」と悪口言われたりもしますが、これまた不思議なことに、テレビ視聴は良くも悪くも読書とは頭の使い方が違うので、ほどよくであれば読書を妨げているその種の疲れをリフレッシュできます。(見すぎに注意は必要ですが…)

今回完全に個人のニッチを満たすためのアプリケーションですが、これで1回1回番組表を目で眺めるより効率よく、「こんな面白い番組やってるんだ」というのを発見できるようになりました。

参考文献

NHKの番組をゆるく検索できる PowerAppsでつくってみた - Qiita

0
1
0

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
0
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?