Membuat RSS Feed untuk Blog-Indonesia

Blog-Indonesia, mungkin adalah salah satu agregator blog terbesar di Indonesia. Blog ini memiliki sekitar 5500-an anggota yang terdaftar. Dari waktu ke waktu, agregator ini menyedot feed dari blog-blog anggota dan menampilkannya kembali dalam satu kesatuan.

Adanya RSS Feed dan datangnya Google Reader praktis mengubah cara saya dalam mengambil informasi dari internet. Sekarang, semua yang ada RSS-nya saya masukkan ke dalam Google Reader dan membacanya dari situ. Tapi tentunya malas juga kalau harus memasukkan satu per satu dari ribuan feed yang ada di internet. Oleh karena itu, saya lebih suka subscribe feed dari aggregator semacam Planet Terasi dan Merdeka. Maraknya komunitas blogger akhir-akhir ini juga cukup memberi harapan bagi saya. Tapi sayangnya hampir semua komunitas itu tidak menyediakan agregator untuk anggotanya. Komunitas ini mungkin lebih mirip dengan komunitas para breaker radio amatir dulu waktu saya aktif di jalur FM dan SW (ORARI registered user: yengki-delta-bla bla).

Blog-Indonesia sangat menjanjikan. Sayang beribu sayang, mereka tidak punya feed. Atau saya yang tidak tahu? Saya sudah ubek-ubek situs itu buat mencari sebuah file XML berspesifikasi RSS. RSS Feed yang saya dapatkan hanya berisi link yang menuju ke halaman web, bukan entrian posting seperti layaknya sebuah agregator. Ah!

Kebetulan, weekend ini saya memiliki waktu luang. Mau hunting foto… Jakarta sedang diguyur hujan lebat. Jadi saya berpikir, kenapa saya tidak buat sendiri saja RSS Feed-nya? Mengulang saat-saat saya masih memakai www.galihsatria.com yang berbasis JSF (Java Server Faces) sebagai situs utama saya. Saya tinggal ekstrak data-data yang saya perlukan dari blog-indonesia dan saya keluarkan kembali hasilnya sebagai feed. Karena saya tidak bisa memakai Java lagi di server ini, maka saya terpaksa memakai PHP. Agak sedikit aneh juga kalau sudah terbiasa dengan Java yang sangat kaku terhadap tipe data menghadapi PHP yang longgar.

Hasilnya? Daily entry bisa di-subscribe di sini, sedangkan untuk most popular bisa di-subscribe di sini. Namanya juga iseng-iseng, aplikasi ini sangat tidak stabil. Tapi lumayan lah buat saya, paling tidak saya bisa mengikuti apa yang terjadi di blog-indonesia via Google Reader saya.

*

Anyway,  bagi saya, menulis baris-baris kode program adalah salah satu hal yang sangat menyenangkan. Apalagi jika ada hal-hal baru. Seperti kali ini, saya ingin memperdalam kungfu dalam hal Regular Expression. Saya sadar, regex sangat powerfull dalam hal pengenalan pola-pola teks, tetapi struktur kode-nya memang bikin putus asa. Saya biasanya lebih suka mengolah pola-pola teks dalam tumpukan prosedur-prosedur substring. Meskipun lebih panjang, tetapi jauh lebih santai. Kali ini, saya memaksakan diri untuk memakai regex yang lebih cepat. Walhasil, untuk parser RSS Blog-Indonesia, ada beberapa hal yang menarik:

  • Langkah pertama, dapatkan file HTML-nya. Amati pola-polanya. Situs-situs yang memiliki sesuatu yang diulang seperti blog atau berita selalu memiliki pola yang mudah dilihat. Dari sini, definisikan pola tersebut dalam ekspresi regex.  Meskipun memungkinkan mendapatkan semua yang kita butuhkan dalam satu pola regex, namun saya lebih suka melakukannya dalam beberapa langkah. Sekedar agar sedikit bisa dibaca kode regex-nya. 😀
  • Pola untuk mendapatkan kotak bloglist:
    /(<div class=”bloglist[alternate]*”>)+(<([a-z0-9]+)[^>]*>.*?<\/\3>)*<\/div>/
  • Setelah mendapatkan kotak itu, ekstrak data-data yang kita perlukan seperti judul posting, link, nama penulis, dan waktu publikasi.
  • Ini pola untuk mendapatkan isi didalam kotak bloglist: /(<([a-z0-9]+)[^>]*>)+(.*?)</
  • Mendapatkan link posting memakai pola ini: /<a\starget=”_blank”\shref=”(.*?&amp;.*?)”/
  • Dan akhirnya, memecah tanggal posting dengan pola: /([0-9]{1,2})\s(\w+)\s([0-9]{1,2})\s-\s([0-9]{1,2}):([0-9]{1,2})/

Kode yang rumit. Regex adalah hal yang paling saya benci setelah Javascript. Andai dulu saya tidak tidur waktu kuliah Teori Bahasa dan Otomata-nya Bu Chastine Fatichah, mungkin saya tidak selambat ini dalam belajar regex. Sekarang, saya mulai mengerti kekuatan regex yang tersembunyi dalam kode yang rumit itu.

By Galih Satriaji

Bookaholic, Workaholic. Chubby. That's me!

28 comments

  1. #dnial:
    nggak harus dimasukkan, cukup masukkan link yang sudah saya berikan di RSS Reader-mu.

    #tukang foto keliling:
    ini kesalahan pasti di saya, maafkan saya tidak bisa mendeskripsikan sesuatu dalam bahasa awam. 🙂

  2. mas mau nanya jadi kalau diblogger khan ada page elemennya
    yang bisa buat add rss, itu caranya gimana???

    oh ya apa rss bisa meningkatkan PR kita??

Leave a comment

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