2011-01-17

オフライン機能の実現 #6 (MacBloggerGlass)

GData API 経由で取得したフィードデータをローカルに保存できるようになり、すっかりオフライン機能が完成したと思い込んでいたが(→「FeedManager が完成 - オフライン機能の実現 #5」)、実はまだ未完成だった。というのも、フィードを保存するだけでは、テキスト以外のリソースは保存されないからだ。フィードには記事のテキストしかふくまれていないから、たとえばスクリーンショット画像を表示するにはやはりネットにアクセスしなければならない。

このブログで使っているテキスト以外のリソースは主に画像とスクリプトだ。画像はスクリーンショット等で使っているし、スクリプトは Gist でコードを貼り付けるのに使っている。

さて、この問題、どう解決したものだろう?

解決の方針

まず必要になるのは、リソース(画像等)をローカルストーレジの所定の場所に保存する仕組みだ。所定の場所はフィードと同様 ~/Library/BloggerGlass/<account>/<Blog ID> とする。ここにリソースのタイプごとにディレクトリを作って保存する。画像なら images、スクリプトなら scripts となる。このとき、ファイル名はリソースの URL から生成したハッシュ値を用いる。

次に必要になるのは、フィードのテキストから対象となるリソースの URL を抜き出す仕組み。さらには、その URL をローカルなファイルへのものに置き換える仕組みも必要だ。これは、すでに内部リンクの置き換えの実現で似たような処理を作り込んでいる。ここにはいくつか工夫の余地がありそうだが、動かすだけなら素直な(ただし愚直な)方法で実現できる。

関連記事

0 件のコメント:

コメントを投稿