はじめに
連携するサービスそのものは既にあるようですが、
設定が上手くいかなかったのか、サーバーが上手く動いていないのか、
期待する動作をしてもらえなかったので自前で作ることにしました。
用意するもの
- Ubuntu server 16.04 LTS
自宅のサーバーの環境で構築しました
環境構築
mixer.comの公式リファレンスにnodeで
やれって書かれていたのでまずはここから
nodejsのインストール
先人の知恵を借ります。
まじで超簡単だった。
以下引用
# 普通に nodejs, npm をインストール
$ sudo apt install -y nodejs npm
# n パッケージを導入
$ sudo npm install n -g
# n package を使って node をインストールします。
$ sudo n stable
# 混乱を避けるべく、最初に入れた古い nodejs, npm は消します。そして再ログイン。
$ sudo apt purge -y nodejs npm
$ exec $SHELL -l
# ちゃんと最新かどうか、バージョン確認
$ node -v
v10.15.3
npm プロジェクトの作成
# フォルダ作成と移動
$ mkdir my-npm-pkg && cd my-npm-pkg
# プロジェクト作成
$ npm init
必要モジュールのインストール
$ npm install --save carina ws twitter
その他事前準備
MixerのChannnelIDを知っておく
https://mixer.com/api/v1/channels/<username>?fields=id
↑のusernameを自身のusernameに変えてアクセスしてください
こんな感じで出たらOKです。表示された数字をメモしといてください。
Twitterのアクセストークンを取得しておく
上記のリンクを参考に
{
"consumer_key" :"取得したConsumer Key(API key)の値",
"consumer_secret" :"取得したConsumer Secret(API Secret)の値",
"access_token_key" :"取得したAccess Tokenの値",
"access_token_secret" :"取得したAccess Token Secretの値"
}
を作成しておきます。
スクリプトを書く
それでは実際の動作部分を作りましょう
//根幹はリファレンスからコピペ
const Carina = require('carina').Carina;
const ws = require('ws');
Carina.WebSocket = ws;
//チャンネルIDを宣言しておく
const channelId = 1234;
const ca = new Carina({
queryString: {
'Client-ID': 'Click here to get your Client ID!',
},
isBot: true,
}).open();
ca.subscribe(`channel:${channelId}:update`, data => {
//情報がアップデートされるとここが実行される
console.log(data);
if(data.online && data.updatedAt){
//配信が始まるとonlineがtrueになりupdatedAtが変更されるのでそこで判定させる
console.log("配信始まったよ!");
//ここにツイート処理
const twitter = require("twitter");
const fs = require("fs");
const client = new twitter(JSON.parse(fs.readFileSync("secret.json","utf-8")));
const message = "https://mixer.com/username で配信を開始しました。";
client.post('statuses/update', {status: message}, function(error, tweet, response){
if (!error) {
console.log("[Successfully tweet!]");
} else {
console.error('error');
}
});
}
});
実行
$ node constellation.js
{ online: true}
{ online: true, hosteeId:null, updatedAt: '2019-03-31T19:42:55z'}
配信始まったよ!
[Successfully tweet!]
配信が開始されると上記のように出力されるはずです。
最終的なファイル構成
my-npm-pkg
┣ node_modules/
┣ constellation.js
┣ package-lock.json
┣ package.json
┗ secret.js
と、なるはずです
以上です。お疲れ様でした。
あとがき
nodeを書いたことがなかったので最初Browserとか書かれてても???って状態でしたが、
普通にnode javascript.jsってコマンドで動作させられることがわかったので安心しました。
勉強不足ですね。
この投稿が誰かのお役に立てることを祈ってます。
mixerもっと盛り上がらないかなああああああ