12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BTTでTouch Barにyahooニュースを表示する。

Last updated at Posted at 2018-03-05

はじめに

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作り

まず、表示したい内容を標準出力するスクリプトを作成します。

yahooニュースの経済ジャンルの最新記事を表示するスクリプト.py
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をクリックして設定を開く。

tb_app1.png

widgetの設定

1.スクリプトを実行するコマンドを記述する。

真ん中のでっかいフォームに記述する
PYTHONIOENCODING=utf-8 python ~/touch_bar/yahoo_news.py

右側のRun Scriptで実行結果の確認が出来る。文字化けする事もあったので要チェック。

2.実行間隔の設定

Execute this script eventry x secondsのバーを調整して、何秒毎に実行するか設定する。ニュースの読み込みならmaxの100秒間隔でも十分。(数値をダブルクリックするとそれ以上の数値も設定出来る。)

3.アイコンの設定

Finderからアイコンとして使いたい画像をドラックして設定する。

その他にも色とか大きさとか設定できるので適宜変更されたし。

bt_app2.png

タッチしてwebページを開くようにする

別のwidgetを作成し、Predefined ActionからOpen URLを選択する。
出てくるフォームに開きたいURLを設定すれば、デフォルトのブラウザで表示されるようになる。
これを先ほど作成したwidgetに重ねようとすると、くっ付き、矢印が表示されTouch Barタッチするとwebページを開くようになる。

tb_app3.png

##つまづいた点

aliasが使えない

anaconda上の仮想環境のモジュールをインポートしようとした際に、モジュールを見つけられなかった。これはanacondaの環境に入れてないから。当然。
そこで、anacondaに入ろうとしてつまづいた。どうにも環境変数が使えないっぽい。~.bashrcを読み込んで無い様子なので、 aliasを使っている人は注意。

文字化けする

スクリプトをコマンドラインで実行する分には問題ないが、Touch Barに表示すると上手くいかない。
そこでpythonを実行する際にPYTHONIOENCODING=utf-8と指定してあげると上手くいった。

おわりに

以下のように表示されるようになる。
Touch Barショット 2018-03-05 17.12.14.png

あまり活用出来ていなかったTouch Barだが、ニュースが表示されると意外と目につき便利。

:thinking:oO(yahooファイナンスはダメだけど、yahooニュースはスクレイピングしても問題ないよね?)

12
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?