Programming

Fetching photo berdasarkan tags di Instagram

Sidebar instagram tags
Sidebar instagram tags

Beberapa waktu yang lalu Dwohoo.com menambahkan fitur untuk menampilkan daftar foto yang berkaitan dengan destinasi yang sedang dibahas dalam suatu artikel. Foto-foto tersebut diambil secara langsung dari Instagram.

Instagram memiliki API bagi para developer yang hendak mengembangkan aplikasi lanjutan, tapi kali ini saya tidak menggunakan API tersebut. Selain ribet, tahapannya juga cukup banyak (auth, token, dll) sehingga memerlukan beban waktu yang lebih untuk memuat foto-foto yang diinginkan.

Untungnya halaman Explore / Search Instagram tidak tertutup, dapat diakses secara publik. Hal ini yang dapat dimanfaatkan untuk melakukan parsing halaman dan mengambil bagian-bagian element yang diperlukan.

https://www.instagram.com/explore/tags/senggigi/
https://www.instagram.com/explore/tags/senggigi/

Dan kebiasaan para web developer…

View source halaman instagram
View source halaman instagram

Semua data item disimpan dalam variabel window._sharedData dalam format JSON, dengan menggunakan regular expression (preg_match() di PHP) kita dapat melakukan filter hanya mengambil value dari variabel tersebut.

/<script type="text\/javascript">window._sharedData =(.*)\;<\/script>/

Sebagai contoh, berikut script PHP untuk mendapatkan array yang berisi ID dan URL thumb.

    $_ig_tag = 'senggigi';
    $_ig_tag_url = 'https://www.instagram.com/explore/tags/';
    $_ig_post_url = 'https://www.instagram.com/p/';
    $lines_string = file_get_contents($_ig_tag_url . $_ig_tag);

    /**
     * format pengecekan tanggal 11 maret 2017
     * sewaktu-waktu dapat berubah tergantung developer Instagram
     */
    preg_match('/<script type="text\/javascript">window._sharedData =(.*)\;<\/script>/', $lines_string, $matches);
    if(count($matches) > 0):
        $_json_data = json_decode($matches[1], true);

        $_ig_photos = array();
        if (isset($_json_data['entry_data']['TagPage'][0]['tag']['top_posts']['nodes'])) {
            foreach ($_json_data['entry_data']['TagPage'][0]['tag']['top_posts']['nodes'] as $_post)
                $_ig_photos[$_post['code']] = $_post['thumbnail_src'];
        }
    endif;

Dari script diatas kita sudah mendapat array $_ig_photos yang berisi ID dan thumb foto, tinggal dikombinasikan dengan $_ig_tag_url dan $_ig_post_url saat di-render dalam bentuk HTML.

Demo https://dwohoo.com/destinations/senggigi

Tinggalkan Balasan