Mesin Pencari Image dengan Google API

Skrip auto konten dalam tutorial cara membuat blog auto-generated content sebenarnya sangat banyak fungsinya. Proses generate konten yang dihasilkan bukan hanya dalam bentuk konten tertulis saja, tapi juga gambar, book, news, dan video. Tapi kali ini kita membahas Google Search API untuk image-nya saja dulu. Seperti halnya cara kerja search engine gambar dari Bing API pada tutorial sebelumnya, Google Search API image ini lebih banyak fungsi yang kita bisa tambahkan dan hasil pencariannya juga lebih banyak dibandingkan dengan menggunakan API Bing.

Bagaimana cara membuat mesin pencari Image dengan Google API di halaman search result WordPress?, ikuti saja langkah-langkahnya sebagai berikut:

1. Buka editor search.php blog wp kamu.

2. Kode 1 (Script proses keyword) – Tempatkan Kode berikut di paling atas sebelum kode <?php get_header(); ?>, jangan lupa daftarkan situs kamu di Google API sebelumnya untuk mendapatkan API key http://code.google.com/apis/ajaxsearch/key.html

<?php define('GOOGLE_API_KEY', '');
function pete_curl_get($url, $params){$post_params = array();
foreach ($params as $key => &$val) {
if (is_array($val)) $val = implode(',', $val);
$post_params[] = $key.'='.urlencode($val);
}
$post_string = implode('&', $post_params);
$fullurl = $url."?".$post_string;
$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_URL, $fullurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040608'); //kamu bisa pake user agent yang lain, lihat listnya di sini www.user-agents.org
$result = curl_exec($ch);curl_close($ch);
return $result;
}function perform_google_web_search($termstring)
{
$start = 0;
$result = array();
while ($start<10) //kamu bisa ganti angka "50" untuk jumlah list  yang ditampilkan
{
$searchurl = 'http://ajax.googleapis.com/ajax/services/search/images?v=1.0'; 
$searchurl .= '&key='.'ABCDEFG'; //ganti ABCDEFG dengan kode api Google http://code.google.com/apis/ajaxsearch/signup.html
$searchurl .= '&start='.$start;
$searchurl .= '&rsz=large'; //kamu bisa pake "small" untuk menampilkan hanya 4 (maksimal) pencarian
$searchurl .= '&filter=0'; //kamu bisa ganti "filter=1" untuk mem-filter hasil pencarian
$searchurl .= '&q='.urlencode($termstring);
$response = pete_curl_get($searchurl, array());
$responseobject = json_decode($response, true);
if (count($responseobject['responseData']['results'])==0)
break;
$allresponseresults = $responseobject['responseData']['results'];
foreach ($allresponseresults as $responseresult)
{
$result[] = array(
'url' => $responseresult['visibleUrl'],
'title' => $responseresult['titleNoFormatting'],
'thumbnail' => $responseresult['tbUrl'],
'originalurlimage' => $responseresult['originalContextUrl'],
);
}
$start += 8;
}
return $result;
}if (isset($_REQUEST['s'])) {
$termstring = urldecode($_REQUEST['s']);
} else {
$termstring = '';}
?>

2.Kode 2 (hasil yang ditampilkan) - Tempatkan kode berikut sebelum kode <?php endif; ?>.

