しばらく前から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と差し替えれば利用できるようになる。
ただし、正規表現は適当だし、エラー処理はしてないので、ちゃんと使う場合はその辺の処理を行う必要あり。あと、本格的に使うのであれば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を利用しないとエラーが返ってくるようなので、以下のように修正した。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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?key=YOUR_API_KEY",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'] |
コード中の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と差し替えれば利用できるようになる。
コメント
を行ってみましたがダメでした。
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
現在、goo.glを利用するにはAPI Keyが必須になっているようなので、それについて本文に追記しておきました。