Pythonで、Googleページランク表示ブログパーツを自作してみる。
Pythonで、Googleページランク表示ブログパーツを自作してみる。
なお、Googleページランク表示ツールはmod_wsgiのPythonアプリとして実行するので、mod_wsgiのセットアップは以下を参照してください。
ServersMan@VPS(CentOS)にWSGIインターフェース mod_wsgiをインストールする
1.httpd.confにWSGIScriptAliasを追加しApacheを再起動する
WSGIScriptAlias /prankimg /var/www/html/test/prankimg.wsgi
Apacheの再起動は/etc/init.d/httpd restart
(1)pagerank.pyの作成
http://code.google.com/p/corey-projects/source/browse/trunk/python2/pagerank.py
より、Googleページランク取得用のスクリプトを取得し、19行目を
gurl = 'http://www.google.com/search?client=navclient-auto&features=Rank:&q=info:%s&ch=%s' % (urllib.quote(url), hsh)
から
gurl = 'http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank:&q=info:%s&ch=%s' % (urllib.quote(url), hsh)
に変更し/var/www/html/test/配下に、pagerank.pyとして格納
(2)prankimg.wsgiの作成
以下のソースを、/var/www/html/test/配下に、prankimg.wsgiとして格納
#-*- coding:utf-8 -*- import sys sys.path.append('/var/www/html/test') import cgi import pagerank from PIL import Image, ImageDraw, ImageFont def application(environ, start_response): status = '200 OK' prank = '0' method = environ.get('REQUEST_METHOD') if method == "GET": query = dict(cgi.parse_qsl(environ.get('QUERY_STRING'))) if 'url' in query: url = query['url'] if url: prank = pagerank.get_pagerank(url) # pagerankイメージを作成 # イメージの外側を黒枠にするため # 大きめの黒長四角にちょっと小さい白長四角を重ねて、 im=Image.new('RGB',(72,12),(0,0,0)) im2=Image.new('RGB',(70,10),(255,255,255)) im.paste(im2, (1,1,71,11)) # それに、ページランク用の青四角を重ねて、 if prank != 'N/A': r = int(prank) * 7 im.paste((0,255,255),(1,1,r,11)) # ページランクの値を描画。 draw = ImageDraw.Draw(im) draw.text((3, 1), prank, fill=(255,0,0)) data = im.tostring('jpeg', 'RGB') response_headers = [('Content-type', 'image/jpg;'), ('Content-Length', str(len(data)))] start_response(status, response_headers) return data
3.テスト
こんな感じの、HTMLをブログなどに貼付けると
<img src="http://chamu.org/prankimg?url=http://www.w3.org/" border="0" />
W3C(http://www.w3.org/)さんのページランクが、こんな感じに表示される。
なお、実際にページランクの表示ツールのようなものを公開する時には、同じURLのGoogleへのページランクの問い合わせは、Googleサーバーへの問い合わせ負荷軽減のため、数日に1回とかに押さえるとか、
また、上記スクリプトでは、ページランク表示イメージを動的に画像を作成していますが、ページランクって、0〜10の11種類しかないので、ページランク0〜10に対応した画像を最初から11種類用意しておいて、表示したいページランクに応じて、対応する画像を読み込んでそのまま表示しする方が負荷は軽いので、そんな感じの工夫などをした方が良いとは思いますが。。。
と、そんなこんなを考えながら、お遊びで作ってみた「Googleページランク表示ブログパーツ」がこちら →
【補足】他の言語でのページランク取得スクリプトをお探しの方は、キーワード「0x3FFFFC0,0x3FFC00,0x3C000」あたりでGoogleを検索してみましょう。