LoginSignup
38
22

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-30

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

お客さまが欲しいものを欲しいときに購入できるように、準備をする。

私は小売業で働いています。

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

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

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

できたものがこちら

image.png

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

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

実装環境

  • Node.js(version: v17.6.0)
  • LINE Message API
  • NHK API
  • GitHub Actions

NHK APIを取得する。

開くと右上に【新規登録】があるのでクリックしてください。
image.png

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

image.png

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

image.png
↑そして、取得したい情報を選択して、【指定したパラメタで試してみる】を
クリックしてください。
(私が今回取得した内容を表示しています。)

image.png
↑そうすると、ほしい情報が取得できます。
【Request URL】の【ENTER_YUOR_KEY】を先ほど取得したのAPIに変更して
使用できるようになります。

自分の取得したAPIを確認したいときは・・・

image.png
↑右上のアカウント(メールアドレス)をクリックしてください。

image.png
↑【Apps】をクリックすると、

image.png
↑先ほど作成した【My Apps】が表示されますので、クリックしてください。

image.png
↑そうすると、自分のID、API Keysが確認できます。

作成したコードがこちら

実際に作成したコードはこちら
'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();

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

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

image.png

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

上司からのFB

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

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

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

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

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

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

最後に(NHK APIは初心者にすごくオススメです!)

本当にAPI取得から設定しやすくて、使用するURLもわかりやすくて
感激しました・・・
前回のGoogleカレンダーAPIのときとは大違い!(本当に難しかったんです!)

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

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

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

38
22
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
38
22