Node.js
cli
名取さな

コマンドラインで名取さなを再生する

Nodeが入っていれば、

$ npx sana-voice てね
$ npx sana-voice エッチ

はい。という感じで再生されます。

もちろんインストールした方がいいでしょう。

$ npm i -g sana-voice

さなボタン から引数なしならランダムもしくはキーワード付きで再生します。また一度再生したものはキャッシュされます。

GitHub: akameco/sana-voice: さなボタンからランダムに再生するCLI

コマンドラインでmp3を再生するには

さて、sana-voiceを作るに当たりそれぞれのOSのmp3プレイヤーをラップしたmp3プレイヤーのCLIツールであるsymphogearを書きました。

GitHub: akameco/symphogear: cacheable mp3 player from files and url for CLI

npm install --global symphogear

でインストールできます。

それぞれのOSにはコマンドラインで動作するシンプルなmp3プレイヤーがあります。
例えば、MacOSならデフォルトでafplayが使えます。

mplayer等について以下の記事が役立つと思います。

mplayerというソフトが素晴らしすぎて困る - プログラムモグモグ

symphogearは以下のプレイヤーのラッパーです。

  • mplayer
  • afplay
  • mpg123
  • mpg321
  • play
  • omxplayer
  • aplay
  • cmdmp3

ヒットしたプレイヤーによってmp3を再生します。
これによって、環境の差異を考えずに済みます。

Node.jsでこのようなコマンドを実行したいときは、Promiseベースでchild_processを扱えるexecaが便利です。await execa(player, [await fetch(link)])みたいな感じで書けます。

また、afplayなどはurl形式を直接再生できず、ローカルにファイルを保存する必要がありますが、symphogearはurlを指定して直接再生することが可能です。
また一度再生したファイルをキャッシュされるので同じurlが指定されてもhttpリクエストが飛ぶことはありません。

関連

さなボタン http://sanabutton.ojaru.jp/ は一言でいうと努力が素晴らしいので、一度その情熱を確認すべきだと思います。

名取さな関連でいうと、24時間名取さなのことを考えているオタクが作ったttene.nvimがオススメです。