bit.ly API for Python

コンバンハコンバンハ。

Twitter絡みのWEBサービスを作ろうとすると、140文字制限は避けて通れません。URLが見えなかったりと、セキュリティー上云々言う人もいますがURL短縮サービスを使うのは必須かもしれません。

と前置きはさておき、bit.lyをAPI経由で利用します。
非常に簡単です。
後ほど最新版のAPIに書き換えます。

こんな感じ。

# -*- coding: utf-8 -*-
# url_short.py

import urllib2
import simplejson
# google app engine の場合は from django.utils import simplejson

# configuration
BitlyUser    = "user"
BitlyAPIKey  = "api_key"

class UrlShort:
    def __init__(self, api_user=BitlyUser, api_key=BitlyAPIKey):
        self.api_uri = "http://api.bit.ly/v3/shorten?format=json&longUrl=%s&login=%s&apiKey=%s"
        self.api_user = api_user
        self.api_key = api_key

    def get(self, long_url):
        open_uri = urllib2.urlopen(self.api_uri % (long_url, self.api_user, self.api_key))
        short_url_json  = simplejson.load(open_uri)
        return short_url_json

使い方はこんな感じ

>>> from url_short import *
>>> u = UrlShort()
>>> u.get("http://google.co.jp/")
{'errorCode': 0, 'errorMessage': '', 'results': {'http://google.co.jp/': {'userHash': '*****', 'shortKeywordUrl': '', 'hash': '****', 'shortCNAMEUrl': 'http://bit.ly/aSzTx7', 'shortUrl': 'http://bit.ly/aSzTx7'}}, 'statusCode': 'OK'}
>>> u.get("http://d.hatena.ne.jp/ue10000/20100924")
{'errorCode': 0, 'errorMessage': '', 'results': {'http://d.hatena.ne.jp/ue10000/20100924': {'userHash': '*****', 'shortKeywordUrl': '', 'hash': '*****', 'shortCNAMEUrl': 'http://bit.ly/cIq77k', 'shortUrl': 'http://bit.ly/cIq77k'}}, 'statusCode': 'OK'}

jsonで返ってきます。

bitlyのAPIドキュメントを見るといろいろできそうですねー。