7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

Menggunakan Media Sosial untuk Menemukan Lokasi Saksi Mata: Twitter API

Scroll to top
Read Time: 10 mins
This post is part of a series called Using Social Media to Locate Eyewitnesses.
Using Social Media to Locate Eyewitnesses to Important Events

Indonesian (Bahasa Indonesia) translation by Kurniawan Sugi Purwanto (you can also view the original English article)

Tweet about President Obama taking the stage at SelmaTweet about President Obama taking the stage at SelmaTweet about President Obama taking the stage at Selma

Ini adalah bagian kedua dari serial dua bagian tentang menggunakan media sosial untuk menemukan lokasi para saksi mata kejadian-kejadian penting. Di bagian pertama, saya menunjukkan pada Anda cara menggunakan API Instagram untuk menemukan saksi mata tayangan langsung syuting video Macklemore di Seattle. Di bagian ini, kami akan menggunakan Twitter API untuk menemukan orang yang menghadiri pidato Presiden Obama di Selma, Jembatan Edmund Pettu.

Anda bisa mengunduh kode bagi dua episode tersebut dengan menggunakan tautan yang disimpan di Github, di sidebar. Anda mungkin tertarik dengan seria Tuts+ saya, Membangun dengan API Twitter.

Kapabilitas pencarian geo Twitter lebih terbatas dan oleh karenanya membutuhkan kode yang sedikit lebih detail. Kiriman dengan geotag di Twitter hanya bisa ditemukan dalam tujuh hari terakhir. Dan hanya bisa dicari berdasarkan tanggal (bukan waktu), jadi Anda harus memfilter hasil pencarian API agar presisi.

Saya sungguh akan berpartisipasi dalam diskusi di bawah artikel ini. Jika Anda ada pertanyaan atau usulan topik, silakan kirimkan komentar di bawah ini. Anda juga bisa menghubungi saya di Twitter @reifman atau email saya secara langsung.

Apa yang Kami Bahas di Bagian Pertama

Telepon yang kita bawa di saku merekam setiap pergerakan kita, membagikannya dengan penyedia layanan seluler dan seringkali juga dengan perusaaan perangkat lunak pihak ketiga yang motivasinya berfokus pada keuntungan.

Banyak orang yang tidak menyadari bahwa mereka meninggalkan geotag di aplikasi media sosial mereka, sepenuhnya mempublikasikan lokasinya di tiap kiriman media sosial. Termasuk juga anggota Kongres AS dari Partai Republik Aaron Schock. Dia menggunakan geotag akun instagramnya untuk mengekspos penggunaan dana pembayar pajak untuk penerbangan pribadi yang mewah dan berbagai aktivitas glamor lainnya.

Congressman Aaron Schock in South AmericaCongressman Aaron Schock in South AmericaCongressman Aaron Schock in South America

Jadi geotagging bisa digunakan dengan baik. Di serial ini, kami mengeksplorasi cara yang mungkin dilakukan para wartawan dan penegak hukum untuk menemukan lokasi saksi mata potensial terhadap even-even penting seperti kejadian kejahatan atau kecelakaan dengan menggunakan media sosial.

Meskipun demikian, geotangging juga bisa disalahgunakan. Beberapa ilmuwan dan pengajar komputer Berkeley membuat aplikasi Ready or Not? untuk mendemonstrasikan bagaimana geotagging Twitter dan Instagram merekam semua pergerakan kita.

Berikut akun Twitter pendiri Apple Steve Wozniak di aplikasi tersebut:

Ready or Not App Steve Wozniak Twitter Geolocation HistoryReady or Not App Steve Wozniak Twitter Geolocation HistoryReady or Not App Steve Wozniak Twitter Geolocation History

Geotagging di Instagram dan Twitter cukup akurat untuk memungkinkan seseorang dengan mudah menentukan tempat tinggal, tempat kerja, dan rute perjalanan rutin Anda.

Di episode ini, akan saya pandu Anda menggunakan Twitter API. Saya menyediakan suatu tempat di Github (tautannya ada di sidebar) untuk Anda unduh dan coba kodenya. Aplikasi "Eyewitness" saya ditulis dalam Framework Yii untuk PHP, yang bisa Anda pelajari lebih lanjut di seri Pemrograman dengan Yii2 untuk Tuts+ saya.

Jika Anda tidak ingin membagikan lokasi Anda ke publik—atau meninggalkan jejak sejarah dalam perjalanan Anda—aplikasi Ready or Not? menawarkan tautan dan panduan untuk mematikan fitur ini (lihat tautannya di home pagenya). Sejujurnya, saya mematikan punya saya dan saya mendorong Anda untuk melakukannya juga.

Jika Anda adalah agen penegakan hukum atau entitas media yang ingin tahu lebih banyak tentang informasi ini, jangan ragu menghubungi saya secara langsung. Saya juga akan tertarik dengan penggunaan kode ini yang berhasil (untuk kebaikan)—tentu akan membuat cerita tindak lanjut yang menarik.

