この記事は、ConoHa Advent Calender 2022の12日目の記事となります。
どうも、なりかくんです。今回は、ConoHa VPSを使ってツイキャスの指定のユーザーが配信を始めるとDiscordに通知をするプログラムを作って動かしてみようと思います。
今回は前置きがクソ長いですがお付き合いください(^^♪
ツイキャスとは?
まず、ツイキャスの存在を知らない方もいるかもしれません。(ほとんどの方は知っているかと思いますが。)そのため、一応簡単に説明をしておきます。
ツイキャスというのは、モイ株式会社が運営をしているスマホやパソコンなどから手軽にライブ配信を行えるサービスです。
このサービスは、非常に有名な方がたくさん利用していて米津玄師さんなどが過去に一度配信に利用したことがあります。
ConoHa VPSとは?
次に、ConoHa VPSについて紹介します。ConoHa VPSは、ConoHaが提供するVPSサービスです。月額589円から利用が可能で、最新CPUやオールSSDなどの超高速スペックで最強なサービスです。
また、初期費用が無料な点やテンプレートが豊富なので知識が無くても簡単に始めることが出来るというメリットがほかにもたくさんあります。
ここで今回の主役に登場していいただきます。美雲このはさんです!
こんにちは!ConoHaの応援団長であり座敷童でもある美雲このはです。
今日はよろしくお願いします!!
本日はありがとうございます~!
早速なのですが、このはちゃんはツイキャスはやったことありますか?
ツイキャスは触ったことないですね~
そうなんですね。|д゚)チラッ
あっ、それは言わないお約束(以下省略
というわけでありがとうございました~。(すべて中身はなりかくんがお送りしました。本当にすみません。。。。)
はい、という感じでなんとこのはちゃんのツイキャスのアカウントを見つけてしまったのです。https://twitcasting.tv/mikumoconoha
まあ、このアカウントで生存確認をとれたのが最終が2014年(当ブログ調べ)なのでいつ急にライブを始めるかわかりません。ですので、今回はこのはちゃんがいつ突然ライブを始めても大丈夫なように通知を作ります。
プログラムを紹介
では、まず最初に今回のプログラムを紹介します。
require("dotenv").config();
const request = require("request");
let lastMovieId = null;
async function checkUser () {
// https://frontendapi.twitcasting.tv/users/{userId}/latest-movie で取得できる
let lastedMovieResult = await requestPromise({
url: `https://frontendapi.twitcasting.tv/users/${process.env.USER_ID}/latest-movie?__n=${new Date().getTime()}`,
json: true,
method: "GET"
});
if (!lastedMovieResult.movie) return; // 配信を一度も行っていない場合は、movieがnullになる。
if (lastMovieId == lastedMovieResult.movie.id) return; // 前回も同じライブを処理した場合は無視する。
lastMovieId = lastedMovieResult.movie.id; // 最後に取得したmovieIdを記録する。
if (!lastedMovieResult.movie.is_on_live) return; // 今ライブを行っていなければ無視する。
// DiscordのWebHookにPOSTする。
await requestPromise({
url: process.env.DISCORD_URL,
json: {
content: `🔴 ツイキャスで配信が始まりました! https://twitcasting.tv/${process.env.USER_ID}/movie/${lastedMovieResult.movie.id}`
},
method: "POST",
headers: {
'Accept': 'application/json',
'Content-type': 'application/json',
}
});
}
setInterval(checkUser, 4000);
function requestPromise (param) {
return new Promise((resolve, reject)=>{
request(param, function (err, res, body) {
if(err){
reject(err);
} else {
resolve(body);
}
})
})
}
まあ見ればわかると思いますが、https://frontendapi.twitcasting.tv/users/{userId}/latest-movie
で4秒ごとにライブをしているか取得してDiscordのWebHookにPOSTしているだけです。
なお、ソースコードはGitHubに公開していますので良ければ参考にしてみてください。
ConoHa VPSを設定する
では、プログラムも出来たところでConoHa VPSを設定しましょう。今回は、せっかくですのでテンプレートを使って簡単に設定します。
まずConoHaに登録していない場合は、ConoHaに登録しましょう。
登録方法などは他の方や公式のガイドがあり、そちらのほうが分かりやすいと思うので省略します。
今回は、1コア512MBの最小限プランで動かします。このプログラム自体まったく重くないので全然大丈夫です。イメージタイプのアプリケーションからNode.jsを選択して「追加」をクリックするだけですね。
起動出来たら、VPSのIPアドレスを表示できますのでこれでSSHにログインしましょう。
Nodejsが正しく入っていることも確認できましたので、GitHubからクローンします。
(その前に私はsudo apt updateでアップデートを行いました。)
以下のコマンドでクローン出来ます。
git clone https://github.com/narikakun/twitcasting-live-discord.git
そして、クローンしたフォルダーに移動してnpm installを行います。
そして、.envファイルでツイキャスの通知するユーザー名と通知するDiscordのWebHookのリンクを設定します。
あとは、node index.jsで実行するだけでプログラムが始まります。試しに自分のIDを指定してテスト配信を開始してみるとこのようにしっかり動きました。
これを常駐させれば完成です。このはちゃんがいつライブを始めるのか楽しみですね~!永遠に待ちたいと思います。
最後に
今回は、ConoHa VPSを使って簡単にツイキャスの配信通知を作ってみました。いかがでしたでしょうか。
テンプレートなどを使って非常に簡単に、また数クリックでVPSを借りることが出来るConoHa VPSをぜひ使ってみてください。
最後までお読みいただきありがとうございました。また見てね~! #コノハチャンカワイイ
コメント