主な変更点
- プロキシ対応
- プレビュー機能とbloggerpost2htmlコマンドを追加
- HTMLをそのまま通すフィルタを追加
- Rubyのコードをevalするフィルタを追加
- Amazonアソシエイト・プログラム支援機能を追加
プロキシ対応は、まあ、特に説明するところはない。HTTPとHTTPSは分けて、プロキシ認証にも対応している。
プレビュー機能は、フィルタ機能のデバッグに必要だったので追加した。激しく便利なので、もっと早く作ればよかった。bloggerpost2htmlはプレビューの機能を独立させたコマンド。
下の三つは、今回機能拡張したフィルタの機能。スタイルと同じく、ディレクトリにファイルを入れるだけで動作する。Rubyのevalフィルタならfilterディレクトリに
class RubyFilter < BloggerPost::Filter
def translate(html)
html = filter_text(html, 'bpruby') do |src|
eval(src)
end
return html
end
end
BloggerPost.register_filter(RubyFilter)
というファイルを突っ込めば、evalフィルタが動くようになる。フィルタの文法は共通なのだが、詳しくは各々の機能のところで説明しよう。
HTMLをそのまま通すフィルタというのは、
[bphtml <del>hoge</del> bp]
もしくは、preタグの中に
bphtml
<ul>
<li>hoge</li>
<li>fuga</li>
</ul>
という形式で使う。結果は、
hoge
- hoge
- fuga
となる。要するに単にスルーするフィルタなんだけど、どうしてこんなものが必要なのかというと、大抵のスタイルでは、そのままHTMLを書いてもエスケープされてタグとは解釈されないので、どうしてもHTMLで書きたいときのために追加したというわけ。ちなみにインライン形式の'['は'{'でも'('でも動作する。スタイルの形式と被らないのを選択しよう。
Rubyのコードをevalするフィルタというのは、この記法を使うとRubyのコードをブログに埋め込めることができるようになる。
例えば、インラインの場合は、
このファイルを変換したのは[bpruby Time.now.strftime('%Y年%m月%d日') bp]です。
と書くと、
このファイルを変換したのは2007年02月19日です。
と表示される。preタグを使う場合は、
bpruby
require 'find'
home = ENV['BPHOME'] + '/lib/' # BPHOMEというのは僕のマシンの環境変数
files = []
Find.find(home) do |file|
files << file.sub(home, '') if file =~ /\.rb$/
end
'<pre>' + files.join("\n") + '</pre>'
と書くと、
hikidoc.rb
bloggerpost.rb
bloggerpost/filter/embedvideo.rb
bloggerpost/filter/flickr.rb
bloggerpost/filter/asin.rb
bloggerpost/filter/ruby.rb
bloggerpost/filter/html.rb
bloggerpost/filter/syntax.rb
bloggerpost/style/bhtml.rb
bloggerpost/style/stx.rb
bloggerpost/style/ettext.rb
bloggerpost/style/rst.rb
bloggerpost/style/rd.rb
bloggerpost/style/plain2.rb
bloggerpost/style/html.rb
bloggerpost/style/apt.rb
bloggerpost/style/wiki.rb
bloggerpost/style/markdown.rb
bloggerpost/style/grutatxt.rb
bloggerpost/style/txt2tags.rb
bloggerpost/style/textile.rb
bloggerpost/style/asciidoc.rb
と表示される。こんな機能を気軽に導入できるのはクライアントツールならではだね。セキュリティを考えなくてもいいからね。
そして、今回のメインと言えるAmazonアソシエイト・プログラム支援機能。いわゆるアフィリエイトってやつだね。今回は、ASINというAmazonで扱っている商品を一意に示すコードから、個別商品へのリンクを作成するという機能を実装した。
と書くとイメージしづらいのだが、要は、こいつのパクリだ。
書籍・音楽・映画の紹介リンクを挿入する(isbn/asin記法)
はてなは、リンクを辿ると、はてなの商品紹介ページに飛ぶわけだが、BloggerPostでは、ちゃんとAmazonのページに飛ぶようになってる。(まあ、はてなは商売でやっているので、しょうがないのだが)
では、どうやってこの機能を使うのかというと、まず、Amazonのアソシエイト・プログラムとAmazon E-Commerce Serviceに登録する。ECSにも登録しないといけないのは、ちょっと面倒臭いが、細かい情報を取ろうと思うとしょうがない。
取得したIDをconfig.ymlに書く。
amazon:
awsaccesskeyid: 170MPM6XPQTA41ANYGG2
associateid: lifeisuneafor-22
そしてブログに
bpasin:B000GWKY4O:title
bpasin:B000GWKY4O:image
bpasin:B000GWKY4O:detail
というような記述をすると、
と表示される。画像の大小も指定できる。
bpasin:404427102X:detail:small
bpasin:B0007D5J38:detail:large
で
と表示される。で、クリックした先で24時間以内に購入すれば、3%くらいのお金がもらえるらしい。らしいというのは、まだ試してないから。もちろん、BloggerPost側でアフィリエイトを掠め取るようなセコい真似はしていません。
まあ、今回の機能は、アフィリエイト目的というよりは、書籍とかの情報を表示したかったという感じかな。
それにしても、今回の変更は、芋蔓式に修正点が増えて、今までで一番大変だった。そろそろ真面目に字句解析した方がいいかもしれない。
0 件のコメント:
コメントを投稿