Bing Search Image API Azure Format Json PHP

Cara membuat parsing format json ke PHP pada Bing Search Image API Windows Azure dengan kode sederhana.

Format xml search image dengan Bing API lawas yang gratis alias free, sudah tidak berlaku. Yang dipakai sekarang Bing API V.2 atau dengan Windows Azure Markerplace, masih ada yang gratis walaupun terbatas (limit) hanya sampai 5000 request. Dengan menggunakan format Bing Windows Azure, kita dapat melakukan parsing PHP yang sederhana untuk Bing Search Image format json dengan cara berikut:

Membuat Form Search Box

<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>">
	Type in a search:
<input type="text" id="searchText" name="s"
	value="<?php
		if (isset($_GET['s']))
		{
			echo($_GET['s']); 
		}
			else 
		{ 
			echo('superman');
		}
?>"/>
<input type="submit" value="Search" id="searchButton" />
</form>

Menampilkan hasil pencarian gambar berdasarkan kata kunci (keyword) yang ditentukan.

if (isset($_GET['s'])) {
	$accountKey = 'your-account-key-here'; //get it here https://datamarket.azure.com/account
	$ServiceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';
	$count = 2;//total list
        $skip  = 0; //for paged
        $WebSearchURL = $ServiceRootURL . 'Image?$format=json&$top=' . $count . '&$skip=' . $skip . '&Query=';
	$context = stream_context_create(array(
		'http' => array(
		'request_fulluri' => true,
		'header'  => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey)
			)
	));
	$request = $WebSearchURL . urlencode( '\'' . $_GET['s'] . '\'');
	$response = file_get_contents($request, 0, $context);
	$jsonobj = json_decode($response);

	echo('<ul id="result">');
	foreach($jsonobj->d->results as $value)
	{                        
		echo('<li class="resultlistitem">');
		echo('<b>Title</b>: ' . $value->Title .'<br>');
		echo('<b>Url</b>: ' . $value->MediaUrl .'<br>');
		echo('<b>Source</b>: ' . $value->SourceUrl .'<br>');
		echo('<b>Display Url</b>: ' . $value->DisplayUrl .'<br>');
		echo('<b>Width</b>: ' . $value->Width .' px<br>');
		echo('<b>Height</b>: ' . $value->Height .' px<br>');
		echo('<b>File Size</b>: ' . KByteSize($value->FileSize) .'<br>');
		echo('<b>Image Type</b>: ' . $value->ContentType .'<br>');
		echo('<b>Thumbnail Url</b>: ' . $value->Thumbnail->MediaUrl . '<br>');					
		echo('<b>Thumbnail Display</b>:<br><img src="' . $value->Thumbnail->MediaUrl. '"><br>');
		echo('<b>Large Image Display</b>:<br><img src="' . $value->MediaUrl. '">');
		echo('</li>');
	}
	echo("</ul>");
}
	
//function to convert file size image
function KByteSize($bytes) {
    $size = $bytes / 1024;
    if($size < 1024)
        {
        $size = number_format($size, 2);
        $size .= ' KB';
        } 
    else 
        {
        if($size / 1024 < 1024) 
            {
            $size = number_format($size / 1024, 2);
            $size .= ' MB';
            } 
        else if ($size / 1024 / 1024 < 1024)  
            {
            $size = number_format($size / 1024 / 1024, 2);
            $size .= ' GB';
            } 
        }
    return $size;
}

Tampilannya seperti gambar ini

Bing Image Api
Tampilan API Bing Search Image

Pastikan Anda mencantumkan Primary/Account Key Anda dalam kode tersebut, silahkan daftar di Windows Azure https://datamarket.azure.com/account, gratis terbatas. Semoga bermanfaat.

Reference Code
Migrating Bing Search API Applications


 Share

Author: 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.

39 thoughts on “Bing Search Image API Azure Format Json PHP”

  1. bang gambarnya gede bingitz sampe meluber2 hehehe
    cara ngecilin gimana bang?maksud ane kalo kita klik baru muncul resolusi gambar aslinya,jadi kalo tampil disitus imagenya pada ukuran rata yang kita inginkan.
    tks sebelumnya bang :)

    1. Dari beberapa opsi echo dalam kode ini, untuk large size

      echo('<b>Large Image Display</b>:<br><img src="' . $value->MediaUrl. '">');
      1. maksud ane sortir langsung dari:
        $WebSearchURL = $ServiceRootURL . ‘Image?$format=json&$top=’ . $count . ‘&$skip=’ . $skip . ‘&Query=’;

        udah ane coba ambil image dari parameter $value->MediaUrl,
        tapi yg size kecil juga ikut keangkut.

        tks reply-nya :)

        1. Kode $WebSearchURL nggak perlu di sortir mas. Untuk menghapus thumbnail, cukup hilangkan kode

          echo('<b>Thumbnail Url</b>: ' . $value->Thumbnail->MediaUrl . '<br>');
          echo('<b>Thumbnail Display</b>:<br><img src="' . $value->Thumbnail->MediaUrl. '"><br>');
  2. Gan gimana agar permalink search uniq, asalnya kan gini : www.namadomain.com/?s=good+images&cat=0

    agar seperti ini www.namadomain.com/search/good-images.html atau gini www.namadomain.com/search-good-images.html

    Gimana?

    Gan , ane pasang script diatas di theme AGC vitarich dan permalink search STT2 seperti ini www.namadomain.com/search/good-images.html
    Nah tu script diatas nggak work (AGC image ngk tampil), script baru jalan jika permalink nya /?s=good+images&cat=0

    Lalu piye solusine gan?

    1. Perlu dimengerti mas, script PHP ini masih mentah, sangat mentah bahkan, dan bukan cuma diperuntukkan hanya untuk WordPress, karena blog ini punya kategori khusus untuk tutor WordPress, begitu juga script-script lainnya yang ada di blog ini. Jadi tidak bisa langsung digunakan untuk production site, just development. Jadi tugasnya para developer untuk menyesuaikannya dengan cms atau aplikasi yang digunakan. Khusus WP, kalau masalah permalink, plugin STT2EXTAT sudah ada menyediakan pengaturan permalink untuk itu, query s harus diganti get_search_query. please try to learn more about WP theme here https://developer.wordpress.org/themes/getting-started/ dan solusi lainnya please contact your developer.

  3. rame lagi post agc imagenya semenjak google update api hehehe..kalo pake yang ini kira2 kalo kuota azure limit jadi eror image gak nongol ya bang?masih ragu nih buat masang entar baru masang seminggu udah keburu limit hehehe.
    jadi eror nih bang bisa bantuin bang?ane ada script agc image yg masih work tapi ane gak bisa edit biar jadi 1 file php doang

      1. bukan virus bang mungkin iklan popup nakal hehehe..
        agc .ane ada plugin agc wordpress yg agc imagenya masih work..bisa bang jevuska bantu edit biar jd 1 file php/yang lebih simple.ane email ya bang…kesian situs ane page imagenya melompong hehehe

  4. Thanks gan, script nya work. tapi ane ingin pasang script nya di 404.php coding nya gimana gan, ane sdah coba2 tetap ngak work

    Please bantu ane gan

    1. Untuk WordPress, kode ini menggunakan GET dengan parameter s yang ditujukan untuk halaman search, sedangkan halaman 404 tidak merequest query varian s, lebih baik tetap menggunakan halaman search.php di tambahkan di bagian loop jika tidak ada post yang ditampilkan dan code PHP header tetap 200 OK. Halaman search yang “not Found” bukan berarti itu adalah halaman 404. Selalu hindari halaman web kita menuju ke halaman 404.

      1. Begitu baiklah. Terima kasih atas jawabannya

        Maaf gan masih belum paham, bisakah jika script di atas dipasang di singlepost.php dan work?

        Jika iya, coding nya gimana?

        1. Untuk WP, itu tergantung dari apa yang ingin kita request dari halaman WP. Jika hanya menginginkan title halaman yang direquest pada single post, cukup menggunakan

          single_post_title()

          menggantikan $_GET[‘s’]

          1. Maaf gan

            Karena saya nggak paham coding dan PHP.

            iya script diatas untuk page search.php namun karena theme yang saya gunakan AGC nya dipage 404.php,

            Jadi please untuk memanggil script AGC diatas agar berjalan di page 404.php (request di page 404.php), scriptnya gimana?

            1. gunakan $_SERVER[‘REQUEST_URI’] combine dengan str_replace atau preg_replace untuk menghilangkan beberapa path untuk mendapatkan kw-nya. And remember don’t create your 404 page crawled to index by robots, its harm for your site.

  5. Gan nih script masih work nggak?
    nggak ada contoh blognya gan work atau nggak gitu?

    Please Gan share script AGC Google search image terbaru nya Gan?

    1. Scriptnya ada.. kebetulan ada sobat blogger yang bagi via email kemarin… tapi saya dilarang share. So sorry, belum bisa saya share.

  6. dalam satu pencarian defauld nya 50 gambar.kalo pingin page 2 atau gambar yg 51 ke atas gimana ya mas ?
    coba gunakan page=2 gak bisa

  7. Mau tanya om , caranya kalau menambahkan lebih dari api key gimana ya codingnya ? jadi kalau 5000 api pertama habis, otomatis pakai api kedua dan seterusnya.. terima kasih.

    1. belum tersedia API untuk mengetahui total request, jadi musti selalu memantau di https://datamarket.azure.com/account/datasets

  8. Eror bang
    Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /home/***

    1. Maaf Gan

      Sebenarnya malu tanya melulu

      Mohon bantuannya ya

      Kode ini $_GET[‘s’] semuanya sdah diganti dengan $_SERVER[‘REQUEST_URI’]

      Permasalahan nya untuk kode str_replace atau preg_replace ini cara gabungnya gimana, (sdah cari2 digoogle and dicoba2 ngk bisa)

      Please Gan kasih contoh lengkapnya ya untuk 404.php seperti contoh diatas (search.php)

      Terima kasih sebelumnya Gan

      1. Misalnya url halaman error itu seperti ini http://www.example.com/topic/whatever-this-keywords.html, maka:

        $q = str_replace( home_url('/'), '', $_SERVER['REQUEST_URI']); //remove home url
        $q = str_replace('topic/', '', $q );  //remove topic
        $q = str_replace('-', ' ', $q );   //remove dash
        $q = str_replace('.html', '', $q ); //remove .html
        echo $q; // whatever this keywords

        simplenya seperti itu.

Leave a Reply

Your email address will not be published. Required fields are marked *

Use tag [php] to add code, e.g. [php]<?php echo $var; ?>[/php]