Webnail AppleScript

たくさんの Web ページを自動巡回して、そのサムネイル画像を撮影する AppleScript アプレット。

というかほとんど、「CSSでイケてるデザインサイトリンク集 (Gecko サムネイル版)」ページ作成のためだけに作ったようなモノ。

WEBページがキオスクになる日 中編」にて配布されてるソフトと同じような事を MacOSX 上で出来ないかと考え、 AppleScript でムリヤリ実現してみた次第。

だうんろーど他

Webnail AppleScript をダウンロード
2003/05/24 (v1.0) / gzip 圧縮 dmg / 92 KB 改訂履歴
ソース公開中
AppleScript ソース(プレーンテキスト)

動作に必要なもの

使用方法

  1. URL リストファイル (list.txt) の準備。巡回する URL をつらつらリストアップしてください。一行につき URL を一つ。最後の行の行末にも改行を入れてくださいな。改行コードは CR じゃないとマズイです。 # で始まる行はコメント扱いで、無視されます。
  2. Camino の環境設定ダイアログにて、 JavaScript をオン、ポップアップブロックをオフに設定。これを行わないと巡回できません。
  3. システム環境設定の「省エネルギー」ペインにて、ディスプレイのスリープを「しない」に設定。巡回撮影処理中にディスプレイがスリープしてしまうと、真っ黒な画面しか撮影できないため。
  4. 同じくシステム環境設定ダイアログの「スクリーンエフェクト」の「始動設定」ペインにて、「スクリーンエフェクトを開始するまでの待ち時間」を「起動しない」に設定。巡回撮影処理中にスクリーンセーバが発動してしまうと、スクリーンセーバの画面ばかりが撮影される罠にハマります(笑)
  5. 以上が準備できたら、 Webnail (GC) か Webnail (GI) のどちらかをダブルクリックして起動。

以後、処理が完了するまで、他の作業は事実上不可能になるです理由は後述

撮影したサムネール画像ファイルと一覧用 HTML は、保存用フォルダ (result フォルダ) へ納められていきます。巡回撮影が完了したら、保存用フォルダが Finder で開かれて、終了。

動作原理

  1. ウインドウサイズも位置もばっちり決め打ちした Camino でページを開く
  2. Camino がページのロードを完了したかどうかを AppleScript 側から知る術は無いので、とりあえず 10 秒待つ。
  3. シェルコマンド screencapture で画面全体のスクリーンショットを取得し、クリップボードへ格納。
  4. クリップボードに格納された画像から、Camino のページ表示域だけを切り抜き(そのためにウインドウ位置とサイズを決め打ちする必要があった)、縮小、 JPEG あるいは PNG 形式でファイル保存
  5. それをしながら、 HTML を生成して、ファイル出力。

本家の Webnail.exe は IE コンポーネントを使ってるようで、「ページ表示」「ブラウザウインドウ中の表示を画像データとして取得」「そこからサムネール画像を生成保存」という一連の処理を、アプリ単体で内部完結させる事が出来てます。よってアプリを裏側で作動させてても問題なく画面撮影が出来る。

しかし上記動作原理のように、 AppleScript でブラウザウインドウ中の表示画面を得るには、ブラウザを操って画面上に実際に事を起こし、それをうまいこと撮影するしか無い。撮影に失敗しないような仕掛けもいろいろ必要。そのために「アプレットの動作が終わるまで他の作業が事実上不可能」な状態となっちゃうわけでして。

まぁ逆にいえば、複数の既存アプリを連携制御する事によって「不可能を(ある程度)可能にする」というのが AppleScript の存在意義であり真骨頂でして。

FAQ

なんで Safari じゃなくて Camino ナノデスカ。
  • ぼくの今現在のメインブラウザが Camino だから。
  • 「 HTML/CSS の実装度が現在最強である Gecko ブラウザでの表示をサムネールにできたら」というのがそもそもの発端だから。Webnail.exe は Windows IE での表示画面をサムネールにする物だけど、しかし HTML/CSS を激しくダイナミックかつ適正に使ってるサイト作者の中には、 WinIE での表示 (CSS 実装度) が不愉快である人も少なくない。ハードコアな人々になると Gecko 以外の事なんか考慮してなかったりする(標準仕様通りに正しく記述してる以上、腐ったブラウザでどうなろうと構わない…という厳格な立場は間違った考えではない)。もちろん Safari の HTML/CSS 実装は WinIE なんか比較にならん程マシではあるけど、 Gecko よりは見劣りする。
  • Safari を使う様にする書き換えはたぶんカンタンだとおもうので、自力でヨロシク。
あまりに非実用的ですよ?
そのとおりですが何か。「 Web ページ群のサムネール画像を作る」という本来の目的よりも、ソレを AppleScrpt で実現するという手段それ自体が目的になっちゃった、ただの日曜スクリプター的趣味活動の産物ですからして。
GraphicConverter も GraphicImporter OSAX も持ってないけど、他の AppleScript 対応のグラフィックツールなら持ってるですが?
自力でなんとかしちゃってください
Safari のコアである例の Framework を使ったアプリなら、単体で動作させられるんじゃないのですか?
ぼくにはそんなんムリです。作ったら公開キボンヌ。 Gecko エンジン利用だとなおいいのだけど…。
たくさんのページを巡回させると時間がかかるし、その間何もできないから困ります
寝る前に仕掛けるとか。
たくさんのページを巡回させた時の出力 HTML ファイルがなんかブッ壊れてる時があるような?
原因不明です。 AppleScript の限界に達した瞬間を刻み込んでいるのかもしれない。
うごきません
しりません。

改訂履歴

2003/05/24 (v1.0)
  • ファーストリリース

Copyright © 1998-2006 ALIMIKA SATOMI/NYAN-NYAN-HANTEN.Created: 2003/05/24, Last-modified: 2003/05/25