履歴もしくは日誌
2012 年 12 月の履歴(もしくは日誌)
2012 年 12 月
12 月 15 日
『津田大介のメールマガジン「メディアの現場」』を自動で Kindle Paperwhite にプッシュ
津田大介さんのメールマガジン「メディアの現場」を購読しています.このメールマガジンは ePub 版も配布されていて ePub 版のほうが読みやすいです.その ePub 版を Kindle Paperwhite に自動転送できたら便利かなと思って,試してみたらうまくいきました.で,どうやったのかを紹介します.
動作はこんな感じ.
- iMac がメールを受信すると AppleScript を起動する.
- AppleScript が Fake.app というスクリプトで自動化できるブラウザを起動して ePub をダウンロードする.
- 続いて AppleScript がシェルスクリプトを起動して,シェススクリプトが ePub を Dropbox の指定フォルダに移動する.
- Wappwolf のサービスが Dropbox に保存された ePub ファイルを Kindle 用のファイル形式に変換して Kindle にプッシュする.
- Kindle Paperwhite がコンテンツを受信する.
- 「メディアの現場」が Kindle Paperwhite で読める!
つまり Mac 環境の話です.
ここでの説明では次のようなディレクトリ構造の前提があります.
- ~/Dropbox/Workflow/
- ここに yakan-hiko-tuda-epub-recent-download.fakeworkflow ファイルと yakan-hiko-tuda-epub-recent-download.bash を置いてます.これは AppleScript 側にそう書いています.
- ~/Library/Application Scripts/com.apple.mail/
- ここに yakan-hiko-tuda-epub-recent-download-mail.scpt を置きます.
- ここに AppleScript を置くと Mail.app のルールから起動できます.
- ~/Downloads/
- ePub ファイルはここにダウンロードされます.
- ~/Dropbox/SendToKindle
- ePub ファイルがここに移動されると Wappwolf のサービスがファイルの変換をします.
まずは AppleScript を書きます.
tell application "Finder" activate set myDocument to (path to home folder as text) & "Dropbox:Workflow:yakan-hiko-tuda-epub-recent-download.fakeworkflow" open document file myDocument end tell tell application "Fake" activate run workflow delay 30 quit end tell tell application "Finder" activate set script_name to (path to home folder as text) & "Dropbox:Workflow:yakan-hiko-tuda-epub-recent-download.bash" set script_name to script_name as alias set script_name to quoted form of POSIX path of script_name set my_result to do shell script "sh " & script_name end tell
この AppleScript は Fake.app の起動と Fake.app の Workflow (スクリプト)の実行,およびシェルスクリプトの実行をします.
Load http://yakan-hiko.com/list.php?no=11 Delay for 2.0 seconds if text 'ログイン' Click Link '/HTML[1]/BODY[1]/DIV[4]/DIV[2]/DIV[1]/SPAN[3]/A[1]' Delay for 2.0 seconds Set '/HTML[1]/BODY[1]/DIV[4]/DIV[2]/DIV[3]/FORM[1]/FIELDSET[1]/TABLE[1]/TBODY[1]/TR[2]/TD[1]/INPUT[1]' to 'username' Set '/HTML[1]/BODY[1]/DIV[4]/DIV[2]/DIV[3]/FORM[1]/FIELDSET[1]/TABLE[1]/TBODY[1]/TR[3]/TD[1]/INPUT[1]' to 'password' Click Element '/HTML[1]/BODY[1]/DIV[4]/DIV[2]/DIV[3]/FORM[1]/FIELDSET[1]/DIV[1]/INPUT[2]' Load http://yakan-hiko.com/list.php?no=11 Delay for 2.0 seconds End If Click Link '/HTML[1]/BODY[1]/DIV[4]/DIV[2]/DIV[4]/FIELDSET[1]/DIV[1]/UL[1]/LI[2]/A[1]' Delay for 2.0 seconds Click Link '/HTML[1]/BODY[1]/DIV[4]/DIV[2]/DIV[4]/FIELDSET[1]/DIV[1]/DIV[3]/TABLE[1]/TBODY[1]/TR[1]/TD[1]/A[2]'
username と password の所は,それぞれ夜間飛行のアカウントにあわせて書き換えてください.上に Workflow をテキストで書いて示しましたが,Fake.app ではこれをコピーアンドペーストしたりして使えないので,後で示すリンクから Workflow をダウンロードしてください.
Fake.app では GUI で操作すればクリックする HTML の要素を XPath の表現に変換します.そういう所が便利です.
Fake.app の Workflow が実行されたら,次に AppleScript からシェルスクリプトが実行されます.
#!/bin/bash cd ~/Downloads/ recentepubfile=`ls -t *.epub | head -n 1` if [ $recentepubfile ]; then downloadedfile="${HOME}/Downloads/${recentepubfile}" dropboxfile="${HOME}/Dropbox/SendToKindle/${recentepubfile}" mv $downloadedfile $dropboxfile fi
これは単純にファイルを移動しているだけです.ホームディレクトリに Dropbox フォルダがあって,その中に SendToKindle フォルダがある事が前提です.ダウンロードした ePub ファイルを SendToKindle フォルダに移動します.
Dropbox に ePub をコピーできれば,あとは Wappwolf っていうサービスを使えば ePub を Kindle 用 mobi 形式に変換して Kindle Personal Documents Service にメール送信まで自動でやってくれます.それは Pieces of Peace というブログで丁寧に解説されていますので,そちらをご覧ください.
ぼくが使っているスクリプトファイルなんかを zip でかためて置いておきます.そのまま簡単にすぐに使えるって感じぢゃないけど.
- ここで紹介しているスクリプトとか
- http://onohiroki.cycling.jp/archives/yakan-hiko-tuda-epub-kindle.zip
いろいろなツールを組み合わせてますが,Perl とかで全部書くってのも良いかもね.とりあえず,ぼくのところではちゃんと動いたので,ぼくはこれで良いかなと.
やっぱり将来的には「The Book Project 夜間飛行」側で Kindle へのプッシュに対応してくれるとありがたいなぁ.
Permalink Trackback URI http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20121215n1 TrackBack