slackにyoutubeのチャンネル登録者数やtwitterのフォロワー数を通知する
趣味のVのやつでslackにyoutubeのチャンネル登録者数とかtwitterのフォロワー数やらを通知するやつを実装したのでメモ。
今回はNode.js + AWS Lambda + slack Incoming Webhookを使って実装。AWSアカウントはLambdaでバッチスクリプトを実行させるだけになってきたな…。
Youtubeのチャンネル登録者数、総再生回数を通知
APIキー取得
こちらを参照してAPIキーを取得する
承認の認証情報を取得する | YouTube Data API (v3) | Google Developers
slack Incoming webhookからエンドポイントを取得
ここにYoutube, TwitterのAPIから取得した数値をPOSTしてやる
参考にしました
qiita.com
チャンネル登録者数を取得しslackに通知
GET https://www.googleapis.com/youtube/v3/channels
で取得する
ドキュメント⇒ Channels: list | YouTube Data API (v3) | Google Developers
チャンネルの統計情報が欲しかったのでpartには statistics
を指定
const request = require('request') module.exports.handler = () => { const options = { method: 'GET', url: 'https://www.googleapis.com/youtube/v3/channels', qs: { part: 'statistics', id: 'XXXXXXXXXXXXXXXXXX', key: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX' } } // 上記設定値でyoutubeからチャンネル登録者数、総再生回数を取得 request(options, function (error, response, body) { if (error) throw new Error(error) const data = JSON.parse(body) const subscriberCount = data.items[0].statistics.subscriberCount const viewCount = data.items[0].statistics.viewCount // slackに通知 request.post({ uri: 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXX', headers: { 'Content-Type': 'application/json' }, json: { text: `チャンネル登録者数: ${subscriberCount}人\n総再生回数: ${viewCount}回` } }, function(error, response, body) { if (!error && response.statusCode === 200) { console.log(body) } else { console.log('error') } }) }) }
いつも自分はこういう時Postmanから好きな言語のソースコードを出力している。
Node.jsだとrequestモジュール使うのがおすすめ
Generate code snippets | Postman Learning Center
後はAWS Lambdaの関数として配置して毎日実行されるようにCloud Watch eventをトリガーとして設定すればOK
Twitterのフォロワー数を通知
TwitterのAPIキーを取得
参考にしました qiita.com
フォロワー数を取得しslackに通知
楽そうだったのでtwitterのライブラリを使用した
GET /users/show
でTwitterのscreen_nameから情報を取得する
GET users/show — Twitter Developers
const Twitter = require('twitter') const request = require('request') module.exports.handler = () => { const client = new Twitter({ consumer_key: '最近', consumer_secret: '趣味で', access_token_key: 'Vtuber作ってるので', access_token_secret: '動画編集できるようになってきた' }) const params = { screen_name: 'realDonaldTrump' } client.get('users/show', params, (error, user) => { if (!error) { // slackに通知 request.post({ uri: 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', headers: { 'Content-Type': 'application/json' }, json: { text: `${user.name}(${user.screen_name})のフォロワー数は${user.followers_count}人です` } }, function(error, response, body){ if (!error && response.statusCode === 200) { console.log(body) } else { console.log('error') } }) } }) }
所感
Twitterのフォロワー数とかYoutubeのチャンネル登録者数とかの通知を簡単に設定できるslackアプリ欲しいと思った(ありそう)
— くにさだ (@92thunder) February 11, 2019