Apple WatchにZIP-FMのオンエアリストを通知させてみた(要Raspberry Pi)
表題とおりですが「Apple WatchへZIP-FMのオンエア曲一覧を指定時刻に通知してくれる仕組み」を作ってみました。
こんな感じのやつです。
毎朝、私はFMラジオを聴いて通勤。聴いてる番組はZIP-FMの「MORNING CHARGE」という番組。
で、時々気になる曲が流れるんですが、運転しながらだと曲名・アーティストを聞き逃すことはしばしば。
このため、昼休みなどに下記のZIP-FMのオンエア曲一覧で調べようと思うんですが
数時間経つとすっかり忘れてちゃうんですよね。
というわけで、このオンエア曲一覧をスマホなどに定期的に知らせてくれるといいなぁ・・・
できればApple Watchに知らせてくれるとなおベターなんだけどなぁ・・・
手首に情報が飛んでくればまず見逃すことはありませんし。
なによりApple Watchの活用法が一つ増えることになります。
が、残念ながらそんなニッチな要求に応えてくれるアプリはないんですよね。
てことで、ZIP-FM オンエア曲一覧をApple Watchへ指定時刻に通知する仕組みってやつを作ってみました。
とはいえ、我が家にはApple Watchアプリを作る環境はなし。さてどうしようか・・・
そういう無理難題をかなえてくれるのは
ラズパイ「ふっ・・・やはり俺が出るしかないか・・・」ガタッ
そうです、こういうことはやはりRaspberry Piに頼るしかありません。
ただApple Watchはブラウザ機能がありません。Webアプリを作るというわけにはいかず。
いろいろ考えた末、以下の手順で”通知”させることに。
(1) Raspberry Piで指定時刻になったらZIP-FMオンエア曲一覧を取得
(2) その一覧をメールで送信
(3) iPhoneで受信されてApple Watchにも通知
やはりApple Watch側は”メール”を使うのがベターかと。
てことで、早速作ってみました。
(1) オンエア曲一覧取得
まずはRaspberry PiでZIP-FM オンエア曲一覧取得までのやり方。
参考にしたのはこちらのサイト。
Pythonを使って、サイト内のテキストファイルを取得する方法です。
まず”lxml”というのをインストール。
$ sudo apt-get install libxml2-dev libxslt-dev python-dev
というのを実行したあとに、
$
sudo apt-get install python-pip
と”pip”ってやつをインストール。そのあとに、
$ sudo pip install lxml
を実行します。
で、作ったコードはこちら(ファイル名はziptext2.py)。
#!/usr/bin/env python
# coding: utf-8
import requests
import lxml.html
URL = "http://noa.media-click.net/FM/zip-fm/include/today.html"
req = requests.get(URL)
root = lxml.html.fromstring(req.content)
anchors = root.xpath('//td')
for anchor in anchors:
print unicode(anchor.text).encode('utf-8')
ZIP-FMのオンエアリストのソースコードをたどって一覧の書かれたHTMLのURLを調べ、”<TD>~</TD>”で囲まれた部分を抜き出せば、「オンエア時間/曲名/アーティスト名」が取得できます。
元リンクと若干違うのは”req.text”という部分を”req.content”としたこと。
こうしないと、日本語が文字化けしちゃうんだそうで。
ただし、文字化け自体は直りませんでしたが・・・これは後述。
このコードを保存したファイルを、以下のように実行形式にしておきます。
$ chmod 777 ziptext2.py
(2) メール送信
続いて、これをメールで送信するために参考にしたのはこちら。
Raspberry Piからメールを送信するときにはnullmailerを使ったほうが簡単かも - Muchuu
”nullmailer”ってやつを使いました。Raspberry Piへのインストール方法は
$ sudo apt-get install nullmailer mailutils
と入力。その後
$ sudo vi /etc/nullmailer/remote
の中のメール設定を記述。
smtp.gmail.com smtp --port=465 --auth-login --user=<メールアドレス> --pass=<パスワード> --ssl
Raspberry Piから送信するためのGmailアカウントを一つ作成し、これを使ってiPhoneのメアドに送信させます。
あとは以下のようなシェルスクリプトを
/home/pi/ziptext2.py | mail -s 'Zip-FM Music List' <iPhoneのメアド>
”ziptext2.sh”という名前で保存します。これも実行形式に変換。
$ chmod 777 ziptext2.sh
この”ziptext2.sh”を実行して
$ ./ziptext2.sh
ちゃんとメールが送られてくるかどうかを確認します。
多分そのままでは送られてこないはずなので、
安全性の低いアプリがアカウントにアクセスするのを許可する - Google アカウント ヘルプ
上のリンクを参考に、Gmailでセキュリティ設定をちょっと落とす必要があります。
(3) (1)(2)を指定時刻に実行 → Apple Watchへ通知
この”ziptext2.sh”を指定した時刻に実行させます。
使ったのは”crontab”というやつ。
指定した日時に自動でコマンド実行できるcrondの使い方メモ - Programming Log
上のサイトを参考に、
$ crontab -e
と入力し、
上のように記述しました。
これで毎日7時、18時ちょうどになると”/home/pi/ziptext2.sh”を実行してくれます。
つまり、毎日7時、18時になるとうちのラズパイがZIP-FMのオンエア曲を通知してくれるわけです。
しかもApple Watchに!
というわけで、最初の写真にあるようなこんな通知が着ます。
ちょっと見づらいですが、時間/曲名/アーティスト名が順に並んでます。まあ、狭い画面ではこの方が案外見やすいかも。
Raspberry Piの電気代は月50円程度らしいですし、つけっぱなしで運用しても問題なし。
てことで、これでめでたしめでたし・・・といいたいところですが。
まだ一つ問題を抱えてまして。
それは日本語の曲名・アーティスト名が文字化けすること。
Pythonって、なんだかうまく日本語を処理できないんですよね。
pythonで日本語処理めとめ@python 2.6 | Mazn.net
上のようなサイトを探し出しては解決を試みていますが、未だ解決せず・・・
ZIP-FMのサイトは”Shift-JIS”なようで、Shift-JIS → UTF-8への文字コード変換をかければいいんですけど、これがうまくいかず。
ラズパイのせいなのか、Pythonのせいなのか、単に私の理解不足なだけなのか・・・多分3つ目でしょうが、解決策が見出せず。
まあZIP-FMって洋楽が多いので、あまり困らないんですけどね。
文字化けで読めないところだけ、あとでチェックするということで・・・まあそれをやるとまた忘れてしまうんですけど。
解決策が思いついたら、また報告いたします。
ところでこの仕組み、応用次第ではいろいろ使えそう。
上の(1)ZIP-FMのオンエア曲一覧取得 の部分を他のサイト情報取得に置き換えれば、独自の通知システムが構築できます。
考えてみれば、この方法ならApple Watchじゃなくてもスマートウォッチ全般に使える技。ただし文字化けを何とかせにゃならんですが。
ニュースや天気なら専用アプリがいくつかあるんでわざわざ作らなくてもいいですけど、オンエア曲チェック以外にも、例えばどこかの通販サイトの特定の商品価格チェックだとか、個人用掲示板の定期チェックなどにも使えますよね。
でも、やっぱりApple Watchアプリが作れるとよかったんですが。
そろそろMac miniあたりを買ってみようかな?
« マウスコンピューターのWindows Phoneのブランド名は”MADOSMA” | トップページ | 目と耳が不自由な方がApple Watchのおかげで変わった!? »
「iPhone」カテゴリの記事
- Apple Watch SEを使って10日ほど経過(ついでに東京旅行記)(2024.08.05)
- Apple Watch SEを買いました(2024.07.27)
- iPhone 15 Plusを使って4週間目のレビュー(2024.06.08)
- 最大45W出力のUSB-C端子を持つUSB‐A × 2 、USB-C × 2、電源4口タップを購入(2024.05.15)
- iPhone 15 Plusを1日ほど使った感触(2024.05.13)
« マウスコンピューターのWindows Phoneのブランド名は”MADOSMA” | トップページ | 目と耳が不自由な方がApple Watchのおかげで変わった!? »
コメント