Beberapa minggu kemarin, saya kesusahan ingin repost post-post saya yang lama, karena terlalu dalam, jadi scroll ke bawahnya terlalu banyak. Sering kali yang saya repost hanya post-post yang baru saja dikarenakan susahnya melihat postingan awal instagram.
Muncullah sebuah ide untuk membuat script sederhana untuk mengambil semua list post sehingga nanti tinggal repost saja menggunakan app android yang ada di google play.
Berikut adalah javascript untuk mengambil semua post pada profile instagram:
// Get all post link list from an Instagram profile // @params DOM Links list // @return String Link without HTML tag. Ex: https://www.instagram.com/xxxxxxxxxx function getLinks(list) { var links = []; for(var i = 0; i < list.length; i++) { links.push(list[i].getElementsByTagName('a')[0].href); } return links; } // Add link and remove duplicate link function LinkList() { this.list = []; this.add = function(link) { var isFound = false; for(var i = 0; i<this.list.length; i++) { if(link == this.list[i]) { return; } } this.list.push(link); } }; // Main script var Main = function() { this.intervalId = null; this.linkLists = null; this.start = function() { var vm = this; this.intervalId = setInterval(function() { var list = document.getElementsByClassName("v1Nh3"); var links = getLinks(list); // console.log('links', links); for(var i = 0; i<links.length; i++) { vm.linkLists.add(links[i]); } console.log('length:', vm.getLinks().length); }, 1500); }; this.stop = function() { if(this.intervalId) clearInterval(this.intervalId); }; this.getLinks = function() { return this.linkLists.list; }; // Constructor this.linkLists = new LinkList(); } var main = new Main(); main.start(); // main.stop()
Untuk melakukannya ada hal-hal yang perlu di persiapkan:
- Laptop/Desktop
- Web Browser: Disarankan chrome, karena dalam tutorial ini menggunakan chrome. Supaya seragam saja.
Trik ini hanya bisa dilakukan di desktop saja, bukan di device android.
- Buka browser Chrome
- Buka URL profile instagram. Contoh: https://www.instagram.com/9gag/
- Buka inspect dengan cara
- Menekan Ctrl+shift+i
- Click kanan dan pilih Inspect
- Click Tab Console
- Copy paste code Javascript diatas
- Scroll Kebawah: karena website instagram menggunakan AJAX(lazy load) untuk melakukan load post-post lama. Scroll kebawah hingga paling bawah, nanti instagram akan melakukan loading post lamanya.
- Perhatikan pada windows console. Disana tertulis “length: xx”. Ini menunjukkan bahwa sudah ada xx link yang didapatkan. Untuk melihat isi link tersebut bisa langsung ketikkan “main.getLinks()”
- Lakukan langkah ke 5 hingga post terlama atau bisa berhenti kalau sudah dirasa cukup. Karena jika anda mau menggambil semua post 9gag dimana mempunyai 19k post. Saya khawatir jari dengan kesehatan jari anda nantinya.
- Setelah semua selesai ketikkan “JSON.stringfy(main.getLinks())”
- Copy semua string diatas dari petik(“) awal hingga petik akhir(“)
- Buka https://json-csv.com/ lalu copy paste semua string tadi ke textarea disana
- Scroll ke bawah, disana akan ada banyak pilihan. Bisa Download CSV, Download XLS, dan Copy to Clipboard.
- Selesai
Proses yang memakan waktu adalah proses nomor 5. Sebenarnya script diatas bisa diperbaiki dengan menambahkan fitur autoscroll ke bawah. Tetapi scriptnya akan makin panjang.
Jika banyak yang request mungkin akan saya buatkan. Silakan comment di bawah jika ada pertanyaan atau kesulitan.