Picasaのプラグインを作ってみる

APIはこちら→Picasa API - Google Code
トップページは日本語化されてるけど、リンクされてるそれぞれのAPIページは英語。


…使い方を端折ると、

  • Picasa画面上にボタンを表示する設定ファイル
  • ボタンから呼び出された後の実際のプラグイン部分

の2つを実装する必要がある。


まずボタン。これは単にボタンの設定を書いたXMLファイル(拡張子はPBFにする)を作ればいい。XMLファイルの仕様はPicasa Button APIを参照。


インストール用にはPBFファイルからPBZファイルを作る必要がある。PBZファイルはドキュメント上では「Picasa Button Zipfile (PBZ) file - Archive that contains the the PBF and PSD files」以上の説明は書いていないが、実際にこのファイルはZIP形式で圧縮されているファイル。なので、PBFファイルをZIP圧縮して拡張子をPBZに変えるだけでok。


PBZファイルはWebサイト上に<a href="picasa://importbutton/?url=http://example.com/hogehoge.pbz">という形のリンクを置いて、クリックすることでPicasaが自動的に起動し、インストールされる。
インストールされたPBZファイルは以下の場所に保存される。
%APPDATA%\Google\Picasa2\buttons\
%APPDATA% は通常は C:\Documents and Settings\ログイン名\Local Settings\Application Data などのパス。*1
このフォルダに格納しただけでは有効にならない。


Picasa上で ツール → ボタンを設定 を起動して、有効にすると初めてPicasaのメイン画面上にボタンが現れる。上記のリンクからPicasaを起動した場合は自動的にボタン設定画面が表示される。


初めてプラグインに手を出す場合は、プラグインのサンプルをいろいろインストールしてみて、中身を参考にするのがよいだろう。
ダウンロードされたPBZファイルの拡張子をPBZからZIPに変えてやると、一般のZIPアーカイバWindowsのZIPフォルダ参照で中身を見ることができる。解凍すると、ボタン設定の本体であるPBFファイル(XMLテキストファイル)を見ることができる。


ちなみにデフォルトで入っているBlogThis!ボタンは、C:\Program Files\Picasa2\buttons フォルダ*2に入っている core-lh2.pbz の中に入っている({B9012CB2-DD50-49a5-B4CB-009344BBA285}.pbf)ので、これもZIPファイルとして解凍すれば中身を見ることができる。


<?xml version="1.0" encoding="utf-8" ?>
<buttons format="1" version="1">
<button id="custombutton/blogger" type="dynamic">
<placement>5.0</placement>
<icon name="outputlayout/blogger_icon" src="runtime"/>
<label>BlogThis!</label>

<tooltip>Post photos to your blog via Blogger</tooltip>
<tooltip_da>Indsæt billeder i din blog med Blogger</tooltip_da>
<tooltip_de>Foto an Ihr Blog über Blogger senden</tooltip_de>
<tooltip_en-gb>Post photos to your blog via Blogger</tooltip_en-gb>
<tooltip_es>Publica fotos en tu blog mediante Blogger.</tooltip_es>
<tooltip_fi>Lähetä valokuvat blogiin Bloggerin kautta</tooltip_fi>
<tooltip_fr>Publier les photos dans votre blog via Blogger</tooltip_fr>
<tooltip_it>Pubblica immagini sul tuo blog via Blogger</tooltip_it>
<tooltip_ja>Blogger からブログに写真を投稿</tooltip_ja>
<tooltip_ko>Blogger를 통해 사진을 블로그에 게시하십시오</tooltip_ko>
<tooltip_nl>Foto's naar uw blog verzenden via Blogger</tooltip_nl>
<tooltip_no>Legg ut bilder til bloggen din via Blogger</tooltip_no>
<tooltip_pl>Opublikuj zdjęcia w blogu za pomocą usługi Blogger</tooltip_pl>
<tooltip_pt-br>Publicar fotos no seu blog através do Blogger</tooltip_pt-br>
<tooltip_ru>Разместить фотографии в блоге с помощью Blogger</tooltip_ru>
<tooltip_sv>Lägg upp bilder på din på blogg via Blogger</tooltip_sv>
<tooltip_tr>Blogger ile fotoğrafları blog'unuza gönderin</tooltip_tr>
<tooltip_zh-cn>通过 Blogger 将照片张贴到您的博客</tooltip_zh-cn>
<tooltip_zh-tw>透過 Blogger 將相片貼至您的 blog</tooltip_zh-tw>