<?php
function hilangkan_spesial_karakter($result) { //fungsi hilangkan semua spesial karakter
	$result = strip_tags($result);
	$result = preg_replace('/&.+?;/', '', $result); 
	$result = preg_replace('/\s+/', ' ', $result);
        $result = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', ' ', $result);
	$result = preg_replace('|-+|', ' ', $result);
        $result = preg_replace('/&#?[a-z0-9]+;/i','',$result);
        $result = preg_replace('/[^%A-Za-z0-9 _-]/', ' ', $result);
	$result = trim($result, ' ');
	return $result;
}
function CleanFileNameBan($result){
$bannedkey = array("key","key","key"); //masukkan kata kunci satu persatu untuk menghindari kata-kata yang tidak diinginkan.
$result = str_replace($bannedkey, '',$result);
$result = trim($result);
return $result;
}
?>
<?php $termstring = $s ?>
<?php if ($termstring!='') {
$googleresults = perform_google_web_search($termstring);
//Kamu bisa ganti kode <h1> serta test yang ada sesuai dengan kode html dan text keinginan kamu begitu juga dengan yang lainnya
print '<h1>Gambar  '.CleanFileNameBan(hilangkan_spesial_karakter($s)).'  yang terkait:</h1>'; 
print '<p style="font-weight:bold">Powered by Google</p>';
foreach ($googleresults as $result) {
print '<div class="post">';
print '<h1 class="title"><a href="'.$result['originalurlimage'].'">'.$result['title'].'</a></h1>';
print '<a href="'.$result['originalurlimage'].'"><img src="'.$result['thumbnail'].'"/></a>';
print '<p style="color:#777777">Sumber: '.$result['url'].'</p>';
print '</div>';
}
}
?>

Selesai!

Penjelasan bagaimana hasil generate kode di atas bisa menampilkan gambar
Saya cuma mengubah referensi kode sebelumnya dengan kode berikut:

.....
'url' => $responseresult['visibleUrl'],// Kode "visibleUrl" untuk menampilkan alamat url gambar
'title' => $responseresult['title'], //Kode "title" untuk menampilkan title gambar
'thumbnail' => $responseresult['tbUrl'], // Kode "tbUrl" untuk menampilkan thumbnail gambar
'originalurlimage' => $responseresult['originalContextUrl'],//Kode "originalContextUrl" untuk menampilkan link ke halaman gambar aslinya
.....

Kode Hasil Proses

.....
print '<h1 class="title"><a href="'.$result['originalurlimage'].'">'.$result['title'].'</a></h1>';
print '<a href="'.$result['originalurlimage'].'"><img src="'.$result['thumbnail'].'"/></a>';
print '<p style="color:#777777">Sumber: '.$result['url'].'</p>';
.....

Kamu bisa belajar mengubah referensi kode tersebut dengan kode dari Google API, referensinya di sini. Selamat memodifikasi dan mencoba Sob! :)

Please Note
Ikuti petunjuk-petunjuk yang ada dalam kode.
Baca baik-baik aturan penggunaan Google API jika mau menggunakan skrip ini.
Advance user only!

Update 30 APRIL 2010
Skrip diubah untuk menyesuaikan dengan aturan main Google AJAX Search API

Baca juga tips WordPress untuk menghentikan pencurian feed konten blog WorPress Anda.


 Bagikan

Published by

Jevuska

Rachmanuddin Chair Yahya a.k.a Jevuska is the founder of Jevuska.Com, a qualified web about offering medical articles, blogging, tips, and tutorial of WordPress. Having written for Jevuska since 2007.

Code is my cookies. ~ Jev
Before you read or leave a comment, please take a couple minutes to read our Copyright & Disclaimer notice.

