Linuxゲリラ戦記

なお、私が維持できる友人の数の最大値は2です。

50.GoogleAPIで取得できる画像の最大個数。最大個数以下の取得方法

ナックス「はい。本日はGoogleAPIで一つのキーワードで検索できる画像の最大数を発表します」

デビー君「あー。そういえば聞いてなかったね。えーっと、一万個くらい?」

ナックス「いいえ。64個です」

デビー君「……ん?」

ナックス「……ん?」

デビー君「えー!!いやいや、だって、なんか今まで話を聞いてきた限りでは、大量に画像を取得出来るような感じだったじゃないか!!」

ナックス「私も改めてクラス リファレンス - Google AJAX Search API - Google Codeを見てそう書かれているのを発見して、びっくりしています」

ナックス「まーでも、エロキーワード2個で128個の画像を手に入れられると前向きに考えれば良いと思う」

ナックス「ということはですよ。一回のクエリを投げ(情報くれー)て、一度に返ってくる画像の最大個数が8個。最大画像取得個数が64だから、64÷8=8なので、私たちは最大で8ページ目までの画像を取得できるわけですね」

デビー君「ほう……」

ナックス「じゃあ、単純に」

page=0
while[ page -lt 8 ]
do

        #画像を8個取ったり、次のページへ行く処理を書く

	page=`expr $page + 1`
done

ナックス「とすれば、画像が最大個数まで取れるじゃないか!と思ったりするわけですが、そうは問屋がおろさない!」

デビー君「え?なんで?」

ナックス「もし、画像の検索結果の個数が20個だったら?」

デビー君「あー!確かに。そういう場合は、単純に8ページ目まで行こうとしても5ページ目とか6ページ目とかできっとエラーが返ってくるよね……」

ナックス「そうですね。ですが、思い出してください!Google画像APIの結果には」

{"responseData": {
 "results": [
  {
   "GsearchResultClass": "GwebSearch",
   "unescapedUrl": "http://en.wikipedia.org/wiki/Paris_Hilton",
   "url": "http://en.wikipedia.org/wiki/Paris_Hilton",
   "visibleUrl": "en.wikipedia.org",
   "cacheUrl": "http://www.google.com/search?q\u003dcache:TwrPfhd22hYJ:en.wikipedia.org",
   "title": "\u003cb\u003eParis Hilton\u003c/b\u003e - Wikipedia, the free encyclopedia",
   "titleNoFormatting": "Paris Hilton - Wikipedia, the free encyclopedia",
   "content": "\[1\] In 2006, she released her debut album..."
  },
  {
   "GsearchResultClass": "GwebSearch",
   "unescapedUrl": "http://www.imdb.com/name/nm0385296/",
   "url": "http://www.imdb.com/name/nm0385296/",
   "visibleUrl": "www.imdb.com",
   "cacheUrl": "http://www.google.com/search?q\u003dcache:1i34KkqnsooJ:www.imdb.com",
   "title": "\u003cb\u003eParis Hilton\u003c/b\u003e",
   "titleNoFormatting": "Paris Hilton",
   "content": "Self: Zoolander. Socialite \u003cb\u003eParis Hilton\u003c/b\u003e..."
  },
  ...
 ],
 "cursor": {
  "pages": [
   { "start": "0", "label": 1 },
   { "start": "4", "label": 2 },
   { "start": "8", "label": 3 },
   { "start": "12","label": 4 }
  ],
  "estimatedResultCount": "59600000",
  "currentPageIndex": 0,
  "moreResultsUrl": "http://www.google.com/search?oe\u003dutf8\u0026ie\u003dutf8..."
 }
}
, "responseDetails": null, "responseStatus": 200}

ナックス「この一番最後の "responseStatus":200。これが何だったかデビー君、覚えていますか!?」

デビー君「僕が将来結婚するお嫁さんの数だね!!」

ナックス「全然違います!!ステータスコードです。200以外の数字の場合は『エラーが起こってるぜ。坊や』という意味でした。つまり、200以外の数字が来た場合はスクリプトを途中で終了させることで、検索結果の画像の個数が少なくても大丈夫。それどころか、予想外の問題にも『ともかく200以外だったらスクリプトやめる!』っていう処理を書いておけば安心です!」

デビー君「なるほど。例えばgoogleが『今APIを使うと、魔王が復活する!頼む!ステータスコード666にしておくから、API使わないで!』っていう時なんかに、僕達がステータスコードを見て判断することで、世界は救われるんだね?」

ナックス「そうですね。他にも例えば『「デビー君と結婚したい!!」と血迷った女性がデビー君にクエリを投げてきた場合、ステータスコードの200が返ってくるのを見て、「うわー。こいつ、過去に200人の女性と結婚して離婚してるわ。多分、人間性最悪なんだろうな……」と判断する』ような時にも使えるのがステータスコード!!皆さんは今まで『ウェブサイトを見ようとしたら404エラーって出たけど、404って何?』などと思っていたかも知れませんけどステータスコードというのは大事なんです!!」

デビー君「ちょっ!!違うよ!僕は別に200人の女性と離婚したとかそういう意味で言ったんじゃなくて、ただ、こうなんというか……モテモテ的な……ハーレムて」

ナックス「次回!!ステータスコードが200以外だったらシェルスクリプトを中止する処理の実装(51.GoogleAPIでステータスコードが200以外だったら処理を終了する)!」

このエントリーをはてなブックマークに追加