A Django site.
10月 8, 2008
» web_capture - Web サイトのスクリーンショットを撮るためのコマンドラインツール

web_capture というコマンドラインツールを作りました。
これを使うとコマンドラインから Web サイトのスクリーンショットを作成することができます。

ダウンロード

GitHub に置いてあります。

jugyo’s web_capture at master — GitHub

以下のコマンドで取ってこれます。

git clone git://github.com/jugyo/web_capture.git

使い方

以下のようにしてコマンドを実行します。

xulrunner web_capture/application.ini -url <Web サイトの URL> -file <保存先のファイル名>

例えば、「http://jugyo.org/」のスクリーンショットを作成してカレントディレクトリに「screenshot.png」として保存したい場合は以下のようなコマンドを実行します。

xulrunner web_capture/application.ini -url http://jugyo.org/ -file screenshot.png

感想など

プログラムとしてはかなり小さくてシンプルなものなんですけど、作るのに意外と苦労しました。
ていうか、XUL ってなかなか難しいですね。
難しいんだけど、かなり簡単に Gecko の機能が使えて面白い。
canvas すごいっすね。
描画された Web ページの内容を簡単に取り込めたりとか。

処理の流れは以下のような感じです。

  1. XUL の browser という要素を使って Web ページを描画
  2. browser に表示された内容を、drawWindow という canvas 関連のメソッドを使って canvas 要素に描画
  3. canvas 要素に描画された内容を画像データに変換してファイルに保存

ファイルに保存したりするのもなにげに面倒くさい。

参考にしたページ

Latest topics > ウィンドウ全体を覆い隠してゴニョゴニョするためのライブラリを作った - outsider reflex
Latest topics > フォルダの指定で相対パスと絶対パスの両方の指定に対応する - outsider reflex
SCRAPBLOG : canvas要素によるWebページのスクリーンショット保存機能

10月 4, 2008
» Mac で XULRunner アプリケーションを動かすには

Mac で XUL を動かす場合、Linux なんかとはやり方が違ってくるみたい。
Linux の場合は、xulrunner コマンドの引数として XUL アプリケーションの application.ini ファイルを指定するだけでよかったんだけど。
Mac の場合は、xulrunner-bin というコマンドでまず XUL アプリケーションをインストールして、そうしてできた .app ファイルを起動するという手順を踏まないといけないっぽい。

例えば XUL アプリを「my_xul_app」というディレクトリに作っていた場合、以下のようにしてインストールする。

/Library/Frameworks/XUL.framework/xulrunner-bin --install-app ./my_xul_app

そうすると、「/Applications/(Vendor)/(Name)」の位置にインストールされる。
「Vendor」とか「Name」っていうのは、「my_xul_app」ディレクトリ以下にある application.ini というファイルに書いてある情報。

インストールが上手くいくと、例えば「/Applications/jugyo/my_xul_app.app」というファイルが作成されて、こいつをダブルクリックすれば起動できる。
また、作成した XUL アプリケーションにコマンドラインオプションを渡したい場合は、ターミナルで以下のようにしてプログラムを実行すすればよい。

/Applications/jugyo/my_xul_app.app/Contents/MacOS/xulrunner [OPTION]

なんか面倒くさいな。

追記:
XUL アプリケーションのファイルもろもろは「/Applications/jugyo/my_xul_app.app/Resources/」以下に置かれるから、それを直接いじればよさそうだ。