WSLのUbuntuでyoutube動画をGoogleHomeで操作する
はじめに
「WSLのUbuntuでyoutube音楽をGoogleHomeで操作する」の動画バージョンです。
●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キーを押しています
Author And Source
この問題について(WSLのUbuntuでyoutube動画をGoogleHomeで操作する), 我々は、より多くの情報をここで見つけました https://qiita.com/kobbeko/items/d7ee4359af5397e342f5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .