元ネタ
ここで試す Xulrunner を使った Webページのキャプチャー画像 を採取できるツール(web_capture)は、
既に GIHubに日本人の有志者の方が作成・公開されている web_capture(https://github.com/jugyo/web_capture)
をもとにしています。
これが、そのまま使えれば記事にすることもなかったのですが、
このツールは、2008 年で更新が止まっており、実際に最新の Xulrunner では動かなくなっていました。
そこで、(xul ファイルとiniファイルだけですが )簡単に手を加えて、最新(ver 40)のバージョンでも動作するように手を加えてみました。
web_capture の更新版 一式の ダウンロードは、
こちら からどうぞ。
Xulrunner を動作させる環境を整える
Xulrunner を動作させためには、基本的に Xサーバーが必要です。
ただ、今回は、サーバー環境で実行するので、Xサーバーを仮想的に利用できるようにする xvfb を Xulrunner と一緒にインストールします。
では、早速、インストールしてみましょう。
Xulrunner の最新版をダウンロードします
$ wget https://ftp.mozilla.org/pub/xulrunner/releases/latest/runtimes/xulrunner-41.0.2.en-US.linux-i686.tar.bz2
$ wget https://ftp.mozilla.org/pub/xulrunner/releases/latest/runtimes/xulrunner-41.0.2.en-US.linux-x86_64.tar.bz2
|
Xulrunner の最新版を /usr/local/ へ解凍します
xvfb と必要なライブラリをインストールします
$ apt-get -y install xvfb libasound2 libdbus-glib-1-2
....
|
Xサーバーを含めデスクトップ環境が既にある場合は、xvfbのインストールは必要ないと思います。
xvfbは、Xサーバーの代替として利用するもので、Xサーバーをインストールできないサーバーなどに画面環境を一時的に提供するものです。
もし、デスクトップ環境などで既にXサーバーがインストールされている場合は、以降の解説で出てくる xvfb ….. は割愛してご覧ください。
web_capture を適当なディレクトリへ解凍します
Xulrunner を使って Webページのキャプチャーを撮ってみる
xulrunner を動かしてWebページのキャプチャー画像を保存してみます。
$ xvfb-run --server-args="-screen 0, 1024x680x24" /usr/local/xulrunner/xulrunner /home/hoge/webcapture/application.ini -url https://www.youtube.com/results?search_query=F1 -file /home/hoge/webcapture/youtube.png
...
...
...
$ ls -l /home/hoge/webcapture/youtube.png
-rw-r--r-- 1 root root 366603 Nov 19 12:04 youtube.png
|
デスクトップ環境であれば、以下のように xvfb は不要で、xulrunnerのみでOKです。
$ usr/local/xulrunner/xulrunner /home/hoge/webcapture/application.ini -url https://www.youtube.com/results?search_query=F1 -file /home/hoge/webcapture/youtube.png
|
xulrunner 実行時に 以下のような出力メッセージは、現状では、デバッグ情報を全て出力するようになっているためにです。
...
JavaScript strict warning: https://s.ytimg.com/yts/jsbin/www-en_US-vfl17IRx6/feed.js, line 12: SyntaxError: test for equality (==) mistyped as assignment (=)?
...
|
これらを出力しないようにするには、以下のファイルを編集すれば良いです。
$ vi /home/hoge/webcapture/defaults/preferences/prefs.js
...
// 以下の行を全てコメントアウトするとメッセージが出力されなくなります。
// // [s] debugging prefs
// pref("browser.dom.window.dump.enabled", true);
// pref("javascript.options.showInConsole", true);
// pref("javascript.options.strict", true);
// pref("nglayout.debug.disable_xul_cache", true);
// pref("nglayout.debug.disable_xul_fastload", true);
// // [e] debugging prefs
...
|
実際に、ここで出力されウェブページのキャプチャー画像は以下のようなものでした。
これだけ撮れればOKかなぁと思います。
(おまけ)xulrunner で作成したWebページのキャプチャー画像を圧縮してみる
最後に、xulrunner で作成したWebページのキャプチャー画像は、かなり大きくなってしまうので、pngquant を使って圧縮してみます。
まずは、pngquantをインストールします。
$ apt-get install pngquant
...
|
pngquantを使ってpngファイルを圧縮してみます。
$ ls -l /home/hoge/webcapture/youtube.png
-rw-r--r-- 1 root root 366603 Nov 19 12:04 youtube.png
$ pngquant --force --ext .png /home/hoge/webcapture/youtube.png
$ ls -l /home/hoge/webcapture/youtube.png
-rw-r--r-- 1 root root 91532 Nov 19 12:07 youtube.png
|
上記の例だと、 約 24 % まで圧縮できたようです。
非可逆ながら、かなり圧縮できますね。
いかがだったでしょうか?
最近では、HTML5 や Youtube などを駆使した動画ページも増えていて、いままでのコマンドツールでは、なかなか正しくWebページをキャプチャーできなくなりつつありました。
Xulrunner を使うことで、ほぼ FireFoxで確認できるウェブページのイメージをそのまま保存することができますので、かなり、見た目通りのWebページキャプチャー画像が作成できると思います。
また、Xulrunner は、スクリプトベースで画面およびコントロールの制御などGUIを統括できるスゴイツールだと思うのですが、
ちょっと、クセもありますし、GUIとして使うにはもっさり感もあるので広くユーザに浸透していないのかなぁという感じもします・・・。
(個人的には興味深いところもあるのですが・・・。)
プログラミング好きな方なら、こんなのもあると試されるのも良いかもかもしれません。
コメントを投稿 :