スキップしてメイン コンテンツに移動

GoogleのURL短縮サービスgoo.glのAPIをPythonで利用する

しばらく前からgoo.glのAPI (Google URL Shortener API)が使えるようになっていたことは知っていたけど、実際に使ったことなかったので試しに使ってみた。import文を含めなければ3行で短縮URLの作成・復元の自動判別を行うことができた。条件演算子などを使えば1行にまとめられる。簡単。

ただし、正規表現は適当だし、エラー処理はしてないので、ちゃんと使う場合はその辺の処理を行う必要あり。あと、本格的に使うのであればAPIキーを取得すべき。また、Google APIs Client Library for Python使う方法もある。

http://handasse.blogspot.com/ を短縮URLに変換:

% googl.py http://handasse.blogspot.com/ http://goo.gl/RiIiD

http://goo.gl/RiIiD を元のURLに戻す:

% googl.py http://goo.gl/RiIiD http://handasse.blogspot.com/

googl.py

import sys,re from urllib2 import urlopen as U, Request as R from json import loads as J API,URL="https://www.googleapis.com/urlshortener/v1/url",sys.argv[1] if re.match('http://goo\.gl/.+',URL):print J(U(API+'?shortUrl=%s'%URL).read())['longUrl'] else:print J(U(R(API,'{"longUrl":"%s"}'%URL,{'Content-Type':'application/json'})).read())['id']

追記 (2015/3/26):

現在、API Keyを利用しないとエラーが返ってくるようなので、以下のように修正した。


コード中のYOUR_API_KEYの部分を実際のAPI Keyと差し替えれば利用できる。API Keyの取得するためには、まず、Google Developers Consoleにアクセスし、適当なプロジェクトに入り、APIと認証のAPIを選択し、Other popular APIsの中のURL Shortener APIを選ぶ。そこのページでEnable APIのボタンをクリックし、「APIコンソールでレポートを表示する」のリンクが表示されるので、そのページにアクセスする。メニューのAPI Accessを選び、そこのCreate new Browser key...ボタンをクリックする。これでAPI Keyが作成されるので、これを上述のYOUR_API_KEYと差し替えれば利用できるようになる。

コメント

匿名 さんのコメント…
python googl.py http://handasse.blogspot.com/

を行ってみましたがダメでした。
Traceback (most recent call last):
File "googl.py", line 7, in
else:print J(U(R(API,'{"longUrl":"%s"}'%URL,{'Content-Type':'application/json'})).read())['id']
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
return self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
nox さんの投稿…
コメントありがとうございます。

現在、goo.glを利用するにはAPI Keyが必須になっているようなので、それについて本文に追記しておきました。
Blogger さんの投稿…
Easily Boost Your ClickBank Banner Traffic And Commissions

Bannerizer made it easy for you to promote ClickBank products with banners, simply visit Bannerizer, and get the banner codes for your picked ClickBank products or use the Universal ClickBank Banner Rotator to promote all of the ClickBank products.