Thursday, July 31, 2014

nodejs 外部コマンド実行

ここにC#で書いたVoiceroidTalker.exeという怪しげな実行ファイルがある。そして、私のSurfaceにはnode.jsが入っている。つまり…分かるね?

nodejsで外部コマンド

nodejs経由でゆかりさん達は喋ってくれるのか?

まあ外部コマンド叩くだけなのでできるんですけど。最近のjavascript(node)の万能っぷりが凄いことになってる。これ、Raspberryでも動いちゃうし(現在ビルド中まだ終わらにゃい。)

こんなコードを書いてゆかりさんとまきまきをしゃべらせてみた。

exec = require('child_process').exec

child = exec('VoiceroidTalker.exe', (err, stdout, stderr) ->
    if !err
        console.log "Success."
    else
        console.log "Fail."
        console.log err
)

リファレンス: http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

もう少し柔軟に書こうと思うとspawnらしい。

spawn = require('child_process').spawn
talk = spawn('VoiceroidTalker.exe')

talk.stdout.on('data', (data) ->
    console.log 'stdout:' + data
)

talk.stderr.on('data', (data) ->
    console.log 'stderr:' + data
)

talk.on('exit', (code) ->
    console.log 'exit code: ' + code
)

動くんだけど失敗したときのerrの中身がckw x NYAOSだと文字化けするんだよなぁ…。

VoiceroidTalkerがVoiceroid+のWindowハンドラ捕まえてボタン押してるだけなので、当然ながらVoiceroid+が起動していないと動かない(キリッ

一体何やってんだろうと自分でも思うorz

Written with [StackEdit](https://stackedit.io

No comments:

Post a Comment