Menghemat Tenaga dan Waktu Hingga Puluhan Jam dengan Python
Tugas Input Data
Pekan lalu saya (sebenarnya teman saya) diberi amanah untuk menginputkan seluruh data santri dan pegawai di EMIS PD-PONTREN.
Bagi yang belum tahu, Education Management Information System (EMIS) PD-PONTREN ini adalah aplikasi berbasis web yang disediakan oleh Kementerian Agama guna mendata ini-itu pokoknya tentang pesantren, begitu.
Singkatnya, ribuan data santri ditambah dengan ratusan data pegawai harus dimasukkan ke dalam EMIS tersebut.
Permasalahan
Tahun kemarin saya sempat diminta juga untuk memasukkan data santri ke EMIS, meski menyebalkan karena harus inspect element, trials and errors, karena ada beberapa banyak format data yang tidak dijelaskan pada petunjuk impor, namun pada akhirnya data-data yang ada berhasil dimasukkan.
Masalahnya adalah EMIS PD-PONTREN “edisi” tahun ini tidak menyediakan fasilitas impor lagi! Jadi kita diwajibkan untuk mengisi satu persatu kolom yang ada, kemudian mengeklik tombol submit untuk setiap data santri.
Bisa dibayangkan, anggaplah sekali input data santri memakan waktu tiga menit, maka untuk menginput sejumlah 2000 data saja memerlukan waktu sekitar 100 jam. Padahal, waktu yang berharga tersebut dapat digunakan untuk menamatkan أسطورة زيلدا: أكرينة الزمن sebanyak tiga kali!
Link sedang numpak Epona. Sumber: imore
Python dan Selenium
Kemudian saya mencoba untuk membantu membuatkan script sederhana, yang dapat menghemat waktu dan tenaga untuk menginput data secara manual. Saya menulisnya menggunakan python, dengan bantuan package selenium.
Potongan script
Secara sederhana script yang saya tulis berjalan sebagai berikut:
- Membuka browser;
- Mengisi login form dengan kredensial yang tersimpan di environment variable;
- Memecahkan captcha di halaman login, kebetulan captchanya berupa operasi aritmetika dasar, jadi cukup mudah untuk diselesaikan secara otomatis dengan bantuan library operator;
- Menekan tombol login;
- Membaca file *.tsv yang berisi data siswa yang ingin diinputkan. Tentunya format yang dipakai harus sesuai dengan format form tujuan;
- Membuka halaman input data santri, atau halaman input data pegawai;
- Mengisi kolom-kolom yang tersedia pada halaman tersebut berdasarkan data yang ada di file *.tsv tadi;
- Melakukan submit data, dan menunggu hasil submit;
- Mencatat data santri yang berhasil diinput ke dalam file log disertai dengan keterangan apakah data tersebut berhasil atau gagal disubmit;
- Mengulang perintah nomor 6 – 9 secara otomatis, hingga seluruh data terinput.
Seluruh proses di atas berjalan secara otomatis, dengan syarat data yang akan diinput sudah disiapkan dengan benar dan koneksi internet lancar. Kalau dihitung satu data santri memakan waktu sekitar 25 – 30 detik. Tidak terlalu cepat memang, mengingat cukup banyak select box yang menggunakan library select2. Tapi lumayan lah menghemat tenaga.
Penutup
Dengar-dengar salah satu alasan kenapa fitur impor tidak disediakan pada EMIS PD-PONTREN tahun ini adalah karena pada tahun-tahun sebelumnya terdapat banyak data yang tidak sesuai dengan format yang diwajibkan, utamanya kolom tanggal lahir. Ee tapi hal tersebut mungkin terjadi karena memang tidak tercantum dengan jelas di panduannya. 😁
Sebagai informasi, script tersebut sudah diunggah di repo github saya https://github.com/miftahafina/emispendis-otomatis.
3 komentar
rere
Thanks for sharing
made gelgel
dari dulu pingin belajar bahasa ini, konon katanya lebih mudah ya bang?
Miftah Afina
Tergantung keperluannya, kalau untuk task automation pakai ini bisa dibilang lebih mudah.