Membuat Statistik Repo Github Sederhana dengan PhantomJS

Sudah lama saya tidak menulis lagi di blog sendiri. Karena saya sedikit banyak kerjaan di kantor, jadi saya harus mencari waktu luang yang tepat untuk ngulik lagi. Dan postingan kali ini bukan postingan tentang liburan. Saya ingin mencoba memperlihatkan lagi sebuah kemampuan yang dimiliki Phantom.js, sebuah teknologi yang diciptakan oleh Ariya Hidayat.

Sebelumnya saya membuat sebuah tulisan tentang “Mengukur Load Page Time Menggunakan PhantomJS”, nah sekarang saya ingin mencoba memperlihatkan sebuah kode Javascript yang dapat mengambil beberapa informasi di halaman sebuah repo Github seperti jumlah star, commit, fork, dan lainnya. Berikut adalah kode program tersebut, namai file tersebut dengan github-repo-stat.js:

 

var system = require('system');
var page = require('webpage').create();
var repo_id = system.args[1]+"/"+system.args[2];
var repoUrl = 'https://github.com/'+repo_id;

page.open(repoUrl, function(status){
	if (status === "success"){
		console.log(repoUrl +" is loaded...");
		var data = page.evaluate(function(repo_id){
			var watcher = document.querySelector('[href="/'+repo_id+'/watchers"]').innerText.trim();
			var fork = document.querySelector('[href="/'+repo_id+'/network"]').innerText.trim();
			var star = document.querySelector('[href="/'+repo_id+'/stargazers"]').innerText.trim();
			var commit = document.querySelector('[href="/'+repo_id+'/commits/master"]').innerText.trim();
			var contributor = document.querySelector('[href="/'+repo_id+'/graphs/contributors"]').innerText.trim();
			var branches = document.querySelector('[href="/'+repo_id+'/branches"]').innerText.trim();
			var release = document.querySelector('[href="/'+repo_id+'/releases"]').innerText.trim();
			
			return {
				title: document.title,
				documentUrl: document.URL,
				watcher: watcher,
				fork: fork,
				star: star,
				commit: commit,
				contributor: contributor,
				branches: branches,
				release: release,
			}
		}, repo_id);

		console.log("Repositori: "+data.title);
		console.log("URL Repositori: "+data.documentUrl);
		console.log("Watcher: "+data.watcher);
		console.log("Fork: "+data.fork);
		console.log("Star: "+data.star);
		console.log("Commit: "+data.commit);
		console.log("Contributor: "+data.contributor);
		console.log("Release: "+data.release);
		console.log("Branches: "+data.branches);
		
		phantom.exit(0);
	}
}); 

Untuk mengeksekusi kode diatas, pastikan Anda mempunyai PhantomJS yang terpasang di mesin Anda. Kemudian melalui command line interface silahkan eksekusi kode tersebut dengan perintah: phantomjs github-repo-stat.js nama_pemilik_repo nama_repo

Contohnya dapat Anda lihat pada gambar berikut:


root@ridwaninzpire:/home/ridwanbejo/Phantom Opera/getting-started-with-phantomjs# phantomjs chapter-2-2.js laravel laravel
https://github.com/laravel/laravel is loaded...
Repositori: laravel/laravel · GitHub
URL Repositori: https://github.com/laravel/laravel
Watcher: 2,330
Fork: 5,306
Star: 16,482
Commit: 4,426 commits
Contributor: 269 contributors
Release: 51 releases
Branches: 3 branches
root@ridwaninzpire:/home/ridwanbejo/Phantom Opera/getting-started-with-phantomjs# phantomjs chapter-2-2.js ariya phantomjs
https://github.com/ariya/phantomjs is loaded...
Repositori: ariya/phantomjs · GitHub
URL Repositori: https://github.com/ariya/phantomjs
Watcher: 832
Fork: 2,652
Star: 14,005
Commit: 1,747 commits
Contributor: 113 contributors
Release: 21 releases
Branches: 14 branches
root@ridwaninzpire:/home/ridwanbejo/Phantom Opera/getting-started-with-phantomjs# phantomjs chapter-2-2.js yiisoft yii2
https://github.com/yiisoft/yii2 is loaded...
Repositori: yiisoft/yii2 · GitHub
URL Repositori: https://github.com/yiisoft/yii2
Watcher: 991
Fork: 3,232
Star: 5,788
Commit: 12,607 commits
Contributor: 473 contributors
Release: 8 releases
Branches: 11 branches
root@ridwaninzpire:/home/ridwanbejo/Projects/other/Phantom Opera/getting-started-with-phantomjs#

Semoga bermanfaat, jangan lupa untuk menguasai Javascript 😀

Iklan

Satu pemikiran pada “Membuat Statistik Repo Github Sederhana dengan PhantomJS

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s