klik tombol back browser Anda, kecuali Anda ingin berpening (pusing) ria dengan GreaseMonkey thingi
Requirements:
mengerti JavaScript
mau belajar regex (regular expression)
Kenapa dibuat user.js ini?
Jika Anda kuliah di UOW yang quota nya dibatasin 420MB per session nya, pasti sakau download Anda susah untuk terpenuhi, tapi ada kabar baik bagi Anda, karena ezproxy adalah free quota bagi Anda (ini bermanfaat saat Quota Anda telah negatif, karena kalau masih lebih besar dari nol, Anda masih bisa download semua yang ada jaringan on-net AARNET atau domestic/international peering.)
Yang perlu Anda lakukan adalah download dari http://sourceforge.net.ezproxy.uow.edu.au/, dan karena masih di "dalam" kampus, artinya tidak dihitung quota.
Masalahnya, kadang Anda ingin mendownload semua file dari sebuah project, dan Anda tentu tidak ingin download satu-satu, Anda mengerti bahwa di firefox bisa ditambahkan FlasGot dan ada DownThemAll dan tentu saja GreaseMonkey, karena Anda adalah GreaseMonkey!
Format link yang diberikan adalah
http://sourceforge.net.ezproxy.uow.edu.au/projects/NAMA_PROJECT_NYA/files/
padahal link yang benar adalah:
http://transact.dl.sourceforge.net.ezproxy.uow.edu.au/project/NAMA_PROJECT_NYA/
nah, karena links nya ada banyak, tentu kita ingin agar semuanya otomatis, tidak satu-satu.
solusi untuk itu adalah GreaseMonkey!
Okay, kalau Anda masih bisa baca sampai sini, silahkan siapkan kopi Anda karena kita akan sama-sama bertapa, mulai dengan menangkap semua link (anchor) nya:
myAnchors = document.evaluate("//a[contains(@href,'/download')]" terkesan kasar ya ... tapi biasanya saya gunakan XPath (Cross Path) agar gampang diubah dengan tag lain, walaupun anchor bisa didapat dengan document.links
nah, begitu link nya ditangkap, sekarang tinggal mengubahnya:
ini regex (regular expression) nya:
/projects\/(.[^/]*)\/files/kode diatas untuk menangkap NAMA_PROJECT_NYA, dan dapat di replace dengan $1
myAnchors.snapshotItem(i).href = myAnchors.snapshotItem(i).href.replace(/projects\/(.[^/]*)\/files/ig,'project/$1').replace(/\/download$/,'');dan perhatikan juga hasil replace sebuah regex adalah sebuah string yang bisa di replace lagi dengan menambahkan titik dan fungsi replace(). Lihat bagian:
.replace(/\/download$/,'')
Pusing? atau terlalu mudah ...
gw ngantuk ... sekarang jam 2:24 pagi dan gw lapaaaaar :D, makanya jadi malas ngetik nya :D
Berikut file lengkap user.js nya:
// ==UserScript==
// @name Transact-SF-UOW
// @namespace id.web.jazman.au.edu.uow.ezproxy.net.sourceforge.dl.transact
// @description change links into correct Ezproxy version of SourceForge
// @include http://sourceforge.net.ezproxy.uow.edu.au/projects/*
// ==/UserScript==
//retrieve all links
myAnchors = document.evaluate("//a[contains(@href,'/download')]",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); if (0 < myAnchors.snapshotLength)
{ GM_log(myAnchors.snapshotLength);
for (var i=0;i<myAnchors.snapshotLength ;i++ )
{ myAnchors.snapshotItem(i).href = myAnchors.snapshotItem(i).href.replace(/sourceforge.net.ezproxy.uow.edu.au\//,'transact.dl.sourceforge.net.ezproxy.uow.edu.au/');
myAnchors.snapshotItem(i).href = myAnchors.snapshotItem(i).href.replace(/projects\/(.[^/]*)\/files/ig,'project/$1').replace(/\/download$/,'');
}
}else{ // error? send email to kampar@gmail.com about this :D
GM_log("ERROR: send email to kampar@gmail.com about this :D"); }
0 comments:
Post a Comment