はじめに
macユーザーお馴染みのBTT(BetterTouchTool)はトラックパッドやキーボードショートカット、さらにはTouch Bar上にボタンを作成し、様々な操作を行うことができる。
そんなBTTがアップデートでTouch Bar上にShellScriptの実行結果を表示出来るようになった。BitBarのような便利なモノを作れたらなぁ・・と思いながら良いアイデアが浮かばないので、チュートリアルとしてyahooニュースを表示することにした。
pythonを使いますが、ShellScriptならなんでもおkです。
環境
macOS High SIerra v10.13.3
BetterTouchTool v2.331
python(anaconda) v3.5
ShellScript作り
まず、表示したい内容を標準出力するスクリプトを作成します。
from bs4 import BeautifulSoup
import requests
url = requests.get('https://news.yahoo.co.jp/hl?c=bus')
soup = BeautifulSoup(url.content,'html.parser')
news = soup.find(class_='listFeedWrapBox').find(class_='titl').get_text().strip()
print (news)
$ python ~/touch_bar/yahoo_news.py
ピザ味のソーセージ爆誕
##BTTの設定
1.widgetの作成
+widgetをクリックして新規のwidgetを作成する。
2.Run Shell Script and Show return valueを選択
Select Touch Bar WidgetからRun Shell Script..を選択する。
3.widgetの設定を開く
Advanced Configurationをクリックして設定を開く。
widgetの設定
1.スクリプトを実行するコマンドを記述する。
PYTHONIOENCODING=utf-8 python ~/touch_bar/yahoo_news.py
右側のRun Scriptで実行結果の確認が出来る。文字化けする事もあったので要チェック。
2.実行間隔の設定
Execute this script eventry x secondsのバーを調整して、何秒毎に実行するか設定する。ニュースの読み込みならmaxの100秒間隔でも十分。(数値をダブルクリックするとそれ以上の数値も設定出来る。)
3.アイコンの設定
Finderからアイコンとして使いたい画像をドラックして設定する。
その他にも色とか大きさとか設定できるので適宜変更されたし。
タッチしてwebページを開くようにする
別のwidgetを作成し、Predefined ActionからOpen URLを選択する。
出てくるフォームに開きたいURLを設定すれば、デフォルトのブラウザで表示されるようになる。
これを先ほど作成したwidgetに重ねようとすると、くっ付き、矢印が表示されTouch Barタッチするとwebページを開くようになる。
##つまづいた点
aliasが使えない
anaconda上の仮想環境のモジュールをインポートしようとした際に、モジュールを見つけられなかった。これはanacondaの環境に入れてないから。当然。
そこで、anacondaに入ろうとしてつまづいた。どうにも環境変数が使えないっぽい。~.bashrc
を読み込んで無い様子なので、 aliasを使っている人は注意。
文字化けする
スクリプトをコマンドラインで実行する分には問題ないが、Touch Barに表示すると上手くいかない。
そこでpythonを実行する際にPYTHONIOENCODING=utf-8
と指定してあげると上手くいった。
おわりに
あまり活用出来ていなかったTouch Barだが、ニュースが表示されると意外と目につき便利。
oO(yahooファイナンスはダメだけど、yahooニュースはスクレイピングしても問題ないよね?)