見出し画像

Google 検索で表示される動物の鳴き声を CLI で

一応数日前に Twitter の方で投稿
したやつを詳しく書く感じです
このページ Twitter の読み込みに
若干時間がかかるみたいです

Twitter ではモバイル画面でも全体が一度に
表示されるようにバックスラッシュを入れて
みましたが、この記事では普通に書きます

なんてくだらない…

くだらないけど楽しい

特徴

  • 前回の記事のソリューション②と同様ローカルな
    音声ファイルを使用しないので汎用性がある

  • コマンドを使う中で音声ファイルURLの変更や削除
    にいち早く気付ける(何のメリットもない)

音声ファイルの URL を調べる

Google 検索で動物の鳴き声を調べていたら動物の鳴き
声のリストが出てきたので、デベロッパツールを使って
音声ファイルの URL を調べたらこんな感じでした:

https://www.google.com/logos/fnbx/animal_sounds/rooster.mp3

# オンドリの場合

他の動物の鳴き声の URLですが、例えば牛と馬は推察
されるようにそれぞれ cow, horse でした
タイマー終了後にオンドリと馬と牛が同時に鳴く仕様の
コマンドがあれば牧場風…?

ということで "シェルスクリプトタイム"

っとその前に環境確認

環境設定

OS: Mac or Linux
パッケージマネージャーで以下をインストール:
        zsh, mplayer, ttimer

シェルスクリプトタイム

お決まり

コマンド名を決めましょう
牧場は英語で ranch だそうなので ranch でいきますか

cd /usr/local/bin # コマンドを作成したいディレクトリに移動
touch ranch
chmod +x ranch
which ranch # コマンドが作成されていることを確認
nano ranch # 好きなエディタで編集開始

オンドリの音声ファイルを再生するコマンドは以下:

mplayer -really-quiet http://www.google.com/logos/fnbx/animal_sounds/rooster.mp3

mplayer で https が失敗したので http で書きました
URL が長くてコマンドも長いですね…
これを3行書くのは見栄えが悪い気がする…

関数定義

ということで音声再生の関数名を決めましょう
動物を…召喚?
召喚は英語で…summon?
関数名は summon でいきますか

summon () {
	mplayer -really-quiet http://www.google.com/logos/fnbx/animal_sounds/${1}.mp3
}

zsh では repeat というメソッドが使えるそうです
コマンド同士を "&" で繋ぎ並行実行できるようにします
複数並列コマンドを改行して記述する時は "&" は各コマンド末尾に記述

repeat 50 { # 好きな回数に変更して下さい
	summon rooster &
	summon horse &
	summon cow
}

全体

コマンド内容全体はこんな感じ:

#!/usr/bin/env zsh

summon () {
    mplayer -really-quiet http://www.google.com/logos/fnbx/animal_sounds/${1}.mp3
}
ttimer -q $1
repeat 50 {
    summon rooster &
    summon horse &
    summon cow
}

使ってみよう

ranch 25m # 25分後に牧場

まとめ

今回は ttimer を使ってアラームとして使いましたが、
次回は crontab を使って定期実行する仕様にします

トップイラスト: 牧場の動物セット
かわいいイラストありがとうございます :)

感想・ご指摘お待ちしています