オレオレ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 を使用します。

bit.ly api login and 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'))


tweets with bit.ly

これでおk。

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

Sponsored Link

シェアする

フォローする