HTTP Status Code 201

TumblrAPIでポストに成功するとStatus Code 201(Created)を返すのですが、Python 2.5.2とか2.5.4だと201が帰ってきた場合、HTTPError例外を投げちゃいます(2.6は違うみたい)。なので例外処理をちょこっと追加する必要があります。

  • 参考URL

Tumblrへの投稿メール文字化け対策 - import nowhere
Big Sky :: Windowsのエクスプローラで「送る」からShareOnTumblr
urllib2 でエラー - Djangoへの片思い日記
urllib2 でエラー(続き) - Djangoへの片思い日記

#coding: UTF-8

import urllib,urllib2,sys

'''
説明
Tumblrにtype:regularでポストするスクリプトです。
argv[1]:title(タイトル)
argv[2]:body(ポストするメッセージ本文)
'''
url = 'http://www.tumblr.com/api/write'
email = 'xxx@xxx'
pw = 'xxxx'
type = 'regular'
title = sys.argv[1]
body = sys.argv[2]

msgbody = urllib.urlencode({
'email':email,
'password':pw,
'type':type,
'title':title,
'body':body,
'generator':'Tumblr Write Script'
})

#URL Open
f = None
try:
  f = urllib2.urlopen(url,msgbody)
  print f.read()
except urllib2.HTTPError, e:
  if e.code != 201: print e
finally:
  if f:
    f.close()