2011年9月16日金曜日

Sphinx でRSSを生成する

前回記事に引き続き Sphinx のお話です。
RSS作成の方法

Sphinxで作成したドキュメントに、RSSを加えるのにはどうしたらよいだろうか?。簡単な順に方法を挙げていくと次のようになるのではないか。

  1. RSS作成サービスを利用する
  2. RSSを作成ソフトで生成し、サイトにアップロードする
  3. Sphinx拡張機能を導入し、ドキュメントと一緒にRSSを生成する

RSS生成サービスは幾つかあるようだ。自動で更新更新してくれるなど、手間もかからない。問題点としては、継続性があるサービスが少ない、機能や更新方法・頻度がサービス提供側の事情に左右される、などがある。

参考: RSSを勝手に自動作成・更新してくれる無料Webサービスまとめ 2011年版

RSS作成ソフトはフリーのものが、いくつもあるようだ。RSSのカスタマイズに柔軟に対応できる。問題点としては、別ソフトになるので余分な操作が必要になることだ。数回ボタンを押す程度だろうが、何かを操作する必要がある。もしかしたらソフトによってはバッチ登録できるものもあるかもしれない。

参考: フリーソフト100 - 無料RSS作成ソフト

RSSを作成できるSphinx拡張機能は幾つか存在するようだ。特徴はSphinxドキュメント作成と一緒に、RSSも自動作成してくれることだ。問題点としては、インストール及び設定が難しい、カスタマイズが簡単ではない。カスタマイズは自分でコード修正すれば可能というレベルである。

今回は Sphinx 拡張機能を使ったRSS作成について、導入及び設定方法を説明する。

拡張機能の導入

今回導入する拡張機能は sphinxfeed である。

参考: sphinxfeed

導入は次の手順で行う。

  1. sphinxfeed ページにある「Downloads」ボタンを押して、sphinxfeed のダウンロードを行う。
  2. ダウンロードファイルを解凍し、コマンドプロンプを開いて解凍先のフォルダまで移動する。
  3. 次のコマンドを使って sphinxfeed のインストールを行う。
    python setup.py install
    

sphinxfeed インストールを行うと、関連パッケージとして feedformatter も導入される。sphinx と合わせて次のようなパッケージが導入される。

C:\>pip freeze
docutils==0.8.1
feedformatter==0.4
jinja2==2.6
pygments==1.4
sphinx==1.0.7
sphinxfeed==0.1


追記 2012/02/11

feedformatter は自動では導入されないようです。個別にインストールしてください。

easy_install feedformatter

もしくは

pip install feedformatter
sphinxfeed の設定

sphinxfeed の設定について説明する。

conf.py
まず Sphinx の conf.py を編集し、次の記述を加える。
  • extensions 項目に sphinxfeed を加える。
    もし extensions 項目がない場合は、新しく次のように追加する。
    extensions = ['sphinxfeed','他の拡張がある場合はここ']
    
  • RSSで使用する次の記述を追加する。
    feed_base_url = 'ホストのURL'
    feed_author = '作者の名前'
    
  • 必須ではないが、次の記述を加えてRSSで利用することも可能だ。
    feed_description = '説明文'
    
記述が完了したらファイルを保存する。
 
layout.html
sphinxドキュメントのフォルダ下にある _templates フォルダの layout.html に次の記述を加える。これはRSS のパスを明示する設定だ。
{% block linktags %}

{% endblock %}
もし layout.html 自体がない場合は、次の内容が入ったファイルを layout.html で保存する。
{% extends "!layout.html" %}
{% block linktags %}

{% endblock %}
 
各ドキュメント(rstファイル)
各ドキュメントファイルの先頭にメタ情報を加えないと、そのドキュメントに関するRSSは生成されない。加えるメタ情報は次の記述になる。
:Publish Date: 2011-09-15
ドキュメントの公開日に関するメタ情報だ。ISO日付形式で指定する。記述したメタ情報はドキュメント上には表示されない。公開日に時間を設定することも可能だ。
:Publish Date: 2011-09-15 12:10
時間には秒を入れることはできない。秒を記述するとエラーになる。
 

以上で全ての設定は完了する。後は sphinx の make html コマンドを実行すれば、ドキュメントと一緒にRSSが生成される。


拡張機能の利用はカスタマイズに関しては難点ですが、文書と一緒にRSSも生成されるという利点があります。カスタマイズを希望の場合は、ソース自体は難しくないので何とかはなるかもしれません・・・。