ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

[python] HTMLをWebDAV経由でiPod touchに送って、オフライン閲覧しよう

今更ですが、最近iPod touchを購入しました。
何の為かというと、

  • 先日長距離出張がありまして、本を読むのだけじゃヒマになりそうだなぁ。というのが発端。
  • 机に向かっていると、段々 お○が痛くなるので、ベッドや安楽イスでネットでカウチをしたいなぁ。というのが本音。
  • 値段をチェックすると、結構安い事に気付いた。というので決定。

という次第です。
ちなみに、iPhoneにしなかったのは、常時ネット接続すると自分で歯止めが効かなくなりそうだな。と思ったのです。


購入してから暫くいじってみて、確かにユーザーインタフェースが優れているなぁと感心しました。
後、ごてごてしていない機能デザインも良いですね。
自分には逆上がりしても真似出来ないですね。(周りの要求に屈しやすい私)

オフラインなiPod

とまぁ、前振りはさておいて問題です。
iPod touchはネットワーク環境として Wi-Fiが使える訳ですが、外に出ると このWi-Fiって、意外と使える所が少ない訳です。
そういう人の為に、PHSや携帯のネットワークに繋ぐアダプタが売られているようなんですが、自分はそこまでネットワークへの強い渇望がある訳じゃないんですね。


会社への行き来で空いたヒマな時間を潰せれば十分なんです。
だから、例えばオンライン状態(家とか)で、ちょこちょこコンテンツをダウンロードしておいて、ヒマな時間で見るのでも(今は)十分事足りるんですね。


ニュースサイトとかは専用アプリで、オフラインでも読めるものがあったので、早速使っているのですが、問題は個人のWeb site。
自分は、定期的にいつも見ている個人Web siteがあるので、これをオフラインで見られると良いだろうなぁ。と思いました。
が、標準のWebブラウザは、お気に入りの保存程度しかない。
手動でWebをHTMLに落としおいて iPod touchへUSB経由でコピーし、後で見る? …面倒でやってられません。


何か方法が無いか?と思って調べてみました。


・候補1.「Read it Later」などの後で読むサービスを使う
以下に示すように、「Instapaper」と「Read it Later」が有名なようです。

無料版をちょっと試してみたんですが、

  • 「読んだ」ボタンを押すとブックマーク?が消える。
  • 残したブックマークも、ブックマークした時点の情報しか残ってないので、定期的に見る事が出来ない。

という自分的使い方に沿わない問題がありました。
何か他の方法がある気もしたんですが、Blogでの体験記事を見る限り、自分の目的とは別の使い方をされているようで…。これ以上の調査を諦めました。


・候補2.「iWebSaver」と「Web2Touch」でオフラインなブックマークを使う
以下に示すように、ブックマークにコンテンツ情報を記録する事で、オフラインでも閲覧できるようです。

見つけた時は、「キタ、コレ!」と思いました。
が、少し問題が。

  • 一々 iTunes を立ち上げるのが面倒(マシンが古くて、iTunesの起動がもっさりなので)。
  • USB接続なんぞ面倒でしたくねぇ(毎日コネクタ挿抜なんて怖いよぅ)。

という個人的わがままです。(ヤレヤレ

AirFilesとWebDAV

何か良い方法は無いかな?と思ってWebサーフィンしていたら、ふと、ファイルをWi-Fi経由で送り込んで iPod touch上で見る事ができるソフトがある事を思い出しました。

そういえば、HTMLヘルプを iPod touchで読みたいが為に、AirFiles というソフトを購入していたのだった。


これを使うと、WebブラウザWebDAVクライアントを使って Wi-Fi経由で iPod touchに送れるんですね。


これを思い出した結果、

  1. HTMLファイルを定期巡回してローカルにダウンロード
  2. WebDAVクライアントを使って、ダウンロードしたHTMLファイルを iPod touchに転送
    (Webブラウザを使わないのは、自動化が面倒そうだから)
  3. iPod touchのAirFilesで、HTMLファイルをオフライン閲覧

という自分的解決方法を思いつきました。

WebDAVを使った自動転送の実装

大分寄り道しましたが、いよいよ実装です。
今回は、わたなべさんのBlogで公開されている PythonWebDAVクライアントライブラリを、利用させてもらう事にしました。ありがとうございます。


そのままでは使う事が出来なかったので、以下のWeb siteの資料を眺めつつ、勝手にリファインさせて頂きました。


改造したコードと、それを使った自動化転送用のスクリプトとバッチファイルは、↓ここに置いています。ご自由にどうぞ。

プログラムの説明

上記の圧縮ファイルには、以下の3ファイルが入っています。

  • gethtml.py
    Webショートカットを読み取って、WebからHTMLファイルにダウンロードするスクリプト
  • filesys.py
    ローカルのHTMLファイルを、WebDAVを使ってiPod touchのAirFilesストレージにアップロードするスクリプト。(わたなべさんのソースを弄っています)
  • up_air.bat
    上の2つを連動させるバッチファイル。単に連続して呼び出しているだけです。


以下のように処理を行う流れを想定しています。

  1. 定期的に巡回したいWeb siteを、Webショートカットファイル(お気に入りの実体ファイル)として、適当なフォルダに配置する。
    仮に、'C:\LINK'フォルダに置くとします。
  2. gethtml.pyを呼び出して、Webショートカットを入れたフォルダを指定し、WebからHTMLファイルをダウンロードして指定フォルダに保存する。
    例えば、「python gethtml.py C:\LINK\* C:\HTML」とすると、'C:\LINK'にあるWebショートカットファイルを順次、'C:\HTML'フォルダに保存します。
  3. iPod touchから AirFiles アプリを起動して、タイトル画面の「Wi-Fi 情報」が出た所で、一旦止める。
    (AirFilesのサイト画像より)
  4. filesys.pyを呼び出して、ローカルのHTMLファイルを iPod touchの AirFilesの管理ストレージにアップロードする。
    例えば、AirFilesの起動メッセージが「http://192.168.2.103:8080」とあれば、「python filesys.py --upload http://192.168.2.103:8080/Myfiles/ C:\HTML\*.htm」とすると、'C:\HTML'フォルダの全てのHTMファイルを iPod touchに転送します。

終わりに

  • まずは作ってみたので、これで どれだけ使い物になるか暫く使ってみようかな、と。
  • 正直、リッチなHTMLでなくてもOKなので、w3mとかLynxを使って、テキストに落としたものを見るようにしようかなぁ。
  • WebDAVクライアントのパッチ修正なんですが、非常にテキトーです。
  • AirFilesのストレージは、WebDAVから見ると、/Myfilesの下に既定フォルダが並んでいる点にご注意を。
    /(ルート)の直下にファイルを置くと、AirFilesの画面に何も現れない事になります。
  • iPhone4.0とかやっているけど、スクリプト言語をアプリに登録してくれないかしらん?
    ○獄すりゃOKのようですけど。
  • filesys.pyは、FTPクライアントも実装しているので、FTPサーバーを持つiPodアプリ(iComicとか)に応用が利くかも。