せっかくなので、Pelicanのプラグインを書いてみました。 ひとまずあっさりと参考になりそうなのは、以下の二つのページかな。
上記を参考にしつつ、Amazonのアフィリエイトなプラグインが無さそう(?)なので、 自前でさらっと書いてみると……実験的に以下な感じに(注: このコードには後述する不具合があります)。
from pelican import signals
import re
def content_object_init(instance):
settings = instance.settings
if instance._content is not None:
content = instance._content
# [amazonaffi:affiliate-id|link-name]
instance._content = re.sub(r'\[amazonaffi:(.+)\|(.+?)\]',
r'<a href="http://www.amazon.co.jp/dp/\1/?tag=%s">\2</a>' % (settings.get("AMAZON_AFFILIATE_ID")),
content)
return instance
def register():
signals.content_object_init.connect(content_object_init)
これで、 pelicanconf.py
に以下を追加。
なお、ディレクトリを pelican_amazonaffi
として、pythonのファイル名を amazonaffi.py
としてます。
ディレクトリには __init__.py
も置いとります。
# Amazon
AMAZON_AFFILIATE_ID = 'tirasweel-22'
# Plugins
PLUGIN_PATHS = [
'plugins',
]
PLUGINS = [
'pelican_amazonaffi.amazonaffi',
]
これで、エントリに [amazonaffi:]
って記法で書いたのがamazonのリンクへと置換されます。
こんな感じ→ サンワサプライ USBヘッドセット
……が、上記のコードだとバッククォートで囲まれてるような箇所も置換されてしまいますな〜。 上記のコードの部分も置換されてしまった(ので角括弧の後ろに空白入れてます)。
商品名も自動で取ってきてほしいし、また明日以降対応を考えよう。
ちなみになんでこんなリンクなのかというと……、そのうちわかるかもしれません(謎)。