Rabu, 20 Februari 2013

Desktop Surveillance

Sikuli Script dapat digunakan untuk melakukan Desktop Surveillance / Pengawasan Desktop / Scanning Terhadap Desktop. Dalam tutorial ini, kita akan pergi melakukan sejumlah latihan untuk membuat script yang dapat memantau layar dan memberitahu kita ketika event visual tertentu yang menarik terjadi.

Facebook App

Latihan pertama adalah untuk membuat aplikasi Facebook yang secara berkala memeriksa homepage Facebook kami secara visual dan melihat apakah seorang teman tertentu baru-baru ini memperbarui pesan status. Salah satu cara mudah untuk mendeteksi acara ini adalah untuk mencari gambar wajah teman di homepage Facebook kami. Jika ditemukan, artinya teman telah posting pesan status baru. Jika tidak ditemukan, kita harus memeriksa kembali lagi dalam beberapa saat.
Mari kita menerapkan operasi ini menggunakan while: loop.
Pertama kita perlu untuk menangkap screenshot dari gambar wajah teman.
 
. /... / _images / Facebook_capture.png

Untuk memeriksa apakah wajah teman bisa dilihat di layar, kita gunakan exists() , yang mengembalikan True ketika gambar wajah ditemukan. Kami mengatur kondisi looping untuk Tidak Ditemukan sehingga loop sementara akan berakhir hanya ketika gambar wajah ditemukan. Kami menambahkan sleep(n)pernyataan (statement) dalam tubuh loop untuk memrintahkan berhenti sejenak selama 5 detik diantara upaya untuk mencari gambar wajah di layar.
 
  while not exist():
  sleep (5) 
 
Atau, Sikuli juga menyediakan fungsi yang mendukung  wait() bila mau digunakan, fungsi yang secara berkala memeriksa layar untuk menunggu pola gambar yang diberikan untuk tampil. Menggunakan kode wait(), di atas dapat ditulis sebagai:
 
  wait(,FOREVER) 
 
Konstanta FOREVER berarti kita ingin Sikuli menunggu tanpa batas waktu. Jika kita tidak ingin menunggu selamanya, kita dapat mengganti FOREVER dengan angka, untuk menunjukkan jumlah detik untuk menunggu sampai Sikuli harus bangkit untuk melanjutkan perintah selanjutnya.
 
  wait(,3600) # menunggu selama satu jam 
 
Setelah keluar dari while: loop atau kembalian dari fungsi wait, kita dapat memanggil popup() untuk menampilkan pesan pemberitahuan.
 
  popup ("Obama telah memperbarui pesannya") 
 
Ini akan menampilkan pesan pop-up yang terlihat seperti di bawah ini:
 
. /... / _images / Facebook_popupmsg.png

Sekarang kita bisa menjalankan Sikuli Facebook App, duduk bersantai, dan dapatkan pemberitahuan saat teman kita update pesannya.

Skype App

Pada latihan sebelumnya, kami menulis script untuk mendeteksi tampilan gambar ini. Dalam latihan ini, kita akan melakukan hal yang sebaliknya - mendeteksi hilangnya pola visual.
 
Skype adalah alat yang hebat yang memungkinkan kita untuk tetap berhubungan dekat dengan teman-teman kita bahkan jika mereka berada di bagian terpencil dunia. Namun, mungkin ada beberapa keadaan yang tidak menguntungkan sehingga kita mungkin ingin menghindari terlihat online oleh individu tertentu. Mungkin individu berbicara terlalu banyak. Mungkin kita berutang uang dengan individu tersebut ... hehehe. Ini akan menyenangkan bagi kita bila kita bisa tahu ketika sesorang tersebut sedang offline, sehingga aman bagi kita untuk online. Sementara Skype tidak menyediakan fitur untuk memberitahu kami ketika seseorang sedang online, pun tidak ada fitur pemberitahuan bila hal sebaliknya terjadi.
 
Sebuah logoff notifier otomatis, akan sangat diinginkan untuk menangani situasi ini. Mari kita membangun alat ini menggunakan Script Sikuli. Perhatikan bahwa jika seorang individu tidak lagi online, pola visual yang gabungan ikon status hijau dan nama layar individu akan hilang. Dengan demikian, kita bisa mengambil screenshot yang meliputi ikon hijau dan nama layar sebagai berikut.
 