Apa yang Kami Lakukan dengan Instagram

Di episode terakhir, kami menggunakan Instagram API untuk menemukan saksi mata syuting video langsung Mackelmore 2013 untuk White Cadillac. Dengan cukup mudah, kami berhasil menemukan foto Macklemore keluar dari kendaraannya oleh pengguna Instagram Joshua Lewis (keren, kan?):

Macklemore Arrives Found with the Instagram APIMacklemore Arrives Found with the Instagram APIMacklemore Arrives Found with the Instagram API

Sekarang mari mulai menggunakan Twitter API.

menggunakan Twitter API

Sama dengan Instagram, Anda harus masuk ke akun Twitter Anda dan mendaftar aplikasi developer. Anda harus mendaftarkan aplikasi seperti ini:

Twitter App RegistrationTwitter App RegistrationTwitter App Registration

Twitter akan menunjukkan Anda detail aplikasinya:

Twitter App Eyewitness DetailsTwitter App Eyewitness DetailsTwitter App Eyewitness Details

Berikut halaman pengaturannya:

Twitter App DetailsTwitter App DetailsTwitter App Details

Berikut adalah kunci dan token akses aplikasinya. Catat dengan baik.

Twitter App Keys and Access TokensTwitter App Keys and Access TokensTwitter App Keys and Access Tokens

Lalu, tarik ke bawah dan buat token akses untuk akun Anda. Catat juga yang itu.

Twitter App Account Access TokensTwitter App Account Access TokensTwitter App Account Access Tokens

Masukkan keempat kunci konfigurasi dan rahasianya ke file /var/secure/eyew.ini:

Lalu, kita akan membuat migrasi Active Record untuk membuat model Twitter kita. Ini akan menyimpan cuitan-cuitan yang kita terima dari panggilan-panggilan API.

Seperti yang kita lakukan di bagian pertama, Anda harus menjalankan migrasinya:

Lalu saya menggunakan generator kode Yii2, Gii, untuk membuat model dan kontroler CRUD bagi model Twitter. Jika Anda memiliki kode repository GitHub yang terbaru dari tautan di sidebar tutorial ini, Anda juga akan memiliki kodenya.

Buat Momen Baru

Karena Twitter membatasi pencarian geolokasi hanya ke pekan terakhir, akhirnya saya memilih pidato Presiden Obama pada Hari Jadi ke-50 Selma di Jembatan Edmunnd Pettus.

Sekali lagi saya menggunakan Google Maps untuk mendapatkan koordinat GPS jembatannya:

Edmund Pettus Bridge Selma Alabama GeolocationEdmund Pettus Bridge Selma Alabama GeolocationEdmund Pettus Bridge Selma Alabama Geolocation

Lalu saya membuat Moment untuk mencari pidatonya. Saya memperbaruinya beberapa kali untuk memperbaiki radius geografis pencariannya (ini sebuah jembatan) dan kisaran waktunya:

Edmund Pettus Bridge Selma Alabama Geolocation MomentEdmund Pettus Bridge Selma Alabama Geolocation MomentEdmund Pettus Bridge Selma Alabama Geolocation Moment

Pencarian Menggunakan Twitter API

Pembatasan pada Twitter API adalah Anda hanya dimungkinkan mencari berdasarkan tanggal, misalnya 2015-03007, sedangkan Instagram diindeks berdasarkan waktu Unix yang tepat.  Oleh karena itu, kami mulai pencarian Twitter kami sehari penuh setelahnya dan pencarian sebelumnya.

Karena kita sepertinya akan mendapatkan banyak cuitan di luar kisaran waktu yang diharapkan, kita harus melakukan pemanggilan berulang-ulang ke Twitter API. Twitter mengembalikan 100 cuitan per permintaan API, dan memperbolehkan 180 permintaan per jendela 15 menit.

Saya menggunakan James Mallison's Twitter API Library for PHP. Berikut cara kami mengatur library untuk membuat panggilan:

Pada awalnya, kami meminta 100 hasil dari Twitter dengan koordinat GPS kami hingga tanggal tertentu.

Kami hanya merekam cuitan dalam kisaran waktu yang tepat serta mengabaikan hasil-hasil lainnya. Seiring kami memroses ini, kami membuat catatan tentang ID cuitan terendah yang diterima.

Lalu kami loop, melakukan permintaan berulang ke Twitter (sampai 179 kali lagi), meminta rekaman-rekaman tambahan yang lebih awal daripada ID cuitan gelombang sebelumnya. Dengan kata lain, di permintaan berikutnya, alih-alih mencari ke tanggal tertentu, kami membuat kueri ke max_id dari ID cuitan terendah yang kami terima:

Kami berhenti ketika yang dikembalikan kurang dari 100 rekaan atau ketika cuitan yang dikembalikan lebih awal daripada kisaran waktu aktualnya.

