가장 빨리 믹서에서 배달하면 트위터에 트윗하는 봇 만들기

소개



협력하는 서비스 자체는 이미있는 것 같습니다.
  • 【Mixer】 전달 개시의 자동 트윗 【Streamjar】:치나나 ch
  • 【mixer】 전달할 때 자동 트윗하는 방법 「MSJP편」

  • 설정이 잘되지 않았는지, 서버가 잘 작동하지 않는지,
    기대하는 동작을 받을 수 없었기 때문에 스스로 만들기로 했습니다.

    준비하는 것


  • 우분투 서버 16.04 LTS

  • 집의 서버 환경에서 구축했습니다.

    환경 구축



    mixer.com의 공식 참조 에 node에서
    하고 쓰여졌기 때문에 우선 여기에서

    nodejs 설치



    선인의 지혜를 빌립니다.
  • 우분투에 최신 Node.js를 어려움없이 설치 - Qiita

  • 진지하고 매우 간단했다.
    이하 인용
    
    #普通に 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 프로젝트 만들기


  • [참고] npm-init | npm Documentation
  • #フォルダ作成と移動
    $ mkdir my-npm-pkg && cd my-npm-pkg
    #プロジェクト作成
    $ npm init
    

    필수 모듈 설치


  • [참고] 카리나 - npm
  • [참고] Node.js에서 Twitter API를 두드린 이야기(2018년판)
  • $ npm install --save carina ws twitter
    

    기타 사전 준비



    Mixer의 ChannelID를 알아두십시오.


    https://mixer.com/api/v1/channels/<username>?fields=id
    ↑のusernameを自身のusernameに変えてアクセスしてください
    


    이런 느낌으로 나오면 OK입니다. 표시된 숫자를 적어 두십시오.

    Twitter 액세스 토큰을 얻는다.


  • [참고] Node.js에서 Twitter API를 두드린 이야기(2018년판)

  • 위의 링크를 참고로

    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 더 흥분하지 않을까 아 아 아 아

    기타 참고


  • 이마도키 자바 스크립트를 작성하는 방법 2018 - Qiita
  • GitHub - mixer/carina: Easy to use library for connecting to and using Mixer's Constellation
  • node.js를 사용하여 js 파일을 실행하는 방법 | q-Az
  • 좋은 웹페이지 즐겨찾기