<action verb="hybrid">
<param name="url" value="[]http://photos.blogger.com/picasa-post.g[]"/>
</action>
</button>
</buttons>


BlogThis!ボタンは verb="hybrid" として、http://photos.blogger.com/picasa-post.g へポストする実装になっている。これはPicasa Web Uploader APIを使ったサーバ側で動作するプラグインの実装。


verb="trayexec" にすると、ローカルのプログラムを起動して、引数として画像ファイル名を受け取ることができる。なのでローカル動作するプラグインを作りたい場合はこちらを使う。
画像ファイルの引渡しは引数で行われるため、プラグインとして他に必要なものは何も無い。引数として画像ファイル名を受け取る普通のWindows実行ファイルを作るだけでよい。


実行ファイルはexeに限らず、CreateProcessが受け付ける形式であればよく、例えばbatファイルも可。プラグインプログラムの引数には画像ファイル以外のパラメータは渡すことができないようだが、バッチファイルを経由することで画像ファイル以外のパラメータを付与することも可能。


例えばこんな感じ。
C:\Documents and Settings\hogehoge\Local Settings\Application Data\Google\Picasa2\buttons\PicasaPluginTest.pbf


<?xml version="1.0" encoding="utf-8" ?>
<buttons format="1" version="1">
<button id="PicasaPluginTest/{24B0B8DE-D8CE-1A60-6E5F-95614B467102}" type="dynamic">
<label>Plugin Test</label>
<label_ja>プラグインテスト</label_ja>
<tooltip>This is a plugin test for Picasa.</tooltip>
<tooltip_ja>これはPicasaプラグインのテストです。</tooltip_ja>
<action verb="trayexec">
<param name="exe_name" value="c:\temp\PicasaPluginTest.bat"/>
<param name="export" value="1"/>
</action>
</button>
</buttons>
PBF(XML)はUTF-8で保存する必要があるので注意。


C:\temp\PicasaPluginTest.bat


wscript c:\temp\PicasaPluginTest.js %1 %2 %3 %4 %5 %6 %7 %8 %9


C:\temp\PicasaPluginTest.js


s = "Picasaプラグインに渡された引数\n";
for(i = 0; i < WScript.arguments.length; i++){
s += "[" + i + "] " + WScript.arguments.item(i) + "\n";
}
WScript.echo(s);


一般公開する場合はPBZファイルを作って、ドキュメントに書いてあるようなリンクを使って公開することになるが、とりあえずローカルでデバッグしたい場合は、プラグインダウンロードフォルダ(%APPDATA%\Google\Picasa2\buttons\)にPBFファイルまたはPBZファイルを入れておけば、Picasaのボタン設定画面に現れるようになる。


例えばPicasa上で画像を3つ選んでプラグインボタンを押した場合、上記のスクリプトが起動され、画面にはこんな感じで表示される。

Picasaプラグインに渡された引数
[0] c:\Documents and Settings\hogehoge\Local Settings\Temp\Picasa2\temp_2\Image0001.jpg
[1] c:\Documents and Settings\hogehoge\Local Settings\Temp\Picasa2\temp_2\Image0002.jpg
[2] c:\Documents and Settings\hogehoge\Local Settings\Temp\Picasa2\temp_2\Image0003.jpg

画像ファイル名が3つ、渡されていることがわかる。


実行ファイル名が変わらない限り、PBFファイルから起動する実行ファイルはいくら書き換えてもok。Picasa側で再操作する必要もなし。


なおパラメータの詳細はドキュメントを参照するとして、簡単に書いておくと、
exportパラメータを "1" にすると、Picasa上で明るさや切り取りなど画像処理を行った後の画像をテンポラリファイルに一旦出力し、そのファイルパスを渡してくれる。exportパラメータを書かない場合は、画像処理前の元のファイルパスが直接渡される。
foreachパラメータを "1" にすると、画像ファイル1つごとに実行ファイルが呼び出される。複数画像選択時は、画像ファイルの数だけ実行ファイルが呼び出され、引数にはそれぞれ1つずつ画像ファイルパスが渡される。foreachパラメータを書かない場合は、実行ファイルが1回だけ呼び出され、その引数に複数の画像ファイルパスが渡されてくる。
といった感じ。

*1:コマンドプロンプトで echo %APPDATA% と入力すれば自分の環境の設定を確認できる

*2:インストールフォルダは環境ごとに違う可能性があるので注意。私の場合はデフォルトのままC:\Program Files\Picasa2にインストールしたので。