Jika Anda butuh mengakses lebih dari 18.000 cuitan, Anda harus mengimplementasikan tugas latar belakang (background task) untuk memanggil Twitter API, sebagaimana yang kami lakukan di seri Twitter API yang lainnya.

Sebagaimana kami memroses hasil-hasil API, kami harus memfilter cuitan-cuitan, hanya merekam yang ada dalam kisaran antara waktu aktual dimulai dan diakhirinya even tersebut.

Catatan: Twitter API punya banyak kekhasan yang membuat frustrasi, yang menjadikan paging lebih sulit daripada seharusnya. Seringkali Twitter tidak mengembalikan hasil apapun tanpa kode kesalahan. Di waktu lainnya, saya mendapati Twitter mengembalikan sejumlah kecil hasil, tetapi tidak berarti permintaan lainnya tidak akan mengembalikan yang lebih banyak. Tidak ada cara yang jelas untuk memhahami kapan Twitter selesai mengembalikan hasilnya untuk Anda. Sifatnya tidak konsisten. Jadi, Anda mungkin mendapati beberapa pemecahan masalah menarik di kode saya, misalnya perhatikan $sount_max_repeats.

Salah satu hasil pertama yang dikembalikan termasuk cuitan di bawah ini oleh Fred Davenport yang menunjukkan Presiden Obama di panggung:

The First Results for Selma 50th via the Twitter Search APIThe First Results for Selma 50th via the Twitter Search APIThe First Results for Selma 50th via the Twitter Search API

Berikut di Twitter:

President Obama in Selma via the Twitter API President Obama in Selma via the Twitter API President Obama in Selma via the Twitter API

Lalu, seiring Anda mencari hasil lebih jauh, Anda bisa menemukan lebih banyak orang membuat cuitan tentang Obama—termasuk media:

More Selma Twitter API ResultsMore Selma Twitter API ResultsMore Selma Twitter API Results

Sekarang, mari melakukan pencarian yang lebih lokal.

Sedetik, Pencarian yang Lebih Lokal

Key Arena adalah arena olahraga dan konser besar di Seattle. Pekan terakhir ini ada Turnamen Basket Wanita Pac-12:

Key Arena Calendar of EventsKey Arena Calendar of EventsKey Arena Calendar of Events

mari dapatkan koordinat GPS untuk Key Arena dari Google Maps:

Key Arena Geolocation on Google MapsKey Arena Geolocation on Google MapsKey Arena Geolocation on Google Maps

Lalu, saya membuat dan menyesuaikan suatu momen untuk menemukan kisaran waktu yang lebih panjang di akhir pekan untuk cuitan-cuitannya:

Create a moment to search Key Arena Basketball TournamentCreate a moment to search Key Arena Basketball TournamentCreate a moment to search Key Arena Basketball Tournament

Dan, berikut beberapa hasilnya. Favorit saya adalah:

"Saya ingin meninggalkan pertandingan basket ini. Saya benci bola basket."
Twitter Search Results for Key Arena TournamentTwitter Search Results for Key Arena TournamentTwitter Search Results for Key Arena Tournament

Untuk sebagian besarnya, sepertinya Instagram API jauh lebih hebat daripada Twitter dan secara umum hasilnya lebih menarik. Meskipun demikian, itu tergantung pada jenis orang yang Anda cari. Jika Anda hanya ingin mengidentifikasi siapa saja yang ada di sana, API manapun tidak akan bekerja dengan baik.

Apa yang Kami Pelajari

Saya harap Anda menikmati seri ini. Saya mendapati ini sebagai sesuatu yang menyenangkan dan terkesan dengan hasilnya. Tutorial ini sekaligus menyoroti kekhawatiran yang seharusnya kita miliki tentang tingkat privasi kita di zaman digital yang saling terhubung ini.

API untuk Instagram dan Twitter sama-sama bagus dalam menemukan pengguna-pengguna media sosial yang berada di dekat tempat-tempat tertentu pada waktu-waktu tertentu. Informasi ini bisa digunakan untuk tujuan yang baik dan bisa juga disalahgunakan. Seharusnya Anda mempertimbangkan untuk mematikan kiriman geolokasi Anda—ikuti tautan-tautan di aplikasi Ready or Not?.

Anda mungkin juga berkenan mempelajari seri saya di Tuts+ Membangun dengan Twitter API.

Jangan ragu mengirimkan pertanyaan-pertanyaan dan komentar Anda di bawah ini. Anda juga bisa menghubungi saya di Twitter @reifman atau kirimkan email langsung ke saya. Saya pada khususnya mengapresiasi untuk mendengar dari para wartawan dan penegak hukum yang memanfaatkan contoh-contoh ini.

Anda juga bisa menjelajahi halaman instruktur Tuts+ saya untuk melihat tutorial-tutorial lainnya yang telah saya tulis.

Tautan-Tautan Terkait

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.