2009-01-29

Google App Engineで構築したサイトの更新情報をtwitterに通知する方法

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google App Engine上に構築したSOBARCOに新規にデータが登録されたらtwitterで通知してみたいなぁと思って調べてみました。

http://handasse.blogspot.com/2008/06/google-app-engine-twitter.html
にやり方が紹介されていたのですが、それと一緒にGoogle App Engineからtwitterへの通信が遮断されているとの情報も紹介してくれていました。
2008/06ごろの話なので、今はひょっとしたら問題なくできるかもしれませんが、とりあえずこちらで紹介されていた方法はあきらめてみました。

サイトが更新された時に利用されるものといったらRSSだろうということでまずはRSSを配信できるようにしてみようと思ってみました。
そしてRSS配信できれば、blogが更新されたらtwitterに通知してくれる仕組みがあるのでそれを利用することでサイトの更新をtwitterに通知できそうだなぁと思ってみました。
実際やってみると更新してから通知されるまで設定によってはかなり遅く感じたりもしますが、とにかく通知できるということでよしとしてみました。
(その後、どういうわけか初回しか適用されないで、その後の更新がうまくいっていない感じです。ちなみにRSSでなくてAtomに変えてみましたが同じでした。)

なのでまずはRSS配信ですが、そのやり方は、
http://d.hatena.ne.jp/furyu-tei/20090108/1231437373
に紹介してくれていました。
こちらではAmazonさんを利用した例を紹介してくれていますし、肝心のところだけ抜粋して書いてくれています。
私の方も抜粋ですが、こちらのサイトを参考に以下のようにしてみました。

from django.utils import feedgenerator

fncfeed=feedgenerator.Rss201rev2Feed
#トップ要素を作成
feed=fncfeed(
title='SOBARCO'
, link='http://sobarco.appspot.com/'
, description='SOBARCO is Social Barcode!ケータイでバーコードを撮って公開しよう! '
, language='ja'
)

#必要に応じてitemを追加していく
feed.add_item(
title=タイトルに表示したい内容です
, categories=[アイテムのカテゴリをリスト形式で指定することで複数のcategoryを作ってくれます。]
, link=リンク先
, description=説明文みたなもの
, pubdate=日付データGAEのデータストアの日付型のカラムをそのまま突っ込めます。
)
#出力
self.response.headers['Content-Type']='text/xml; charset=utf-8'
self.response.out.write(feed.writeString('utf-8'))


ここで使っているdjangoのfeedgeneratorの説明として
http://djangoproject.jp/doc/ja/1.0/ref/contrib/syndication.html#django.contrib.syndication.django.utils.feedgenerator.Rss201rev2Feed
を参考にさせていただきました。

他にもRSSを作ったならば、サイトで自動でRSSを発見しもらうためにRSS auto-discoveryの設定を行うために
http://www.infomaker.jp/blog/archives/2005/individual/05_10_2343.html
を参考にさせていただき、
念のためRSSの仕様を確認するため
http://www.futomi.com/lecture/japanese/rss20.html
を参考にさせていただきました。

最後にブログの更新をtwitterに通知する方法は、
http://www.ideaxidea.com/archives/2008/05/twitter_1.html
を参考にさせていただきました。
コメントを投稿