LoginSignup
0
0

More than 5 years have passed since last update.

最速でMixerから配信したらTwitterにツイートするボットを作る

Posted at

はじめに

連携するサービスそのものは既にあるようですが、

設定が上手くいかなかったのか、サーバーが上手く動いていないのか、
期待する動作をしてもらえなかったので自前で作ることにしました。

用意するもの

  • 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に変えてアクセスしてください

Image 005_frame.png
こんな感じで出たらOKです。表示された数字をメモしといてください。

Twitterのアクセストークンを取得しておく

上記のリンクを参考に

secret.json
{
  "consumer_key"        :"取得したConsumer Key(API key)の値",
  "consumer_secret"     :"取得したConsumer Secret(API Secret)の値",
  "access_token_key"    :"取得したAccess Tokenの値",
  "access_token_secret" :"取得したAccess Token Secretの値"
}

を作成しておきます。

スクリプトを書く

それでは実際の動作部分を作りましょう

constellation.js
//根幹はリファレンスからコピペ
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もっと盛り上がらないかなああああああ

その他参考

0
0
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
0
0