Membuat aplikasi menubar di mac (cepet aja)

Pernahkah kamu ada di situasi ini: lagi didepan laptop, ada kejaran kerjaan tapi lagi jenuh dan pengen update berita terbaru? Biasanya alternatifnya adalah ngebuka hp atau ngebuka website di desktop. Untuk saya, kedua cara tersebut tidak efektif. Kalau membuka hp, seringkali malah otomatis melihat notifikasi dan habis waktu untuk membalas chat, buka instagram, lalu malah lupa untuk update berita. Kalau ngebuka websitenya via desktop biasanya loadingnya lama, layoutnya kurang optimal, dan/atau kebanyakan iklan.

Untuk saya yang ingin mendapat update yang cepat, kedua alternatif solusi tersebut malah menyedot waktu dan pikiran untuk hal-hal yang tidak penting. Idealnya ada menu yang dapat diakses kapanpun dari desktop. Meski saya tidak mencari secara aktif, tampaknya hal ini menarik untuk dibikin sebagai aplikasi kecil. Jadilah saya mengerjakan proyek sampingan ini untuk melibas masalah tersebut.

Untuk proyek kecil ini, saya ingin fokus untuk mengambil sumber berita dari indonesia. Sumbernya perlu kredibel, beritanya update, dan objektif. Dari beberapa portal berita yang saya ikuti, tampaknya CNN Indonesia dapat menjadi objek yang menarik untuk diulik. Nantinya saya ingin mengimplementasi sumber berita lainnya tetapi untuk sekarang CNN Indonesia tampaknya menarik sebagai sumber percobaan.

Sayangnya, CNN tidak menyediakan berita dalam format RSS, sehingga saya perlu untuk memilah html secara manual. Namun demikian data yang saya perlukan cukup judul & link beritanya saja, yang diurutkan berdasarkan preferensi saya. Mulai dari Berita Utama, Terpopuler, Headline, dan Terbaru.

Berita di kotak hijau (Utama & Terpopuler) lebih penting untuk saya ketimbang di kotak yang kuning (Headline & Terbaru)

Pengembangan

Pada kesempatan kali ini saya sedang tertarik menggunakan python dan dengan bantuan sebuah aplikasi bernama bitbar. Aplikasi bitbar ini bekerja secara sederhana, yaitu dengan menampilkan hasil apapun yang di keluarkan oleh script kita.

Awalnya saya ingin menggunakan pustaka standar bawaan python agar usernya tidak perlu menginstall apapun pada komputernya. Namun untuk memudahkan pengembangan, saya akhirnya menggunakan pustaka beautifulsoup untuk membantu memilah dan mengambil data html nya. Dengan batasan ini, tampaknya pengguna perlu menginstall sendiri pustaka yg dibutuhkan.

Setelah beberapa jam development, jadilah hasilnya ada menu baru bernama CNN ID pada menubar saya:

Ketika judul beritanya diklik, maka browser kamu akan memuat berita tersebut.

Pelajaran yang dipetik

Meskipun saya hanya memiliki waktu yang terbatas untuk mengembangkan script ini, tetapi banyak sekali pelajaran yang saya dapati. Secara umum, saya mendapat pengalaman yang positif dengan mengerjakan proyek kecil ini.

Satu hal yang saya sadari adalah ternyata kombinasi python + bitbar + beautifulsoup sangat memudahkan proses implementasi proyek ini. Python terasa lebih mudah dipelajari dibanding bahasa pemrograman lainnya karena sintaks yang sederhana dan pustaka yang variatif. Tidak perlu waktu yang lama untuk memulai memprogram dalam python.

Sebelum memutuskan penggunaan beautifulsoup, saya mencoba untuk membaca-baca pustaka python bernama HTMLParser. Meskipun menarik karena ini adalah pustaka bawaan python, tetapi karena terbatasnya waktu yang saya miliki jadilah saya memilih beautifulsoup karena lebih mudah implementasinya.

Terakhir, saya menghabiskan waktu lebih dari 1 jam untuk men-troubleshoot sebuah bug. Hanya setelah satu jam saya sadar ternyata ‘bug’ tersebut hadir karena saya salah memilih selector html. Jadi sebaiknya sebelum mulai koding, lebih baik luangkan waktu 10 menit untuk mencatat struktur data yang akan digunakan dibandingkan harus meluangkan lebih dari 60 menit untuk men-debug kesalahan kecil karena kurang teliti.

Batasan

Karena kodenya masih memilah html (bukan xml), kemungkinan besar script ini tidak akan berjalan ketika struktur html dari cnnindonesia.com berubah. Idealnya, saya perlu membuat servis yang mengambil html sendiri di server, dan menyediakan artikelnya melalui API untuk ditangkap script ini. Saya simpan ini untuk nanti saja, karena proyek ini bukan untuk konsumsi publik di level produksi.

Langkah selanjutnya:

  • Idealnya sih nanti membuka artikel dengan reader view secara langsung.
  • Consume konten via API, bukan parsing html langsung
  • Integrasi servis lainnya di satu menubar: berita, bola, saham — fokus untuk indonesia saja.

Dapatkan kodenya

Silakan baca-baca dan install kode plugin bitbarnya disini: https://github.com/anwari666/bitbar-plugins-id . Disclaimer: kode ini hanya untuk pembelajaran dan evaluasi saja, jad jangan harapkan kualitas yang tinggi. Asal jalan.

Comment