35 thoughts on “Mesin Pencari Image dengan Google API”

  1. Tanya lagi om, :D
    Kalo mo pasang script ini di single post n menggunakan post title sbg keywordnya, apa aja yang harus dirubah ya?
    Thanks

  2. Mau nanya nih om responseresult[‘visibleUrl’] ini mestinya memunculkan URL gambarnya kan?? tapi kok malah gak muncul ya,,?

  3. Om jevuska emang top markotop,,,

    Ternyata yang membedakan ada pada /services/search/images?v=1.0′;

    kalau untuk yang video apa tinggal ganti /services/search/video?v=1.0′;
    gitu ya om??

    trus di bagian result = array nya gemana om

  4. Om jevuska emang top markotop,,,, ternyata bedanya cuma di ajax/services/search/images?v=1.0 ya om,,,

    kalau video apa tinggal ganti ajax/services/search/video?v=1.0 gitu ya om???

    tapi di bagian $result[] = array

    harus di isi apa om??? untuk video,,

    makasih banyak dulu om untuk yang image,, udah berhasil,,

    1. agak ribet nih tetap make tutorial ini.
      Ganti http://ajax.googleapis.com/ajax/services/search/images?v=1.0 line 21 kode 1 dengan ajax.googleapis.com/ajax/services/search/news?v=1. dan arraynya pake referensi ini code.google.com/apis/newssearch/v1/reference.htm
      Begitu juga untuk kode 2-nya.

  5. Mkasih om hmpir 5 blan lbih saya nyoba agc dri om jev ,tp bru kmrin ini bisa brhasil…
    trus pngen nnya nih om,klu hsil gnerate link kluarnya d psangin kyak Adf.ly ato linkbucks gmna ya om crnya. mkasih..

    1. Om nggak pernah sih nyoba Adf.ly ato linkbucks, jadi nggak tau cara kerjanya seperti apa. Yang jelas kalo generate linknya, mainnya cuma di kode Kode 2 (hasil yang ditampilkan) line 17.

  6. asik nih trik satu ini, mo nanya om jev kalo ukuran thumbnail atau hasil gambar yang kita tampilkan agar bisa kita tentukan gimana om jev?

    1. Kamu bisa tambahkan style pada line 30 kode 2

      Misalnya seperti ini:
      print '<a href="'.$result['originalurlimage'].'"><img height="50px" width="50px" src="'.$result['thumbnail'].'"/></a>';

  7. ha ha ha… udah bisa mas… tinggal di single nya masih belum bisa.. cepetan ya postingnya.. [maksa mode ON] :D :D

    1. @Mas Adi:function-nya digabung mas Adi, terus ubah nama functionnya. Ntar ane post untuk lebih jelasnya. :)

  8. mas, klo menaikkan limit query gogle api gmna ya? untk pdf search 15K UV per day hasil searchnya ga mau muncul…. pusing…. ada ide ga mas?

  9. oh iya.. :)

    mo nanya lg oom Jev, kl yg pk nyahoo boss gmn ya oom.. kok kl liat di panduan boss ada “img.dimensions=wallpaper” kayaknya asyik tuch, soalnya kl yg di google pk width ama height perintahnya jd kebanyakan en ga variatif dimensi gambarnya, mo cb utak-atik sendiri kok jd ancur.. :)

    terima kasih atas perhatiannya oom Jev..

  10. nanya nich oom Jev, kl tampilan kode ‘result url’ khan nampilin url nya full.. kl dibikin url utamanya aja yg keliatan bisa ga oom Jev..?

    misal

    hxxp://namadomain.com/imagetampil.gif

    jadi

    namadomain.com

    atau

    situs.namadomain.com

    buat yg dr sub-domain..

    1. @Ary:bukannya kode “result url” dalam tutorial ini memang untuk memunculkan url utamanya. “result url” artinya “visibleUrl”, nah kode inilah yang memunculkan url utamanya, bukan url gambar. Referensi: hxxp://code.google.com/apis/ajaxsearch/documentation/reference.html#_class_GimageResult

  11. bisa gak mas mesin pencari di wordpress di jadikan multi pencarian misal /search/keyword , /pdf/keyword , gambar/keyword. jadi terpisah2 tetapi tetap dalam satu domain contoh kayak Kayak “Findtoyou.com”

  12. saya hanya bisa menerapkan yang auto conten di single post… yang lainnya gagal :(

    jujur saya bingung, karena mbolak mbalik :D

    1. @popopio:salam kenal mas popopio.hehehe… emang agak perlu sedikit usaha mas :mrgreen: coz saya juga posting-nya satu-persatu, hmmm nanti diusahakan diperbaiki lagi biar nggak bolak-balik :)

Tinggalkan Komentar