サイトアイコン Lonely Mobiler

オレオレtwitter蔵に短縮URL機能を入れる。

以前作った オレオレtwitter蔵 を家と会社で常用しているのだが、短縮URL機能が欲しくなったので実装した。bit.ly が api を公開しているのでそれを使って作ります。

bit.ly の api を使用するには登録が必要だけど、username と mail address を入れるだけなので非常に楽です。

bit.ly, a simple url shortener

登録したら以下の画面が出るでしょう。ここに表示される bit.ly login と bit.ly API key を使用します。

以下 api の実行テスト
手元の環境は Python2.5 な為、標準では json が入っておらず、simplejson を使用しています。easy_install からサクっとインストールできます。Python2.6 からは json module が標準で使えるんですけどね。

>>> import simplejson >>> >>> login = 'username' >>> apiKey = 'apiKey' >>> longUrl = 'http://example.com/' >>> >>> apiurl = 'http://api.bit.ly/shorten?login=%s&apiKey=%s&version=2.0.1&format=json&longUrl=%s' % (login, apikey, longUrl) >>> ret = urllib2.urlopen(apiurl).read() >>> j = simplejson.loads(ret) >>> j {u'errorCode': 0, u'errorMessage': u'', u'results': {u'http://example.com/': {u'shortKeywordUrl': u'', u'hash': u'VDcn', u'userHash': u'cwdkZo', u'shortCNAMEUrl': u'http://bit.ly/cwdkZo', u'shortUrl': u'http://bit.ly/cwdkZo'}}, u'statusCode': u'OK'}

実行は上手く行ったので、以前作成した twitter クライアント に組み込みます。変更点以外は省略してます。

# bit.ly API bitly_login = 'login' bitly_apiKey = 'apiKey' bitly_apiUrl = 'http://api.bit.ly/shorten?login=%s&apiKey=%s&version=2.0.1&format=json&longUrl=%s'

def shortenUrl(message): m = re.search('(http://[a-z0-9_/\.\-\+\?\!\*=,><\[\]:;@%#&]*)', message, re.I) if m : longUrl = m.group(0) url = bitly_apiUrl % (bitly_login, bitly_apiKey, longUrl) j = simplejson.loads(urllib2.urlopen(url).read()) shortUrl = j['results'][longUrl]['shortUrl'] return message.replace(longUrl, shortUrl)

return message

if __name__ == '__main__': #getOAuth() message = shortenUrl(' '.join(sys.argv[1:])) if isinstance(message, str): postOAuth(unicode(message, 'cp932').encode('utf-8')) elif isinstance(message, unicode): postOAuth(message.encode('utf-8'))

これでおk。

-- 03/19/2010 script の一部を修正

Sponsored Link
モバイルバージョンを終了