いきなりの爆売れを防止！NHK APIから料理番組情報を取得する方法

こんにちは。
今回はNHK APIから料理番組情報を取得して、
1週間分のNHKで放送予定の料理番組情報をLINEBotで自動通知できるものを作ってみました。

## お客さまが欲しいものを欲しいときに購入できるように、準備をする。
私は小売業で働いています。

小売業で勤務されている方は1度はあると思いますが・・・
テレビで紹介されたものが放送後、異常に売れて、商品が欠品し、
お客さまのご要望に応えられなかったことがあると思います。
（おまけに店長に物凄く怒られます。）

でも毎日テレビを見るわけではないので、
今日はNHK APIを使用して、料理番組情報を定期的に取得できる
LINEBotを作成しました。

本当は1週間に1回取得したいのですが、今回は練習の為5分おきに設定してます。

## できたものがこちら
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/8484bb65-8b50-217a-4bc6-9a0435ad4f12.png)

動画で確認したい方はこちら
https://twitter.com/nghrhtm1/status/1509175932971810818


5分おきにNHKの番組の中から、
①料理番組名、②詳細、③放送開始日程が取り出せるようになりました。

## 実装環境
* Node.js（version: v17.6.0） 
* LINE Message API
* NHK API
* GitHub Actions

## NHK APIを取得する。
* まずはこちらからNHK API取得ページを開いてください。
(https://api-portal.nhk.or.jp/doc-genre-v2-con)

開くと右上に【新規登録】があるのでクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/0f79cce8-ccfe-4299-0d63-98b3bb7f4e91.png)

↑この内容を入力して【Create Account】をクリックしてください。
ご自身のPCに登録完了のメールが届けばOKです。
そして、登録したメールアドレス、パスワードでログインしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/569e8eff-2467-b8fe-b0c7-aae6b26f172e.png)

↑このようなページが出てきますので使用したいAPIをクリックしてください。
（私は【Program Genre API】を使用しました。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/2d8366c6-aa1c-d59c-0a85-ead51e73abc0.png)
↑そして、取得したい情報を選択して、【指定したパラメタで試してみる】を
クリックしてください。
（私が今回取得した内容を表示しています。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/24286ac7-fe8c-5c45-22cd-2ace6d88a6b9.png)
↑そうすると、ほしい情報が取得できます。
【Request URL】の【ENTER_YUOR_KEY】を先ほど取得したのAPIに変更して
使用できるようになります。



#### 自分の取得したAPIを確認したいときは・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/3b4e1db6-e194-927e-d353-0b49e7657ee5.png)
↑右上のアカウント（メールアドレス）をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/9ac09deb-d0d2-6ccb-af84-0515df4a1d95.png)
↑【Apps】をクリックすると、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/9b931e36-dc25-b48e-8152-fd8fd7c38cb9.png)
↑先ほど作成した【My Apps】が表示されますので、クリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/9701eff0-57fd-e7db-0059-860b65237c1d.png)
↑そうすると、自分のID、API Keysが確認できます。

## 作成したコードがこちら
<details><summary>実際に作成したコードはこちら</summary>

```js
'use strict';

const line = require('@line/bot-sdk');
const axios = require('axios');
const config = {
    channelSecret: '**************',
    channelAccessToken: '************************'
};
const client = new line.Client(config);


const main = async () => {
    let url = "https://api.nhk.or.jp/v2/pg/genre/270/g1/0205/2022-04-04.json?key=*********************"
    // NHK API を取得します。。
    let response = await axios.get(url);
    // ターミナルに受け取った結果を出力します。
    console.log("タイトル："+response.data.list.g1[0].title);


    const messages = [{
        type: 'text',
        text: response.data.list.g1[0].title
    },
    {
        type: 'text',
        text: response.data.list.g1[0].subtitle
    },{
        type: 'text',
        text: response.data.list.g1[0].start_time
    }];

    try {
        const res = await client.broadcast(messages);
        console.log(res);        
    } catch (error) {
        console.log(`エラー: ${error.statusMessage}`);
        console.log(error.originalError.response.data);
    }
}

main();
```
</details>


## GitHub Actionsを使用して定期的に情報を取得する。

ここは記事を書きながら疲れてきたので、
後日、やり方を記事にします！すみません笑


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/b1f4aeee-347b-5ffe-412e-dd0bd698c884.png)

てことで、接続を完了しました。笑

## 上司からのFB
上司に作成したものを使ってもらいました。


「**料理番組なんだったら、完成された料理写真とか、レシピとかほしい！！**」
とのこと。確かにそうだな・・・と。

「**あと、めっちゃ同じレシピ届くけど、これしんどいねんけど！笑**」
と言われてしましました笑

すぐに設定変更忘れてしまい、
今日1日は料理番組情報が5分おきに届くようになってました。
すぐ1週間おきに変更します！

「**あと、1週間に1回に情報取得ではなくて、番組側が情報を公開したタイミングで**
**通知が来るようにすれば、発注準備もしやすいんちゃうか？**」
発注数量が多い場合（100個を超える場合）は1週間前には
商品部仕入れ担当者に申請したいところ・・・
確かに・・・

まだまだ改善の余地ありです！


## 最後に（NHK APIは初心者にすごくオススメです！）
本当にAPI取得から設定しやすくて、使用するURLもわかりやすくて
感激しました・・・
前回のGoogleカレンダーAPIのときとは大違い！（本当に難しかったんです！）

【GoogleカレンダーAPIを使用した記事はこちら】
https://qiita.com/NagaharaHitomi/items/6f0bc022a49a21132be1

APIを初めて取得してみるよ！という方はぜひ使用してみてください。

最後まで読んでいただき、ありがとうございました。