「携帯さーちあしすと」の裏側を公開 - APIを使って遊ぶ1

見た目も機能もショボいと大評判の携帯さーちあしすとだが、実際やってることも別に大したことないので、公開してみる。

「APIを使って遊ぶ」シリーズその1。今回はGoogle SugegstをAPIとして使う。

APIの利用方法についてはもっとえらい人がいっぱい書いているのでそちらを参考にしてもらう。 超簡潔に書くと、サーバにリクエストを投げるとレスポンスが返ってきて、それを整形して表示さす、みたいな流れ。 こちらが大変参考になるので参照されたい。
公開APIを利用したサンプルサイトを作っていくよ

言語はPerl,PHP,Java,Ruby,Pythonなど、データのやりとりもREST,JSONなどがあるわけだが、ここではPerl+REST決め打ちでやる。 他は知らない。

で、早速やったことを書く。

ファイル構成は以下のようなシンプル極まりないものとなっている。

  • keitai-assist.html
  • keitai-assist.cgi

htmlで検索語を投げて、cgiで色々処理すると。
で、htmlで実際に稼働している部分はこれだけ。



<form action="keitai-assist.cgi" method="get" accept-charset="UTF-8">
<input type="text" name="q" size="20" value="">
<input type="submit" value="検索"> ※複数語OK
</form>


少な。formタグで、検索語を「q」という名前で投げているだけ。

で、cgiの方はこんな。 貼ってみると長いな。



#!/usr/bin/perl

use lib ‘/virtual/ほげほげ/perl/lib/perl5/‘;
use warnings;
use CGI;
use WebService::Simple;
use Data::Dumper;
use WebService::Google::Suggest;
use Encode;

my $query = CGI->new()->Vars();
my $q = $query->{q};


# 日本語Googleを利用する
$WebService::Google::Suggest::CompleteURL
    = “http://www.google.com/complete/search?hl=ja&js=true&qu=”;

my $suggest = WebService::Google::Suggest->new();
my @suggestions = $suggest->complete(“$q”);



#---------------------------------
# HTML表示部
#---------------------------------

print <<“EOF”;
Content-Type: text/html;charset=UTF-8
Status: 200 OK
Content-Language: ja

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html lang=”ja”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8”>
<title>携帯さーちあしすと</title>
</head>
<body bgcolor=”#ffffff” TEXT=”#333333” LINK=”#3333cc”>

<!-- タイトル -->
<h2>携帯さーちあしすと</h2>
<!--/タイトル -->
クリックでGoogleでの検索に飛びます。
検索語 = “<a href=”http://www.google.co.jp/m?q=$q”>$q</a>”

EOF

#q=$q

# Google Suggest結果表示
if (@suggestions){
for my $suggestion (@suggestions) {

#$suggestion->{query}が内容、$suggestion->{results}が件数
print <<“EOF”;
<a href=”http://www.google.co.jp/m?q=$suggestion->{query}”> $suggestion->{query}</a>
EOF
}

}else{
print “No result.”
}
# Google Suggest



print <<“EOF”;


</body>
</html>


EOF

exit 0;



あんなシンプルなサイトなのに、陰ではこんなコードがうごめいていたのですね。 じゃ、そういうことで!

じゃなくて、最初からいこうか。



#!/usr/bin/perl

use lib ‘/virtual/ほげほげ/perl/lib/perl5/‘;
use warnings;
use CGI;
use WebService::Simple;
use Data::Dumper;
use WebService::Google::Suggest;
use Encode;

  1. perlのパスは適当にサーバに合わせる
  2. use lib...はCPANモジュールをユーザディレクトリにインストールして使いたいからコールしてる。これはXREAでの例なので、使っているサーバに合わせる
  3. WebService::Simple; これがAPIいじくるのに使いやすいCPANモジュール
    ゆーすけべー日記: WebService-Simple-0.09 の使い方
  4. Dumperはデバッグ用に、返ってきたXMLを展開表示するのに使ってる
  5. WebService::Google::Suggestは、Google SuggestをAPI化して使うためのモジュール
    はい。そうです。要はGoogle Suggest呼び出してるだけなんですね。
  6. Encodeは、utf-8フラグが付いている文字をprintしようとするとエラーが出るので、その辺の小細工をするために使う。詳細は以下参照。
    Perl 5.8.x Unicode関連


my $query = CGI->new()->Vars();
my $q = $query->{q};


# 日本語Googleを利用する
$WebService::Google::Suggest::CompleteURL
    = “http://www.google.com/complete/search?hl=ja&js=true&qu=”;

my $suggest = WebService::Google::Suggest->new();
my @suggestions = $suggest->complete(“$q”);

API周りのホントの作業部はこんだけ。この部分はWebService::Google::Suggestの使い方の話なので、以下を参照されたい。 →WebService::Google::Suggest - CPAN MEMO

あとはHTML表示部だが、最初の方はどうでもいいのでキモのところだけ。



# Google Suggest結果表示
if (@suggestions){
for my $suggestion (@suggestions) {

print <<“EOF”;
<a href=”http://www.google.co.jp/m?q=$suggestion->{query}”> $suggestion->{query}</a>
EOF
}

}else{
print “No result.”
}
# Google Suggest

$suggestion->{query}が内容、$suggestion->{results}が件数。 これらをGoogle先生への検索結果へのaタグに組み込んで一丁上がりと。

ああ長かった。
そしてニーズがあるかは例によって不明。

そんじゃ!

皆さんの拍手が私のモチベーションです。
励ましのコメントも送れるよ!→

ガッツゴリラ

この最も大事な位置にガッツポーズをするゴリラが表示されていることに何の意味があるのだろうか?答え:何もありません。こんなところまでお読みいただきありがとうございました。

Macオンラインウエア情報検索

Loading
Macオンラインウエア情報検索についてはこちらを参照ください。 →「Macオンラインウエア情報検索」をアップデートしました2012

このブログ記事について

このページは、2009年5月 2日 00:26に書かれたブログ記事です。

ひとつ前のブログ記事は「「うごメモ」と「ボケて」の共通点」です。

次のブログ記事は「読書メモ:「なぜか、仕事が速い人」の時間管理術」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

アーカイブ