WSLのUbuntuでyoutube動画をGoogleHomeで操作する

#はじめに
[「WSLのUbuntuでyoutube音楽をGoogleHomeで操作する」](https://qiita.com/kobbeko/items/db08ac856d9051fd4812)の動画バージョンです。
●youtube動画を声で操作し、PCで再生できるようにする。
【操作例】GoogleHomeに「youtube音楽　門あさ美」と話す
#環境（「WSLのUbuntuでyoutube音楽をGoogleHomeで操作する」と同じです）
●Windows10 HOMEのPCにWSLのubuntuをインストールする。
●ubuntuでnpm,node.js,firebase,youtube-dl,mplayerをインストールする
●iftttでGoogleアシスタント(this)でfirebaseにテキストをPUTする(that)ように設定する
●firebaseのDatabaseはgooglehome-wordにしています
●WSLのubuntuでpulseaudioでPCのスピーカを使うようにする
●Windows側でpulseaudioサーバのインストールが必要です
　https://www.cendio.com/thinlinc/download の 「Client Bundle」のリンクからダウンロードできます

#プログラム(node.js)
●firebaseとyoutubeのKeyは自分のKeyに置き換えてください
●Googlehomeからのテキストが「停止」以外の場合、youtube動画を検索して再生します。

    const firebase = require("firebase");
    var iconv = require('iconv-lite');
    var value1 ;
    var str1 = '" | sed -e "s/^/\'/" -e '
    var str2 = '"s/$/\'/" | xargs -n1 mplayer'
    var command ;
    
    function sleep(time) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve();
            },time);
        });
    }

    //firebase config
    var config = {
        apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxx",
        authDomain: "xxxxxxxxxx.firebaseapp.com",
        databaseURL: "https://xxxxxxxxxx.firebaseio.com",
        projectId: "xxxxxxxxxx",
        storageBucket: "xxxxxxxx.appspot.com",
        messagingSenderId: "xxxxxxxxxx"
    };
    firebase.initializeApp(config);
    
    const Youtube = require('youtube-node');
    const youtube = new Youtube();
    youtube.setKey('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
    
    //jsonからvalueに一致する値取得
    const getJsonData = (value, json) => {
      for (var word in json)  if (value == word) return json[word]
      return json["default"]
    }
    
    //database更新時
    const path = "/googlehome"
    const key = "word"
    const db = firebase.database()
    db.ref(path).on("value", function(changedSnapshot) {
    //値取得
    let value = changedSnapshot.child(key).val()
    if (!value) return
    console.log(value);
    var keyword = value.replace(/ /g,"");
    
    //コマンド
    const STOP1 = "/mnt/c/Windows/System32/taskkill.exe /im chrome.exe";
    
    if(value === "停止"){
      command = STOP1
    } else {
      command = '未定義'
    }
    console.log(command)
    
    //コマンド実行
    if(command === STOP1){
      sleep(2000);
      var exec = require('child_process').exec;
      exec(command, {maxBuffer: 1000*1024}, function(error, stdout, stderr) {
        if (error !== null) {
          console.log('Exec error: ' + error);
        }
      });
    }
    if(command === '未定義') {
      sleep(2000);
      var exec = require('child_process').exec;
      exec(STOP1, {maxBuffer: 1000*1024}, function(error, stdout, stderr) {
        if (error !== null) {
          console.log('Exec error: ' + error);
        }
      });
      play_youtube(keyword);
    }
    //firebase clear
    db.ref(path).set({[key]: ""});
    })
    
    function play_youtube(keyword) {
      youtube.search(keyword, 1, {'type':'video'} , function(error, result) {
        if (error) {
          console.log(error);
          return ;
        }
        //console.log(JSON.stringify(result, null, 2));
        for (const item of result.items) {
          if (item.id.videoId) {
            var exec = require('child_process').exec;
            command = "'/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe' --start-maximized --incognito 'https://www.youtube.com/watch?v="+item.id.videoId+"'"
            console.log(command);
            exec(command,  {maxBuffer: 40000*1024},function(error, stdout, stderr) {
              if (error !== null) {
                console.log('exec error: '+error);
              }
            });
            var exec = require('child_process').exec;
            //全画面表示させるためにUWSCでキーfを入力する
            command = "/mnt/c/uwsc520/UWSC.exe 'c:/uwsc520/key-f.UWS'"
            console.log(command);
            exec(command,  {maxBuffer: 40000*1024},function(error, stdout, stderr) {
              if (error !== null) {
                console.log('exec error: '+error);
              }
            });
          }
        }
      });
    }

#まとめ
●声でyoutubue動画を再生させます（Chromecast不要）
●chromeでyoutubeを再生します
●動画切り替えのためにchromeをkillしてからchromeを起動してます
chromeの子タスクも終了するので、バックグランドで起動している雨アラームなどは終了します。
●Chromecastのように「次の動画」は使用できません
●chrome起動で、全画面表示しないのでUWSCで強制的にfキーを押しています