. /... / _images / Skype_capture.png

Kemudian, kita dapat menulis Script Sikuli untuk memantau hilangnya gambar screenshot yang kita tangkap sebelumnya 
  while exist():
  sleep (5)
  Popup  ("vgod sedang log off") 
 
Script ini sangat mirip dengan yang dalam latihan sebelumnya. Satu-satunya perbedaan adalah penghapusan operator "not" dari pernyataan kondisi while loop, karena kita berusaha untuk melakukan yang sebaliknya.
 
Cara lain untuk menunggu hilangnya gambar adalah dengan menggunakan fungsi waitVanish(). Script di atas dapat ditulis sebagai berikut:
 
  waitVanish(,FOREFER)
  Popup("vgod sedang log off")

Bus Kedatangan Notifier

Latihan ketiga adalah untuk membangun sebuah alat pemberitahuan kedatangan bus. Bagi banyak penumpang bus, layanan pelacakan online berbasis GPS sangat berguna. Daripada harus sabar berdiri di halte bus, menantang angin dingin di musim dingin atau terik matahari di musim panas, calon penumpang bus dapat duduk dengan nyaman di dalam di depan komputer mereka, memeriksa email, memperbarui status Facebook, atau menonton YouTube? video, atau apa pun. Mereka hanya perlu melihat peta setiap beberapa saat untuk memeriksa lokasi simbol bus di peta. Hanya ketika posisi bus sudah cukup dekat, mereka akhirnya harus keluar dan berjalan ke bus.
 
Karena kita peduli apakah bus semakin dekat untuk berhenti, kita hanya perlu melihat lingkungan sekitar posisi bus berhenti. Dengan demikian, kita dapat mengubah ukuran browser seperlunya saja untuk yang menunjukkan sebagian peta sekitar saja, sementara dilain pihak kita memiliki banyak ruang layar untuk melakukan sesuatu yang lain, dalam hal ini, membaca berita CNN atau lainnya :).
 
. /... / _images / Bus_fullscreen.png

Mari kita menulis Script Sikuli untuk melakukan pelacakan posisi bus bagi kita. Hal ini dimungkinkan untuk mendefinisikan suatu "region" (daerah di layar) dan meminta Script Sikuli untuk fokus hanya pada daerah itu untuk mencari pola visual tertentu. Dengan cara ini, Sikuli tidak perlu membuang siklus komputasi berharga pemindaian seluruh layar. Untuk melakukannya, mari kita klik pada tombol "select a region" di toolbar seperti yang ditunjukkan di bawah ini.
 
. /... / _images / Bus_toolbar_region.png

Seluruh layar akan membeku dan berubah gelap, mirip dengan apa yang terjadi dalam modus screen capture. Cukup menggambar persegi panjang untuk menutupi peta seluruh lingkungan. Wilayah yang tercakup oleh persegi panjang ini secara visual direpresentasikan sebagai gambar thumbnail dari seluruh desktop di mana wilayah adalah daerah berbayang / berwarna merah.
 
. /... / _images / Bus_region_thumbnail.png

Selanjutnya, kita menangkap gambar screenshot dari simbol bus sehingga kita dapat memberitahu Script Sikuli untuk memantai tampilan tersebut.
 
. /... / _images / Bus_capture_bus_symbol.png

Sekarang. kita dapat menulis script berikut untuk memeriksa peta dan memantau munculnya simbol bus:

  while not .inside().exist():
  sleep(5)
  popup("bus telah tiba") 
 
Tafsirkan makna dari while loop secara langsung adalah
Sementara tidak simbol bus dapat ditemukan di dalam kawasan, tidur selama 5 detik. Dengan kata lain, loop sementara akan keluar hanya ketika simbol bus ditemukan di dalam wilayah tersebut. Kemudian, pernyataan popup akan dieksekusi untuk memberitahu kami bus telah tiba.
 
Sekali lagi, efek yang sama bisa kita dapatkan dengan menggunakan wait() . Script dapat ditulis kembali sebagai:
 
  .inside().wait(, FOREFER)
 Popup("bus telah tiba") 
 
OK selamat mencoba ... selamat mengeksplorasi kemampuan Sikuli :)

Tidak ada komentar:

Posting Komentar