トラックバック入門

今頃といえば今頃だけど、直近の仕事で使えそうなので。

はてなのトラックバックを使ってCGIを作って練習してみた。

tb.py

#!/usr/bin/env python2.4
# -*- coding: utf-8 -*-
"""トラックバックを受けて、テキストファイルに出力する。
"""
import os
DB='/tmp/tb.txt'
if not os.path.exists(DB):
	f = file(DB,'w')
	f.write('--- trackbacks ---\n')
	f.close()

def resp(error_code=0,message=None):
  s = "%d" % error_code
  if message:
    s += "%s" % message
  return s

def xml_resp(s):
  return """
  
  %s
  
  """ % s

class TrackbackRequest(object):
  title = ""
  url = ""
  blog_name = ""
  excerpt = ""
  def __init__(self,form):
    if form.has_key('title'):self.title = form['title'].value
    if form.has_key('url'):self.url = form['url'].value
    if form.has_key('blog_name'):self.blog_name = form['blog_name'].value
    if form.has_key('excerpt'):self.excerpt = form['excerpt'].value

    if not self.url:
      raise Exception,"url should exists."

  def save(self,file_name):
    f = file(file_name,'a')
    f.write('%s\t%s\t%s\t%s\n' % (self.url,self.title,self.blog_name,self.excerpt))
    f.close()

import cgi
print "Content-type: text/xml\n"
try:
  tb = TrackbackRequest(cgi.FieldStorage())
  tb.save(DB)
  print xml_resp(resp(0,str(tb)))
except Exception,msg:
  print resp(1,msg)