« 将棋の局面を貼り付けてみる実験。 | トップページ

Zoom が起動していたら、ニュースを読み上げない。(ソフトが起動しているか調べて、シェルスクリプトで分岐させる。)

だいぶ前に、MacOS  で Kyoko や Otoya にニュースを読んでもらうやり方を書いた。下のリンクを見てほしい。

http://honmat.cocolog-nifty.com/txt/2014/11/kyoko-otoya-6b8.html

cron で1時間に一度、時報の代わりに Kyoko にニュースを読んでもらうのだ。

でも、最近、コロナウイルスの影響で、オンライン授業をする必要があったりで、 Zoom が起動している間は、この仕組みを止めておきたいと思うようになった。

で、工夫してみた。その結果が、下のシェルスクリプト。

(1行目の仕事は、今は geektool にやらせている。なので、コメントアウトしてある。)

 

#!/bin/sh
# curl --silent https://www.asahi.com/news/ |egrep '(class=\"SW\")'|head -10 |sed -e 's/<[^>]*>//g' > ~/tempasahi.txt;
ps -A|grep "zoom"|grep -v "grep" > ~/zoom-or-not.txt;
if [ -s ~/zoom-or-not.txt ]; then
:
else
say -v kyoko "ピンポン。あさひニュースです。";
say -v kyoko -r 300 -f ~/tempasahi.txt;
fi

一応、解説。


ps -A で起動している全プロセスを表示させる。
grep "zoom' で、zoom という文字列を含む行だけ抜き出す。
grep -v "grep" は、おまじない。
(grep "zoom" では、このコマンド自身のプロセスも表示されるため。-v オプションを付けると、指定された文字列を含まない行だけ出力する。)
で、その結果を、適当なファイル(上の例では ~/zoom-or-not.txt)に書き出す。
if で、書き出したファイルが空(サイズが0)ではないか調べて、
もし、そうなら(空ではないなら、つまり、zoom が起動していれば)、何もしない。 (:は何もしないコマンド)、
そうでなければ、Kyoko がニュースを読み上げる。
といったところ。

 

|

« 将棋の局面を貼り付けてみる実験。 | トップページ

コメント

この記事へのコメントは終了しました。